冒頭、井上氏はマイクロソフトが考える近未来の世界を描いたコンセプトムービー『Productivity Future Vision』を紹介。「すでに携帯デバイスに代わるようなカード型のデバイスも登場し、インフラや技術要素も揃ってきている。あとはどう整え、インフラやデバイスをつくり上げるかという段階になってきた」と近未来への可能性をアピールした。
そして近未来へ向けて、Webアプリケーションの開発者がおさえるべきWeb技術として『HTML5/CSS3』『JavaScript』『WebAPIの利用』『ネイティブアプリ開発への応用』をあげ、「HTML5はまだ早いとも言われるが、今からもう取り組むべきだろう。さらに、これからはWebだけはなく、クライアント側のネイティブアプリへの応用についても認識してほしい」と語った。
レゴのようにフレームワークを組み合わせられる新しい『ASP.NET』
こうした変化が起こりつつある中、マイクロソフトは、そしてASP.NETはどのように変わったのか。井上氏は「昔のマイクロソフトは『デススター』だったかもしれない。今はかなりオープンになり、ASP.NETも変わりつつある」と語る。One ASP.NETと呼ばれるビジョンのもとで、これまでの『Web Forms』というフレームワークに加えて、現在ではさまざまな軽く快適なフレームワークが用意されている。
例えば、Webアプリケーションのサイトを作るフレームワークとして、ライトなページの記述が可能な『Web Pages』、MVCとWeb APIを組み合わせたモダンなWebアプリケーションのひな形となる『Single Pages Application』などがある。そして『Web API』『SignalR』といったWebアプリケーションのサービスをつくるようなフレームワークも用意されている。One ASP.NETでは、こうしたフレームワークを“レゴ”のように自由に組み合わせて柔軟に開発できるというわけだ。
その組み合わせで重要な役割を持つのが『NuGet(ぬげっと/にゅーげっと)』である。『NuGet』は、Webを通じてオープンソースライブラリなどの最新版をプロジェクトに追加できるパッケージ管理の仕組みで、Visual StudioやWebMatrixなど開発ツールの中でも使用可能だ。ここで井上氏はデモンストレーションを行い、その簡便さ柔軟性を訴求した。MVCでプロジェクトを作ると、jQuery、knockout,jsなどがデフォルトで組み込まれ、NuGetを通じてオープンソースを含めたライブラリが追加できる。プロジェクト単位でこれらのバージョン管理が柔軟に行え、VS Pro以上搭載のパッケージビジュアライザーを使うと依存関係も視覚的に理解しやすく大変便利だという。
なお、ASP.NET MVCとWeb API、Web Pagesはオープンソースとしてコードが公開されているが、最終的な製品版はマイクロソフトのレビューがなされるためサポートも得られる。それも開発者にとってはうれしい事項といえるだろう。
『jQuery Mobile』などでマルチデバイスに対応
Webアプリケーションを開発する上で、もはやマルチデバイスは意識せずにはいられない存在だ。それも端末が異なるクロスデバイス、OSが異なるクロスプラットフォーム、クロスブラウザなど、さまざまな動作環境を意識する必要がある。
ASP.NETは、そうしたマルチデバイスに対応すべく、CSS3による『レスポンシブWebデザイン』への対応や、jQuery Mobileをベースとしたタッチ操作を重視したテンプレートも用意される。また、各種デバイスの種類を自動的に判別し自動でビューを切り替える『Display Modes』という仕組みも提供する。
井上氏はここでjQuery Mobileのデモを紹介。MVCでプロジェクトを作ると、jQuery Mobileのライブラリなどもすでに追加されている様子が見える。色変えなどはテーマローラーをチューニングしておいたものを使用。NuGetのパッケージとしてローカルにダウンロードしておいたものだという。さらに新しいスクリプトバンドルという機能も披露された。
この機能を用いると、例えば複数のライブラリが指定された場合、JavaScriptファイルやCSSファイルをサーバーサイドで1つのファイルに自動的に結合して、クライアントサイドに返すことができる。これによってスマートフォンのペイロードを削減し、リクエストの数をおさえた形でさまざまなデバイスに対応できるという。また、一部が更新されると同時にキャッシュを破棄して取り直すこともできるキャッシュバスティング機能にも対応している。
Web APIが実現する『モダンWebアプリ エクスペリエンス』とは?
シングルページアプリケーション
マルチデバイス対応含め、さらにアプリケーションのアーキテクチャそのものも変わってきている。これまでのWebアプリケーションは静的なHTMLのページをクライアント側に返すだけのものが多かった。それが近年ではサーバー側でWeb APIなどでインターフェースを定義して、HTMLページとは別にデータをクライアント側に返すという手法も増えてきた。例えば、Web APIを通して非同期で取得したデータをクライアント側でHTMLページに動的に埋め込むことで、単一ページ内でさまざまな機能を提供する『シングルページアプリケーション』というアーキテクチャスタイルを意識したWebアプリケーションも増えてきているという。
クライアント側での非同期処理は、かつてはAjaxなどといわれ、GmailやGoogle mapsなど以前からあり、珍しいものではない。しかし、近年になって急速に浸透してきた。その牽引理由の一つがマルチデバイス対応だろう。Web APIでデータと見た目、サーバーとクライアントをそれぞれ切り分けることで、新しいデバイスが登場しても、Viewの部分だけ変えてデータを提供している部分を変えずに、迅速に対応ができる。ASP.NETでは、こうした『モダンWebアプリケーション』に対応する1つのフレームワークとして、Web APIを提供している。
井上氏はMVC 4でWeb APIプロジェクトを作成し、モデルの追加、コントローラーのアクションメソッドの実装を行って、実際にWeb APIの実装のデモを行った。Web APIにはデモで紹介した内容に加えて、データ量が膨大にある場合にURLで指定したフィルター条件に沿った形でデータを取得する方法などが用意されているという。これらの機能は井上氏のブログで紹介されている。
SignalR
続いて紹介された『SignalR』は、リアルタイムの非同期双方向通信がサーバー、クライアント間でできるライブラリである。ASP.NETの公式ライブラリとしてNuGetパッケージとして提供されている。
『SignalR』を利用するメリットは、簡単にいえばリアルタイムかつ双方向の通信を簡単に実現できる点にある。リモートプロシージャコールや、サーバーからクライアントへのプッシュ通信が可能で、自動的にトランスポートを調整する機能も持ち合わせている。最後にデモとして、signalRで作成されたサイト『“へー”ボタン』が紹介された。会場の聴講者がボタンを押すとリアルタイムで反応が起きるのを確認した。
こうしたリアルタイム性や快適な双方向通信を可能にする『SignalR』では、例えばチャットやシューティングゲーム、また、株価情報のプッシュ型配信のような情報サービスなども比較的容易に開発でき、今後さまざまな用途が期待されている。
センサークラウド with ASP.NET
そして、最後に『センサークラウド with ASP.NET』が紹介された。さまざまなWebアプリケーションやASP.NETなどの変化を見てきたが、やはりクラウドとデバイスを上手に連携させることが今後の大きなカギと思われる。GPS、ジャイロ、温度、湿度などのデバイスのデータをうまく生かすことができれば、冒頭に見たムービーのような世界もそう遠くはないだろう。
井上氏は「今後ますます注目が高まるだろう。ぜひ、クラウドとASP.NETの連携でさまざまなアイディアを生かしてほしい」と語りつつ、デバイスとクラウドを連携させ、SignalRを使ってKinectのデータを各クライアントのWebブラウザ上にリアルタイムで配信するデモを紹介した。
最後に井上氏は「ASP.NETは、さまざまなライブラリを組み合わせて、多種多様なWebアプリケーションに対応できるようになってきている。そして、まもなくリリースされるアップデート "ASP.NET and Web Tools 2012.2"(注:2/18にリリース済。詳細はこちらを参照)にも期待してほしい」と語った。
今回のデブサミのテーマである『Action!』に触れ、「エンジニアはコードを書くことで世界を変えることができる。ぜひ、今日からもコーディングを楽しみながら取り組んでほしい。そして一緒に未来をつくることが出来れば。Enjoy coding,Be happy with ITマイクロソフトは応援しています」とメッセージを送り、セッションを結んだ。
日本マイクロソフト株式会社
〒108-0075 東京都港区港南 2-16-3 品川グランドセントラルタワー
TEL: 03-4332-5300 (大代表)