「Blazorアプリ勉強中 (2025/03/05)」


最近 ASP.NET Blazorというフレームワークに興味を持って、
色々勉強しています。





  ASP.NET Blazorとは何ぞや?
  
説明しますと・・・
・・


言葉で説明するより、
実物を見た方がわかりやすいですね。^^;




まずはこんな感じで、

VisualStudioにBlazorのSDKをインストールして
テンプレートから「Blazor Server アプリ」を選びます。



すると、アプリケーションの雛形が生成されますので。
それを数行いじって



あとはボタン一発。
「ビルド → 実行」すると


こんな感じのWebページが生成され、
表示されます。

はい、要するに。
 HTML &  関数を使って、HTMLの中に文字列を挿入
 →  .htmlを生成。
 →  .htmlをローカルサーバーに置いて、
 → それをブラウザで表示
をやっているんですね。



・・・それだけ聞くと。

  「えっ、それだけ?
と思われるでしょうが。^^;


もっと凝った事をしてみましょう。
さきほどのfunction部分を、以下のように書き換えます。




・・・お?

これは面白い。
コードの部分はC#で記述しています。

しかも完全なC#です。
C#ができることなら、なんでもできます。
  関数 / 文法 / プロジェクト構造 / 内部ライブラリ/外部ライブラリ
でもHTMLの中で動かせるようになります。

(ただしSystem.Window.Windowのような。
 デスクトップ/ウィンドウ/WPFに関する機能や、
 OSに強く依存するのはライブラリが通ってないので不可。

そういうのでも
  [DllImport("user32.dll")]
を使ってAPIを直接叩けば使えるようになります。)

その実行結果。

確かに、動いてますね。



それだけではなく、

<button onclick=@csharp_function>
@code
{
 int csharp_function()
 {
  ~
 }
}
のような記述をすれば。
  HTML → C#関数の呼び出し
へと繋げることもできます。




つまり、旧来は。
Webで動かす為のプログラム書こうと思えば
Javascriptが必須でした。
 正直、それはとても。スパゲティコードになりがち。^^A;

Blazorを使うと。
なんと! C#でWebプログラムを書けるようになるわけです。


そして何よりも。

C#なので文法チェック、誤字脱字チェック、ライブラリが通っているかなど。
可能な限りの事前エラーチェックをやってくれる。

もちろん、classの設計などもできます。
こりゃ凄い。



よし・・・・じゃあさらに踏み込んで。
これでどうだ!




実行結果:


わおっ!
なんとローカルファイルを、stringとして読み込み。
.htmlに表示してしまいました。

ファイルの書き込みもできます。



いやいや。これはかなりの物ですよ。

通常、ブラウザ&HTML の組み合わせでは。
ローカルファイルの読み書きは(セキュリティ上の理由で)
絶対にできないんです。

無論。やろうと思えばできます。

でもファイルを読み込もうと思えば、ファイルをURLに変換して。
サーバーを通して読み込む必要があるし。

ファイルを書き込むのはPOSTやCGIを通してもっと大変になる。

できないことはないですが、とにかく面倒。



最後に。
・・・誤解しないでいただきたいですが。

この「Blazor」によるC#の実行技術自体は
何も新しくありません。^^;

要するにやっていることは
  html
  → onclickイベント
  → .exeを発動して、C#のコードを実行する
  → 出力をブラウザに伝える
と同等。

それ自体はCommon Gateway Interface。
いわゆるCGIによる動的Webページ。
1993年からあった古~~い技術です。


何も目新しいことではありません。



Blazorの最大のメリットは:

開発者は
  ロジック部分にC#
  + GUI部分に.html
コーディングのみに専念して。

 「それ以外の面倒なCGI通信部分は。Blazorが全部やってくれます」

手紙 → eメールになったような。
どちらでもできる事は同じなんですが。
 圧倒的に楽になった! その為のフレームワークと言っても良いでしょう。



次回、さらなるBlazorの応用について解説してゆきます。


電卓は序の口。
プロジェクトを進めてゆくと、わりと「驚き」の事ができるようになります。


個人的には。将来的には全てのPCアプリ (.exe)が
Blazorバージョンに置き換わってもおかしくはない。
パラダイム・シフトが起きるかも、と思ってます。