特別企画
Windowsの.NETをモバイルの世界に広げるMicrosoft
(2014/5/16 06:00)
進化が続く.NET Frameworkとコンパイラ
Build 2014では、次世代の.NET Frameworkに関しての発表も行われた。
Build 2014に合わせて開発者向けのプレビューが開始されたのが、.NET Nativeだ。
.NET Frameworkでは、C#やVBやF#などのプログラミング言語をMSILという共通中間コードに変換してから、実行時に逐次JITコンパイラでネイティブ命令に変換して動作している。
これに対して.NET Nativeでは、MSILなどの共通中間コードへ変換せずに、直接ターゲットになるネイティブ命令に変換して動作させる。これにより、クライアント側に.NET Frameworkは必要なくなる。また、クライアント側でJITコンパイラが動作しないため、モバイルデバイスでプログラムの起動後にCPU負荷が高くなる、といったこともなくなるという。
現状では、プログラミング言語のサポートはC#のみとなっている。また、開発できるアプリもWindows Storeアプリ(Modernアプリ)のみだ。.NET Nativeのコンパイルは、Visual Studioなどのローカルで行うのではなく、クラウド(Compiler in the Cloud)側で行う。
こういった仕組みのため、Windows Storeアプリを開発してクラウドに置けば、クラウド側でARMやx64などのネイティブコードに変換してくれる(将来的にx86コードにも対応する予定)。
もう一つは、次世代JITコンパイラとなるRyuJIT(開発コード名)だ。
現在のJITコンパイラは、32ビットと64ビット版でコンパイラ特性が異なっている。
32ビットのJITコンパイラは、迅速にプロセスが起動するようにチューニングされていたのに対し、64ビットJITコンパイラは、パフォーマンスの高いコードが得られるようにチューニングされていた。
しかし、クライアントPCやタブレットでも64ビット環境がサポートされるようになったことで、64ビット環境で迅速に起動でき、高いパフォーマンスを持つJITコンパイラが必要になってきた。さらに、x86/x64だけでなく、ARMプロセッサでも将来的には32ビットから64ビットCPUへ移行していくことを考えれば、新しいJITコンパイラは必須といえる。
RyuJITでは、JITコンパイラがサポートしていなかったSIMD命令をサポート(AVX命令など)したほか、マルチコアへ対応している。
現状のプレビュー版ではx64アーキテクチャしかサポートしていないが、テスト段階でも30%以上のパフォーマンスアップを果たしている。
このほか、次世代のC#やVBのコンパイラとなる.NET Compiler Platform(開発コード名:Roslyn)も注目されている。
Roslynは、C#やVBコンパイラの内部をAPIで公開していくモノだ。これにより、ソースコードの分析、変換、実行ファイルの生成など、各段階をAPIでコントロールできる。
例えば、今までは、ユーザーがC#に新しい命令を追加したりすることはできなかった。しかし、Roslynでは、コンパイラの内部をAPIで公開しているため、ユーザーが新しい命令を追加して、実行ファイルを生成することができる。Microsoftでは、Roslynをバックエンドに使い、C#やVBなどMicrosoftがサポートしていないプログラミング言語をVisual Studioで利用できるようになるとしている。
今回のBuild2014における開発ツール側の発表などを見ていると、今までのように、絶対的なシェアを握っているというだけでは、多数の開発者を引き寄せることができなくなっているように感じた。今後は、OSSなどのコミュニティでどれだけ開発者の歓心を得られるかということが重要になっていくのだろう。
もう一つ、Windowsとは違う世界がマーケットに広がっているのを、Microsoftが認識していることも感じ取れる。こうした現実の世界に対応していくため、マルチデバイスに対応した環境を構築しようとしている。
ただBuild 2014では、マルチデバイス対応や新しい.NET Frameworkの流れなどは明らかにされたものの、これらのソフトウェア群はまだ開発途中で、実際に完成するには、もう少し時間がかかる。
このような状況から、本格的な次世代OSといわれているThreshold(スレッシュホールド、開発コード名)がリリースされるのは、2016年ごろになるのではないか、と筆者は予想している。