読者の皆さんへ: 重要なものを見逃すことなく、ノイズを軽減する機能を開発しました。興味のあるトピックを選択して、EメールとWeb通知を受け取りましょう。
主要なブラウザにおいてデフォルトでWebAssemblyがリリースされ、.NETコミュニティは引き続き.NET開発者に対してブラウザで実行可能なWebAssemblyにコンパイルする機能を提供する。
WebAssemblyはJavaScript以外の言語を使ってネイティブに近いパフォーマンスでアプリを実行するためのバイナリWebフォーマットである。現在、C, C++, Rust がLLVMベースのツールチェーンを使用してwasmにコンパイルできる。 これらの言語はネイティブコードにコンパイルして、コードを追加することなく、実行できる。.NETは通常、コードを実行するのにプラットフォームランタイムを必要とするため、ブラウザで実行することは論理的には可能だが、余計な作業が必要になる。
もっともエキサイティングなのは、Steve Sanderson氏によるBlazorと呼ばれるプロジェクトである。これはまだ進行中の実験であり、製品レベルには程遠い状態である。Blazorは、wasmにコンパイルされたMonoランタイム上で解釈された.NETコードを実行する。現在、これは「Hello World」アプリのために望まれたペイロードより大きなものであるとSanderson氏はいう:
Monoランタイムに移行してから、新しいBlazorアプリは一時的に巨大(~4MB)になりました。これはWASM上のMonoがILストリッピングや縮小がなく、Webとは関係がない多くのデスクトップ関連機能を含む巨大なランタイムを同梱しているためです。Webに最適化された製品アプリケーションは、300KB程度のサイズにしたいと考えています。
このプロジェクトのハイブリッドコンパイルモデルは、2017年11月1日にMonoプロジェクトにマージされた。
もうひとつの.NETを使う方法は、既存のネイティブコードメソッドに似ており、Mono Cランタイムと開発者の.NETコードをwasmに静的コンパイルする。執筆時点では、この方法を使ったサンプルアプリはユーザーのコンピューターに10MBのコードをダウンロードする。参考までに、Twitter.comの完全なページ読み込みは7MB以上あり、最近のAmazon.comの表示は8.9MBであった。Miguel de Icaza氏によると、サイズは時間とともに改善されるという:
モバイルプロファイルをベースとしたカスタムプロファイルを使うことで、多くの不要な機能が削減され、サイズは大幅に減少するはずです。
プロジェクトはLLVMの実験的なWebAssemblyバックエンドを使って、LLVMリンカーとbinaryenツールを使って.wasmコードを生成しているが、ここ2か月更新されていない。
公式のCoreRTリポジトリではWebAssemblyのプロトタイプサポートも存在している。
Rate this Article
- Editor Review
- Chief Editor Action