C#でウェブアプリケーションを構築するという考え方は、Blazor が初めて導入したものではありません。マイクロソフトは、Silverlight や MVC のようなフレームワークで、同様のアイデアに昔から挑戦していました。しかしながら、Blazor WebAssembly は、WebAssembly をランタイム環境として活用し、プラグインや依存関係なしにブラウザで直接C#を実行できるようにするという新しいアプローチをとっています。
この記事では、Blazor の方向性、Blazor がどのようにウェブアプリケーションの開発体験を変えていくのか、Blazor はウェブ開発の未来になりうるのか、について考えていきたいと思います。
- Blazor 選択時に注意しておくべき点
- Blazor がユニークな理由・Blazor はウェブ開発の未来になりうるか?
- Blazor の未来を想像する
- インフラジスティックスはどのように Blazor 開発者をサポートするか
- 本記事のまとめ
Blazor 選択時に注意しておくべき点
Blazor はC#開発者にとって素晴らしいものに見えますが、当然注意しておくべき点もあります。Blazor の未来について考える前に、Blazor を選択する際に注意しておくべき点を確認しておきましょう。
Blazor WebAssembly の場合
- ブラウザにダウンロードされるファイルサイズが大きく、初期の読み込み時間が遅い。
- .NET のデバッグ機能の全てはサポートされず、デバッグ体験が限定的である。
- 既定ではインタープリターで実行され、演算処理性能が低い。
- AOT コンパイルオプションを有効にすることで演算処理性能を改善できるが、発行時間が延び、ファイルサイズが大きく膨らむ。
Blazor Server の場合
- ブラウザに読み込むファイルが少なく、瞬時に起動するが、サーバーとの常時接続を必要とし、ネットワーク接続が不安定な環境では安定動作しない。
- オフラインで動作できない。
- サーバーで CPU ネイティブの速度で演算処理されるが、WebSocket 通信のレイテンシーが発生する。
- .NET プログラムを実行可能なサーバー環境を必要とする。
- サーバー資源を消費するため、同時接続クライアント数を考慮する必要がある。
Auto レンダーモードの場合
- Blazor WebAssembly と Blazor Server の注意点を相互に補うことが可能になるが、実装が複雑になる傾向がある。
- Auto レンダーモードは .NET 8 以降でのみ利用できる。
Blazor がユニークな理由・Blazor はウェブ開発の未来になりうるか?
Blazor が登場する前は、シングルページアプリケーションやクライアントサイドの機能は、通常、JavaScriptを使用して実装されていました。これは、プレーンな JavaScript コーディングによって、または Angular や React のような JavaScript フレームワークを利用して行われていました。しかし、その後 WebAssembly が登場し、Blazor は、Blazor 開発者がC#と.NETのスキルを使ってインタラクティブなUIを構築し、複雑なJavaScriptへの依存性を排除するという、Web開発における新しい概念を導入しました。
Blazor は JS interop を使用することで、JavaScript ができることは何でもできます。これを使用すると、チームは非常に複雑なアプリケーションを構築し、あらゆるのデバイスで良好なパフォーマンス性と素晴らしいUXを実現することができます。サーバーサイドとクライアントサイドの両方のUIロジックが存在します。
Blazor はC#開発者の未来になりうるでしょうか、はい私たちはそう考えています。では Blazor は Angular や React に完全にとって変わるのでしょうか。それはそうではありません。
Blazor の未来を想像する
以下に、Blazor がウェブ開発の未来となりうる根拠を示します。
Blazor は SPA アプリケーション開発の強い味方となる
必要なSPA機能を全てサポート
コンポーネントベースのアーキテクチャ、コンポーネント、ルーティング、イベントハンドリング、依存性注入など、現代の開発体験に必要な全てが含まれます。
開発時間の短縮
インテリセンス機能により、コードの提案、利用可能なコンポーネント、自動補完、その他コード関連のヒントを Blazor 開発者に提供し、コーディングプロセスを簡素化します。
全てのブラウザでサポート
Chrome、Edge、Firefox、Opera、Safari といった近代のブラウザすべてで、OS やデバイスを問わずに動作します。
他のフレームワークとの違い
サーバー/クライアントサイドでのコード共有
この統一されたプログラミングモデルにより、開発者はC#と.NETの既存知識をアプリケーションスタック全体にわたって活用することができます。これはコードの再利用を促進し、C#/.NET開発者にとって大きな利点となります。
プラットフォームに依存しない設計
Blazor WebAssembly アプリは、.NET が実行出来ないマシンでも静的ファイルとして簡単にデプロイできます。これにより、Blazor 開発者は異なるプラットフォームとデバイスで動作するウェブアプリケーションを構築することができます。デスクトップ、モバイル、IoTデバイスであろうと、Blazor が提供する柔軟性は、最小限のコード変更で複数の環境を対象としたアプリを構築する可能性を提供します。
ホスティングモデルを選択可能
フレームワークがクライアントサイドとサーバーサイドのホスティングモデルをサポートしているため、Blazor 開発者にはフルスタックな開発が可能です。クライアントサイドのホスティングでは、Blazor アプリ全体がブラウザで実行され、サーバーサイドのホスティングでは、UIロジックがサーバー上で実行され、UIの更新がクライアントに送信されます。さらに .NET 8 からは、同じページが、初回はサーバーサイドのホスティングで実行を開始し、次回以降はクライアントサイドのホスティングで動作する、Auto レンダーモードがサポートされました。
以下のような情報も Blazor の未来を想像する上で参考になるでしょう。
- WASM パフォーマンスの改善
- サーバーサイドでの完全なデバッグサポートと、クライアントサイドでの一部制限付きのデバッグサポート
- HTML DOM とのデータバインディング(双方向バインディング)
- 高いパフォーマンスのためのサーバーサイドレンダリング(プレレンダリング)
- 高いパフォーマンスのための WebAssembly ネイティブへの事前コンパイル
- スコープ付きスタイル
- オフラインでの動作(WebAssembly のみ)
- Blazor コードは JavaScript と同じセキュリティサンドボックスを持つ
- JS interop を使用して JavaScript フレームワークやライブラリの呼び出しも可能
- オープンソース
インフラジスティックスはどのように Blazor 開発者をサポートするか
過去2年間で、弊社のお客様の Blazor に対する関心は高まり、UI部品のお問い合わせも日々増えています。WPF や React などの他開発フレームワークの製品を使用していたお客様でさえ、今では Blazor を検討しています。Blazor をテーマとしたウェビナーの申し込みも増えており、世界中から多くの人々が参加しています。
そのため、チームは絶えず働き、Blazor 製品がお客様の全てのニーズを満たすようにしています。これには、継続的なリリースサイクルで新しいコンポーネントを追加することや、新しい機能でグリッドを強化することなどが含まれます。これはチームが一切の努力を惜しまず、常時進行中のプロセスです。
私たちの目標は、開発者がC#コンポーネントを使って Blazor アプリをより速く構築できるように支援することです。私たちは、お客様が求める高品質な製品を構築するためにリソースを投じています。Blazor 向けの Ignite UI ライブラリを継続的に改善し、市場で最速の Blazor グリッド、Blazor Dock Manager、あらゆるアプリシナリオに対応した高性能チャートなどを備えた35以上のネイティブ Blazor コンポーネントを製品化しました。Bootstrap、Fluent、Material などメジャーなデザインシステムをベースとしたテーマを利用可能で、Blazor Server、Blazor WebAssembly、.NET 7に対する完全なサポートも提供しています。
UIライブラリの開発に加えて、Blazor 開発者が Ignite UI for Blazor を使用する際に必要となるドキュメント、チュートリアル、サンプルの拡充。開発者に対する高品質な製品サポートの提供にも注力しています。さらには製品のみならず Blazor 開発そのものについての技術質問を受け付けることが出来るプランを用意し、Blazor 開発のスペシャリストによるサポート体制を整えています。
本記事のまとめ
JavaScript は構文、ライブラリ、フレームワークを通して巨大な開発コミュニティに支えられています。しかし、Blazor は.NETによるウェブ開発とC#を使用するプログラマーのためのフレームワークとして登場しました。彼らのアプリ開発プロセスをより速く、簡単に、効率化し、彼らのニーズに対応し、既存の技術スキルを活用することを可能にします。
ブラウザで実行される Blazor アプリケーションのパフォーマンスも大幅に向上しています。.NETが進化するにつれて、新しいバージョンで導入される強化機能や新機能からもさらなる利益を得ることができるでしょう。ウェブ開発の大きな可能性を秘めた WebAssembly 技術とともに、Blazorの未来は明るく、継続的な成長と採用が見込まれ、パフォーマンスが重要な業務アプリケーションにとって実用的な選択肢となるでしょう。