マイクロソフト、Windows Phone 8のコンパイラをクラウドで提供する計画
Windows Phone 8では、コンパイラをクラウドで提供する計画がある。ZDNetのブログAll About Microsoftにポストされた記事「Microsoft details its strategy for compiling Windows Phone apps in the cloud」で、こう指摘しています。
この記事を足がかりにして、マイクロソフトが今月開催したイベント「Build 2012」のセッション「Deep Dive into the Kernel of .NET on Windows Phone 8」と、Channel9で公開したビデオ「Mani Ramaswamy and Peter Sollich: Inside Compiler in the Cloud and MDIL」の情報を基に、コンパイラをクラウドで提供する理由についてまとめました。
(11/13追記 すでにWindows StoreのWindows Phone 8でこの機能が提供されているとの情報をいただきました)
JITの便利さとコンパイルの起動の速さを両立
Windows Phoneに対応したアプリケーションでは、実行時にネイティブコードを生成するJITと、あらかじめコンパイルしておくNGEN(Native Image Generator)の2つの選択肢がありました。
しかしJITでは実行時にネイティブコードを生成するためアプリケーションの起動が遅く、NGENではライブラリなどがアップデートされると毎回リコンパイルしなければならずデプロイも面倒です。
そこで、マイクロソフトは新たにMDIL(Machine Dependent Intermediate Language)と呼ばれる中間コードを定義します。これは素早くネイティブコードへコンパイルできるコードであり、これによってプリコンパイルが持つ素早い起動と、JITの持つ容易なデプロイの利点を両方備えることができます。
マイクロソフトの計画は、C#からMDILへのコンパイルをクラウドで提供しようというもの。MDILの状態でアプリケーションストアに保存され、デバイスにダウンロードされた時点で素早くネイティブコードに変換し実行されることになります。
Windows 8のARM版とIntel版へもいずれは?
クラウドでコンパイラを提供するという計画はマイクロソフトが以前からほのめかしていたことで、ついに現実解として計画が明らかになりました。
これを発展させるとさまざまな可能性があることに思い当たります。例えばPhoneGapのようにHTML5のアプリケーションを中間コードにクラウドでコンパイルできないか、あるいは現在のところターゲットはWindows Phone 8ですが、これをデスクトップのWindowsに応用して、.NETで書いたアプリケーションがクラウド上のコンパイラによって、インテル版のWindows 8とARM版のWindows RTの両方のネイティブコードを生成できるようになるのではないか、などです。
当然ながら、マイクロソフト内部でもこうしたことが検討されていないはずはありません。今後このテクノロジーがどう発展するのか、非常に興味深いものが登場してきたといえます。
あわせて読みたい
マイクロソフトの次期SQL Server、インメモリDBとストアドプロシージャのネイティブコンパイラ搭載へ
≪前の記事
2012年10月の人気記事「EPUB3の国際標準化で日本が資金難」「Google App Engine、全データセンターを巻き込む連鎖的障害」「見えてきたECMAScript 6」ほか