「すべての机と家庭にコンピュータを」が体現された今
「まずはマイクロソフトの今を知ってもらうことから始めたい」
こう語り、井上氏のセッションは始まった。1975年に創業したマイクロソフト。当時のビジョンは「すべての机に家庭にコンピュータを」。この言葉以上に、現在の環境は机や家庭にコンピュータはもちろん、ポケットにはスマートフォン、鞄にはタブレットが入っている人も珍しくない。
インターネットに接続するデバイスの数も急増している。2008年には世界総人口の70億をデバイスの数が上回った。さらにIoT(Internet of Things)も増えている。そのためデータ量も膨大化、しかもそれらのデータは「すべてクラウド上で処理されるようになっている」と井上氏は言う。
そのような時代の変化と共に、マイクロソフトもここ数年大きく変化しているという。かつては映画スターウォーズの「Death Star(闇夜の帝国:中が見えない、何をやっているかわからない)」というイメージだったが、「最近は中が丸見えになってきた」と井上氏は言う。今のマイクロソフトはオープンなところが増えているというのだ。
この変化は製品を見れば一目瞭然だ。現在のVisual Studioの最新バージョンはVisual Studio2013 Update2、また.NETは「.NET4.5.2」である(本記事公開時点ではVisual Studio 2013 Update 3がリリースされている)。.NETは登場した2002年当時からデバイスとサービスを視野に入れていたという。
.NETはOSの上に共通言語ランタイム(CLR)、その上に各種のライブラリ、共通言語基盤(CLI)が乗るというフレームワークを構成にすることで、.NET対応の開発言語が利用可能になっている。
「今や.NETはいろんなところで使われており、さまざまなアプリケーションで動いている。とはいえこれからはマルチデバイスやクラウド、迅速な開発という要素は欠かせなくなっている。そのために.NETも変わっている。どう変わっていくのか、クラウド最適化にフォーカスを当てて紹介していきたい」(井上氏)
ASP.NET vNextでよりプラガブルに
クラウド最適化のきっかけは、米マイクロソフトのプリンシパルプログラム・マネジャー スコット・ハンセルマン氏が2012年2月、ブログに「ASP.NETはもっともっとオープンソースになる。さらに私たちはASP.NETそのもよりプラガブルにして、もっと楽しいものにするよ」と記述したこと。この提言の下に始まったのが、One ASP.NET構想である。One ASP.NET構想では、開発するアプリケーションによって、必要なライブラリを自由に選択して組み合わせて作ることができる。
「しかし、プラガブルになったとはいえ、IISやOne ASP.NETの様々なフレームワークがなければアプリケーションは動かないというのが実情だった。これをさらにプラガブルにするためのキーワードがOWIN、Katana ProjectとHeliosである」(井上氏)。
OWIN(Open Web Interface for .NET)とは、.NETにおけるWebサーバとWebアプリケーションを疎結合にするための抽象化インターフェース定義である。Katana Projectはサーバの部分をOWINに対応するためのオープンソースプロジェクトである。これにより、今まで通りのIISを使った構成はもちろん、IIS以外のカスタムホストでもアプリケーションを動かせるようになる。
とはいえIIS上で稼働させるニーズはまだまだ多い。しかしSystem.Webはコンピュータリソースを無駄に食うという問題点があった。それを解消するのが、Heliosである。HeliosはSystem.Web非依存で、直接IIS上で動作する軽量OWINサーバである。
そして、「Katana ProjectやHeliosの流れを受けて、さらに改良が進められている新バージョンがASP.NET vNextだ」と井上氏は説明する。
ASP.NET vNextはGitHub上でオープンソースとして開発が進められている。最大の特長は、細分化されたモジュラー設計を採用していること。例えばASP.NETのアプリケーションをIISとAzureに配置する場合、これまでのようにコンパイルする必要はない。ソースコードをそのまま配置すれば、実行時にRoslynと呼ばれるコンパイラによって実行される仕組みになっているからだ。「大きなところではMono Projectを使うことで、Windowsはもちろん、MacやLinuxでも実行が可能。そのほかにも完全なSide by Side実行(例えばWindows上で動いていたアプリケーションをそのままLinuxのMono上でも動くような状況)を目指している」というのだ。
これを可能にするのがランタイム構成である。ASP.NET vNextでは、vNextアプリケーションのビルド・実行環境でありSDKであるKRuntime(KRE)を作成。KREはレイヤー0~4と5層に分かれ、KHost(レイヤー0)では先述したようにIISはもちろん、セルフホストで動かすKLR.exeを用意している。またKRuntime(レイヤー1~2)では、.NET用のCore CLRに加え、Mono環境でも使えるような構成となっている。そしてレイヤー3ではさまざまなアプリケーションを動かすためのApplication Host層とRoslyn Loaderを用意し、アプリケーションごとに必要なライブラリをロードしていく形になっているというわけだ。
互換性も心配なし、旧バージョンもきちんとサポート
このKRE上で、アプリケーションを動かすための仕組みがK command(ランタイムエントリポイント)である。「例えば皆さんがアプリケーションを実行するのに必要なコマンドを“k run”というように独自に登録できる」ようになる。またKREのバージョン管理ができるよう、KVM(K Version Manager)を用意。つまり「アプリケーションで使われるランタイムのバージョン管理ができる」というわけだ。K Package Manager(KPM)はアプリケーションのパッケージ管理。アプリケーションで使うさまざまなライブラリを管理し、アプリケーション上にロードする。
「もう一つ大きく変わるところは、プロジェクト設定のファイルがproject.jsonというファイルで記述される形になること」と井上氏は続ける。今まで設定ファイルというとXMLが多かったが、「今のトレンドを組んでjson形式を採用した」のだそう。project.jsonファイルには、ランタイムバージョンや依存関係などの実行に必要な情報を記述する。ただし、Visual Studio設定などの開発ツールの関連情報は含まない。
ここまで解説し、実際に、どのように使うのか、井上氏はGitHub上にあるASP.NETのソースコードを使って、デモを実施した。
このようにASP.NET vNextは構造がかなり変わる。そこで気になるのが、互換性だ。「Web Forms、MVC 5、Web API 2、Web Pages 3、SignalR2、EF 6は.NET vNextでフルサポートされる。ASP.NET vNextではMVCやWeb API、Web Pagesは統合され、SignalRも正式にサポートされるようになる。ただ新しいランタイムのでも旧バージョンもちゃんと動くようサポートしていく」と井上氏は言い切る。また従来の.NET Frameworkフルセット「Desktop CLR(net451)に加え、クラウドに最適化されたサブセット版CoreCLR(k10)が2種類用意される。
最後に井上氏が取り上げたのが、Visual StudioでASP.NET vNextをどう使っていくかということ。同セッションではすでにリリースされている次期バージョンのVisual Studio 14 CTP版を使って、実際にクラウドに最適化されたアプリケーションを作成するデモを行った。「CTP2版を試す場合は、既存のVisual Studioと共存できないので、新しい環境を作って試すこと」という注意を促す井上氏。またAzureのユーザーに向けては、「Azure仮想マシンイメージが利用可能なため、ぜひ使ってほしい」と呼びかけた。
さらにMVCのアプリケーションをAzure等に配置するデモも実施。さまざまな環境で容易に動かすことができることを証明した。
「ASP.NET vNextをぜひ、使ってみてほしい。開発ツールやエディター、プラットフォームもいろいろ選ぶことができる。さらにメモリ、リソースをなるべく使わないような形でモジュール化されるので、アプリケーションのパフォーマンス向上にもつながるはず。また最新のVisual Studioは最強の開発ツールで皆様の開発生産性を上げるのでこちらも合わせて使ってほしい」(井上氏)。
最後に「オープンソースになった.NETを使って、これからクラウド最適化という世界でアプリケーションを作っていってほしい」と.NETの今後を示唆し、セッションを終えた。