「Blazorアプリ 入門2 (2025/03/19)」
前回は
ASP.NET Blazorとは、HTML/Javascriptの中でC#を実行する機能
だと紹介しました。
・・・で。
それだけだと
要するに、Web系のお仕事? (私には関係ないな)
と思うのが、素直な感想だと思います。
ところが。Blazorを使うと面白い物が作れます。
実際にやってみましょう。
まずはわかりやすい説明のため。
シンプルな「電卓」を作ります。
Visual Studioから「WPF アプリケーション ((最も標準的なWindows用アプリの形式))」を
選んで雛形を作る。

シンプルなアプリなので、変更するファイルは二つのみ。
一つはMainWindow.xaml

ここは"GUI"。要するに"見た目"の定義してる場所です。
もう一つはMainWindow.xaml.cs

内部の動作。ロジック部分です。
この二つを合わせてコンパイルすると、

このようなアプリが完成します。
説明をわかりやすくするため、あえてボタンは4つのみとしております。
(ここまでできればフル機能電卓を作るのも簡単)
・・・で。このアプリはWindowsでしか動きません。
というのも。Windowsアプリのソースコードは
Windowsアプリ = XAML (見た目) + C# (ロジック)
で出来ている。
そのXAML (見た目) 部分が、
Windows特有の機能。
他のOSには存在しないから同じ.exeを動かすことが無理なんですね。
さて。さきほどのアプリの
Blazor版を作ってみましょう。
難しいことはありません。やる事はほぼ同じ。
Visual Studioから「Blazor サーバーアプリ」を
選んで雛形を作る。

今度は、Index.razorというファイルを選んで編集します。

BlazorはC#が動きますのでロジック部分は完全に同じ。
あとはGUIパートを
XAML → html
に書き直すだけ。簡単です。
これを走らせたもの。

うん、今度はアプリがブラウザに表示されるようになりました。
(右に見えるのはコンソール。.exeの本体はこっちに移動した。)
要するに。Blazorバージョンとは
Blazorアプリ = HTML (見た目) + C# (ロジック)
で構成されていると思って、まぁいいです。
・・・で。
アプリを二つに分解して、
物事をただややこしくしたように
見えますが・・・が。^^;
なんとこれ
Linuxでも動いちゃうんです。

"!?"
いや、それどころか。
Android / iOS / iPad / タブレット / Switch / PS5 / Linux / FreeBSD....
ブラウザが動く場所なら、どこでも平気で動きます(※)。
なぜならBlazorはそもそも
「ブラウザ」で動く技術なので。
(※厳密に言えばちょっと違いますが。次回にそこらの技術的な側面を説明します。)
これにはビックリ。
プログラミングしたことのある方ならわかると思いますが。^^A;
「GUIアプリを、マルチプラットフォームで動かす」って
めっっっちゃ面倒なんです。
出来ないことはないですが。
各種OS用の開発環境 / 検証 / テスト / サポート を個別に用意しなければいけない。
それが面倒。
もしくは、全てのOSで動くような共通フレームワークを使う手法もありますが
(Unoプラットフォームなど)。
それはそれで。「どのOSでも動くような独自の言語」を
強制されてめっちゃ動きづらくなる。
どっちみち。
ネイティブ開発に比べれば"かなり"面倒になります。
各種OS用の開発環境 / 検証 / テスト / サポート を個別に用意しなければいけない。
それが面倒。
もしくは、全てのOSで動くような共通フレームワークを使う手法もありますが
(Unoプラットフォームなど)。
それはそれで。「どのOSでも動くような独自の言語」を
強制されてめっちゃ動きづらくなる。
どっちみち。
ネイティブ開発に比べれば"かなり"面倒になります。
元の話に戻りますが。
何故、こんな事ができちゃうのかと言いますと。
思い出してください。
Windowsアプリ = XAML (見た目) + C# (ロジック)
でした。

ここで「XAMLはWindows特有の機能」だったので、
他のOSでは動かないのでした。
でもこれがBlazorだと
Blazorアプリ = HTML (見た目) + C# (ロジック)


そしてHTML(ブラウザ)はどのOSでも同じ動作をする。
完全に統一された規格なので。
Blazorで作ったアプリは、
どのプラットフォームでも動作する。そういう仕組です。
たった一つのコードから
どんな環境でも動くユニバーサル・アプリを作れるようになる。
それがBlazorの最大の強みでしょう!
まとめ:
Blazorには二つの側面がある。
・HTML/Javascriptの中でC#で実行する機能。
Web開発が楽になる。
・C#でユニバーサルアプリを作れる。
しかも必要なのは既存C#アプリの XAML → .html を書き直す部分だけ。
数時間の作業。非常に低コストで移植できる。
次回にもうちょっとBlazorのお話をしましょう。