クラウドと html5 で作成するスケー ラブルな web アプリ開発術 ~ windows...

43
mvcConf @:Japan ASP.NET MVC ブブブ ブブブブ ブブブブブ HTML5 ブブブブブブブブ ブブブブ Web ブブブブブブ Windows Azure + ASP.NET MVC ブ 株株株株株株株株株株株 株株株 ( 株株株 株株株 ) Microsoft MVP for Windows Azure

Upload: jorden-park

Post on 31-Dec-2015

51 views

Category:

Documents


0 download

DESCRIPTION

クラウドと HTML5 で作成するスケー ラブルな Web アプリ開発術 ~ Windows Azure + ASP.NET MVC 編~. 株式会社野村総合研究所 勇大地 ( いさみ だいち ) Microsoft MVP for Windows Azure. セッションの目的とゴール. 目的 ASP.NET MVC × jQuery の開発を学習する マルチデバイス向け Web アプリ 開発を学習 する Web アプリのクラウド移行を 学習 する ゴール ASP.NET MVC × jQuery の開発ができる - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

mvcConf @:Japan~ ASP.NET MVC ブート キャンプ

クラウドと HTML5 で作成するスケーラブルな Web アプリ開発術

~ Windows Azure + ASP.NET MVC 編~

株式会社野村総合研究所勇大地 ( いさみ だいち )

Microsoft MVP for Windows Azure

Page 2: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

セッションの目的とゴール 目的

ASP.NET MVC × jQuery の開発を学習する マルチデバイス向け Web アプリ開発を学習す

る Web アプリのクラウド移行を学習する

ゴール ASP.NET MVC × jQuery の開発ができる マルチデバイス向けの画面開発ができる クラウド上に Web アプリを配置できる

2

Page 3: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

今回作成したサンプル 機能 コメント付きで投票 投稿の割合をグラフ化

3

http://mvcconfjapan120611.cloudapp.net/

Page 4: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

アジェンダクラウド+ HTML5 が必要な理由は?

HTML5 画面開発のポイントは?

クラウドに移行するには?

まとめ

Page 5: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

HTML5 と クラウドの振り返り HTML5 の振り返り

クラウドの振り返り

クラウド上で動く WEB アプリ

Page 6: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

HTML4 の後継である次期標準仕様

新機能が追加 新規マークアップタグの登場 新 API (ビデオ・音楽の再生、オフライン実行等)

HTML5 の振り返り

・ 約 10 年ぶりの標準仕様改正・ HTML 4.01 に比べ、適用可能な領域が増した

Page 7: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

メリット 柔軟なスケールアウト/ス

ケールダウン 保守の手間、管理コストを削減

デメリット 環境カスタマイズが容易でな

い アーキテクチャが従来と異な

クラウドの振り返り 1/2

Page 8: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

Windows AzureMarketplace

Windows Azure Platform

Windows Azure

コンピュート•Web ロール•Worker ロール•VM ロール

ストレージ• Blob• Table• Queue• Drive

Azure AppFabric• Service Bus• Access Control• Caching

SQL Azure• RDB• Data Sync• Reporting

DataMarket

Applications

Microsoft Pinpoint

クラウドの振り返り 2/2

Page 9: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

クラウドと HTML5 の利用例

demo ...

9

Page 10: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

キャッシュ機能

分散 KVS

セッション

永続データ

クラウドプラットフォーム

クライアント

クラウド上で動く WEB アプリ 1/2

サーバ

Page 11: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

クライアント jQuery

サーバ ASP.NET MVC

永続データ、セッション Windows Azure ストレージ サービス Windows Azure AppFabric キャッシュ

クラウド上で動く WEB アプリ 2/2

11

Page 12: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

アジェンダクラウド+ HTML5 が必要な理由は?

HTML5 画面開発のポイントは?

クラウドに移行するには?

まとめ

Page 13: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

HTML5 画面開発のポイント HTML5 新機能の利

用 マルチデバイス対応 旧ブラウザとの共存

未だに消えない IE6 PC /スマフォへの対応

jQuery×

ASP.NET MVCで解決

Page 14: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

必修と化した jQuery !! jQuery Core      DOM 操作等のコア機

能 jQuery Mobile    スマフォ向け jQuery Template   テンプレートエンジン jQuery Validate   バリデーション jQuery UI       UI コンポーネント jQuery Globalization 国際化

ASP.NET MVC との相性が良い!

Page 15: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

15

// セレクタ var elem1 = $(‘#my_id’);

// 属性の操作 var link = $(‘#my_element’).attr(‘href’);

//CSS の取得 var color = $(‘#my_element’).css(‘background’);

// イベント追加$(‘#mybutton’).click( function(){ alert(‘ ボタン押下’ );});

jQuery Core jQuery の主要機能(一部)

Page 16: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

jQuery Mobile 1/3 現在のバージョン

は 1.0α4.1 モバイル向けプラ

グイン Windows Phone 7

にも対応 既存プラグインと

も連携可

Page 17: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

<!-- ページ定義 --><div data-role="page"> <div data-role="header"> Home </div> <div data-role="content"> ああああああ </div> <div data-role="footer"> <h1> &copy; 誰か </h1> </div></div>

jQuery Mobile 2/3 画面定義

ページ

Page 18: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

18

jQuery Mobile 3/3

<!-- ページ定義 --><a href="#" data-icon="home“ data-iconpos="notext“ data-direction="reverse">

<!-- ページ定義 --><ul data-role="listview" data-inset="true"></ul>

画面要素定義

Home アイコン

リストビュー

Page 19: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

19

var dataObject = { name: “ 勇大地 ", comments: [“Azure は良いねぇ…” ,“ チャックさんイケメーン! "] };$("#sometmpl").tmpl( dataObject ) .appendTo("ul");

jQuery Template JavaScript のテンプレートエンジン

<script id="sometmpl" type"text/x-jquery-tmpl"><li>${$i}) ${name}( こめんと : {{each(i,comment)

comments}}${comment}{{/each}})</li></script><ul></ul>

Page 20: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

20

$(function () { $("#my_form").validate({ rules: { my_textbox: { required: true }}, messages: { my_textbox: { required: "1 文字くらい入力してほしいお。。。 " }} });});

jQuery Validate バリデーションのルールを設定

Page 21: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

サーバサイドは ASP.NET MVC 意図通りの HTML を記述可能 URL ルーティング モデルバインダ グローバルフィルタ単体テストの容易化

jQuery との相性が良い!!

Page 22: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

22

[HttpGet]public ActionResult JsonMethod(Person person){ // リクエストデータの表示 Trace.TraceInformation(person.ToString());

//JSON 形式のデータを返す return Json(new Person() { Name = " 勇大地 ", Comment = "緊張して胃が痛い " } , JsonRequestBehavior.AllowGet);}

JSonValueProviderFactory JSON データの送受信( MVC3 の新機

能)

Page 23: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

HTML5 with jQuery Mobile

demo ...

23

Page 24: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

アジェンダクラウド+ HTML5 が必要な理由は?

HTML5 画面開発のポイントは?

クラウドに移行するには?

まとめ

Page 25: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

Windows Azure 移行のポイント アセンブリ配置

デバッグ手法の差異

データの永続化

セッションの取り扱い Appendix で

Page 26: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

アセンブリ配置1. 新規「 ASP.NET MVC3 Web アプリケーション」を追

加2. 「ソリューション内の Web ロールプロジェクト」を追

加3. ASP.NET MVC 側のプロジェクトを右クリックし、「配置

可能な依存関係の追加」を選択1 . 2 . 3 .

現在は必要

Page 27: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

デバッグ手法の差異 Web デプロイが便

利!! 数秒で再デプロイ可能 Azure SDK 1.4.1 から 要リモートデスクトップ

Page 28: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

データの永続化データの例 量とサイズ 想定される形式顧客マスタ在庫マスタ

多い ・関係型・頻繁に参照される

入出庫データ受注データ

多い ・関係型・レコードを蓄積

画像データ動画データ

サイズが巨大

・ファイル等

ログテキスト

サイズが小さい

・レコードを蓄積

伝搬メッセージ

サイズが小さい

・キュー等

・ Blob Storage・ Drive

・ Table Storage

・ Queue Storage

クラウドのストレージ活用がポイント

安価なスケーラブル Web アプリの要点

Page 29: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

サンプルのアーキテクチャ

ロー

ドバ

ラン

Azure AppFabric キャッシュ

テーブル

セッション

永続データ

スケーラブル&マルチデバイス

IE9

スマートフォン※認証には Access Control を利用

Page 30: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

ASP.NET MVC +Windows Azure

demo ...

30

Page 31: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

まとめ マルチデバイス対応向け開発方法を習得

HTML5 の仕様をキャッチアップ jQuery の 各種プラグインを学習

クラウドを利用したサービス方法を習得 アセンブリ配置に注意 Web デプロイを活用 永続化データの取り扱いに留意

Page 32: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

appendix.

32

Page 33: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

33

//SVG 対応の可否alert("svg is " + Modernizr.svg);

//GPS 位置取得の可否alert("geolocation is " + Modernizr.geolocation);

// アプリケーションキャッシュの可否alert("applicationcache is " + Modernizr.applicationcache);

Modernizr の利用 1/2 ブラウザの HTML5 対応度合いを確認

F12 ツール

Page 34: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

34

//<video /> タグへの対応for (var key in Modernizr.video) { alert(key + " : " + Modernizr.video[key]); }

//<audio /> タグへの対応for (var key in Modernizr.audio) { alert(key + “ : ” + Modernizr.audio[key]); }

// 新しい <input /> タグのタイプ( url 、 date 等)for (var key in Modernizr.inputtypes) { alert(key + " : " + Modernizr.inputtypes[key]); }

Modernizr の利用 2/2 ブラウザの HTML5 対応度合いを確認

Page 35: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

HTML5 の振り返り + α

2010 2011

1Q 2Q 3Q 4Q 1Q 2Q 3Q 4Q

★ 9/17β版リリース★ 11/17 Platform Previwe 7 リリース

★7/7 4βeta 1 リリース ★11/10βeta 7 リリース

★6/8 Safari 5 リリース

★ 3/15 IE9 製品版リリース( HTML5 対応)

★ 3/22 FF4 製品版リリース( HTML5 対応)

★ 3/9 Safari 5.0.4 リリース( HTML5 対応強化)

★ 3/22 Chrome 11 リリース( HTML5 対応強化)

★ 4/13 IE10 Preview ( HTML5 対応強化)

★ 3/9 Chrome 10 リリース( HTML5 対応強化)★ 2/11 Chrome 9 リリース( HTML5 対応強化)

★ 2/11 Chrome 9 リリース( HTML5 対応強化)

主要ブラウザの HTML5 対応により、 HTML5 のサービス展開が可能に 現在

Page 36: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

草案

最終草案

勧告候補

勧告案

勧告

2012 年2月予定

2014 年予定

2011 年5月現在

2012 年には、 HTML4 での普及期だった勧告候補になる予定

現状は最終草案の段階

現在

そろそろ HTML5 を学ぶ頃合

HTML5 の振り返り + α

Page 37: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

Azure を無料で使うには?! 1/2 MSDN に無償で利用する方法が!

http://msdn.microsoft.com/ja-jp/windowsazure/

gg674969

・クレジットカード登録不要・ 30日間使いたい放題

・次ページ

Page 38: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

Azure を無料で使うには?! 2/2特別導入プランを利用

特別導入プランの無料枠

・コンピューティング

  24 時間 * 30日 < 750 時間

・データ転送量

  0.5 GB * 30 日 < 20 GB

・ SQL Azure

 タダ!

・特別導入プラン・ XS インスタンス × 1 ⇒月額無料

Page 39: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

学習のステップ最初はローカルで

次は Azure Pass で

次は特別導入プランで

次は長期運用の他プランで

要クレジットカード

クレジットカード不要

Page 40: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

環境構築の方法 Web Platform Installer を利用!

http://msdn.microsoft.com/ja-jp/windowsazure/

cc974146

Visual Studio や環境設定も一括実施

Page 41: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

セッションデータの共有方法に工夫が必要ロ

ード

バラ

ンサ

ユーザ インスタンス2

インスタンス1

インスタンス3

インスタンス1のセッションデータ

インスタンス2のセッションデータ

インスタンス3のセッションデータ

セッションの取り扱い 1/2

Page 42: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

セッションの取り扱い 2/2MSDN Code Gallery のセッションプロバイダ

ASP.NET 標準のセッションプロバイダ

自作セッションプロバイダ

Azure AppFabricキャッシュ

概要 Code Gallery のセッションプロバイダを利用

ASP.NET 標準のセッションプロバイダを利用

Access mdb 等のプロバイダを書き換える

Azure AppFabric キャッシュを利用

利用ストレージ

Table Storage SQL Azure SQL Azure Azure AppFabric キャッシュ

難点 ・タイムアウトしたセッションを自分で削除する必要がある・ SQL Azure に格納するよりも遅い

・タイムアウトしたセッションを自分で削除・ Azure 向けのプロバイダではないため、コードがいびつになる

・タイムアウトしたセッションを自分で削除する必要がある

・コストが高め

小  ←  コスト&性能  →  大

セッション共有方法メリデメ

タイムアウトセッションデータを自分で削除

Page 43: クラウドと  HTML5  で作成するスケー ラブルな  Web  アプリ開発術 ~  Windows Azure + ASP.NET MVC  編~

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the

part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.