「すべての机と家庭にコンピュータを」が体現された今
「まずはマイクロソフトの今を知ってもらうことから始めたい」
こう語り、井上氏のセッションは始まった。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を用意し、アプリケーションごとに必要なライブラリをロードしていく形になっているというわけだ。