カスタム検索
表示順:
Relevance
Relevance
Date
ウェブ
 
 
 

マイクロソフトの実験的プロダクト「Blazor」、WebAssemblyで.NETランタイムを実装。WebブラウザでC#など.NETアセンブリをそのまま実行可能に

2018年6月18日


マイクロソフトが実験的プロダクトとしてオープンソースで開発している「Blazor」は、WebAssemblyで.NETランタイムを実装することで、Webブラウザの上でC#など.NETテクノロジーによるWebアプリケーションを実現する、Webアプリケーションフレームワークです。

Blazor fig1

WebAssemblyによってJavaScript以外の言語によるWeb開発が始まる

少し前まで、Webアプリケーションを開発できる言語はJavaScriptだけでした。しかし2010年頃にはJavaScriptの生成をターゲットとするCoffeeScriptが、2012年頃にはTypeScriptが登場し、いわゆるAltScriptによって少しだけ言語の幅が広がります。

2015年にはWebブラウザで実行可能なバイナリフォーマット「WebAssembly」の標準化がW3Cで開始され、JavaScript以外の言語によるWebアプリケーション開発への可能性が大きく開かれることになります。

そして2017年11月にWebAssemblyの実行環境がChrome、Firefox、Edge、Safariの主要ブラウザで揃いました。

WebAssemblyへの対応は、すでにC言語、Rust言語、Go言語などが進めています。また、MozillaはWebAssemblyをターゲットとするオンラインIDE「WebAssembly Studio」を開発中です。

いずれ、これらの言語から生成されたWebAssemblyによるWebアプリケーションが登場してくることでしょう。

Blazorは、WebAssemblyでランタイムを作ってしまう新しいアプローチ

一方、マイクロソフトが実験的プロダクトとして開発している「Blazor」は、これらとは異なるアプローチによって、JavaScript以外のプログラミング言語でWebアプリケーションの開発を実現しようとしています。

それはBlazorとその対応言語からWebAssemblyを生成するのではなく、.NETのランタイムをWebAssemblyで実装することで、Webブラウザの上でC#や.NETをそのまま実行できるようにしてしまおう、というものです。

これによりC#でWebアプリケーションが開発できるだけでなく、開発環境にVisual Studioがそのまま使えるという利点があります。

今年、2018年2月にBlazorはASP.NETの開発チームによってプロジェクトの存在が公開されました。最新バージョンはまだ0.4.0で本番環境に使える品質には達していませんが、WebブラウザとWebAssemblyの新しい可能性を開くプロジェクトとして注目すべき存在だといえるでしょう。

Blazorの詳細は、5月7日から10日かけて米ミネソタ州で行われたイベント「NDC Conference」のセッションで説明され、先月末にその動画が公開されています

動画の内容を基に、Blazorのポイントについて見ていくことにしましょう。

Blazorでは、C#とHTMLが混在

Blazorとは、ブラウザ(Browser)と、ASP.NETでHTMLにC#などを埋め込むことを可能にするレンダリングエンジン「Razor」に由来した名称です。Bの次がRでなくLなのはその方が発音しやすいためだそうです。

Blazor fig2

すでにVisual Studio用のBlazor拡張が提供されているので、それを組み込むことでBlazorによるアプリケーション開発が始められます。

Blazorアプリケーションの作成時には、サーバとやりとりしない単純なWebアプリケーションの「Blazor」アプリと、サーバサイドと連係する「Blazor ASP.NET Core」アプリケーションの2種類が選べます。

Blazor fig3

ボタンをクリックすると、カウンターが増えていく単純なBlazorアプリケーションの例。

Blazor fig4

そのソースコード。C#とHTMLが混在しています。1行目の「@page ”/counter”」がディレクティブとしてこのアプリケーションのルーティングを指定しています。

Blazor fig5

アプリケーションは簡単にコンポーネントとして扱えるようになっています。例えばこのHello World!のページがあるとします。

Blazor fig6

このページのソースコードに、さきほどのCounterアプリを示す1行を追加。

Blazor fig7

するとすぐにCounterのアプリが挿入されます。

Blazor fig8

.NETランタイムとしてWebAssembly化されたmono.wasmをロード

Blazorの実行時には、WebAssemblyにコンパイルされた.NETランタイム「mono.wasm」がWebブラウザにロードされています。

Blazor fig9

これは.NET標準に対応した.NETランタイムであるため、この上でC#などをコンパイルした.NETアセンブリがそのまま実行可能です。実際、Blazorのアプリケーション実行時には、既存の.NETライブラリがそのままWebブラウザにロードされ実行されています。

Blazor fig10

今後Blazorはさらにデバッグ機能、サーバサイドレンダリング、コンポーネントパッケージなどさまざまな強化が行われていく予定です。

Blazor fig11

下記が公開されているBlazorのセッション動画です。詳細はぜひこの動画をご覧ください。


関連記事

follow us in feedly


≪前の記事
Google CloudのHTTPSロードバランサーがQUICプロトコルに対応


カテゴリ



Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

人気記事ランキング

  1. 「GitHubの次期CEO、Nat Friedmanだけど質問ある?」 海外の掲示板で実施。Atomはどうなる? GitHubアカウントはMSアカウントになったりしない? などに回答
  2. [速報]次期Docker for Win/Mac、GUIの数クリックで簡単にアプリケーションのコンテナ化と実行が可能に。DockerCon 2018
  3. Visual StudioがKubernetes対応。DockerfileとHelmチャートを自動生成し、Kubernetes環境へデプロイ可能に
  4. 「GitHubの独立性を守って、すべての開発者にいままで通り使ってもらう」、GitHubの国内イベントに日本マイクロソフトのCTOが登場。GitHubの独立性維持を約束
  5. [速報]Docker EEでAWS、Azure、GCEのKubernetesを一元管理。クラウド間でアプリケーションの移動や複製、ロードバランスなど実現。DockerCon 2018
  6. JavaでJavaScriptを実行する「Nashorn」が非推奨に、ECMAScriptの速い進化に追いつけないと。代替案はGraalVM
  7. iOS/Androidネイティブアプリ用デバッガ「Sonar」、Facebookがオープンソースで公開。実機およびエミュレータを用いたデバッグに対応
  8. インメモリDBの「SAP HANA」、インテルの不揮発性メモリに正式対応。サーバダウン時もデータを失わず高速起動
  9. Google App Engineがスタンダード環境でNode.jsをサポート。パッチ適用は自動、カスタムドメインでのHTTPSも利用可能
  10. 来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり)


新着記事 10本


PR - Books


fig

fig

fig