戯言|C#のBlazorって美味しいのか?

徒然草2.0

ただの戯言です。ふと考えたことを言葉にしてみました。

いろいろと考えてみた後に調べると⋯だいぶ自分が遅れていることに気づいて補足をしました。

Blazorはなぜ流行らないのか

ASP.NET Core Blazor(エーエスピードットネット・コア・ブレイザー)という仕組みがあります。WebAssembly(WASM)を活用した、やや尖った存在感のあるWebアプリ開発フレームワークです。しかし、正直なところ、いまいち流行っているとは言いがたく、どこか中途半端な位置にくすぶっている印象があります。

ある調査によれば、BlazorはWebアプリ開発で選ばれるフレームワークの中で「20位」とのこと。一見すると「20位=けっこう使われているのでは?」と思うかもしれませんが、ITの世界では“10位以下”は「ほとんど使われていない」と同義だったりします。

どこかの技術系サイトでは、Blazorをおすすめする人たちのターゲットが明確に示されていました。それは、「C#が好きな人!」です。

逆に言えば、私のように「JavaScriptには飽きたけど、C#はまったく知らない」という人間にとって、Blazorはまるで自分のために存在していない技術です。そもそも、C#もASP.NET Coreも知らない状態で、その一部であるBlazorから手を出すのは、どう考えても得策とは言えません。

さらに、ちょっと触ってみようと思っても、Blazorに関する情報が意外と少ない。これも手を出しづらい理由の一つです。でもたぶんそれだけが理由ではないでしょう。

WASMが思ったほど流行らない理由?

Blazorが流行らない理由はWASMが流行らない理由とほぼ同義だと思います。

(↑ 補足:実はそんなことなくて、Unity、Figma CanvaなどはWASMだそうで、Webで快適に動くUIを持つアプリケーションはWASMであるそうです。Webでサクっと動かすアプリではなく、リッチな操作感が求められる世界ではふつうに使われて棲み分けられています)

WebAssembly(WASM)には、Webブラウザ上で多様なアプリケーションを動かせるポテンシャルがあります。極論すれば「Chromeさえ立ち上がっていれば、OSのGUIはいらない」――そんな未来を描いていた時期もありました。

……が、実際には、そんな未来はなかなかやってきません。なぜなのでしょうか。

ま、そこまで成熟していない。結果的に、Vue.js / React.js を代替するメリットがない。ってことなのでしょうが⋯はっきり肌で感じて分かるためには取り組みしかなさそう。

余談:PHP、C#、そしてJavaの考え方

ここから少し余談です。

最近、C#を学ぶ必要性が出てきたこともあり、PHPとの距離が開いてしまいました。気がつけば、PHP 9の話題どころか、PHP 7系の進化にも追いつけていません。自分のPHP経験を振り返っても、マジックメソッドで言えば __construct を使った程度、__toString の存在も最近になって思い出したほどです。たぶん、殆ど使われないという理由もあるのではないか。

PHPではこうした __construct や __toString といった、言語が自動的に呼び出す「マジックメソッド」が組み込まれています。一方、Javaにはこのような仕組みはありません。

たとえば、Javaにおける toString() は親クラス(Object)から継承された通常のメソッドです。PHPのように言語レベルで「特別な扱い」を受けているわけではありません。

このあたりに、言語設計の思想の違いが現れている気がします。

Javaは「継承ベース」、PHPは「拡張ベース」とでも言えるでしょう。設計の方向性や文化がまったく異なります。

ぬるぽ思想

Javaだとヌルポが発生します。

存在しないメソッドにアクセスするとExceptionが発生して、必ず避けなければならないことです。

String s = null;
System.out.println(s.length()); // NullPointerExceptionが即発生

しかし、PHPだと許容されてWarningエラーで済みます。

$s = null;
echo strlen($s); // Warning: strlen() expects parameter 1 to be string, null given

⋯だからいいわけではありませんが、過去は見過ごされてきましたが、現在では見過ごしてはいけないものになりつつありますが、、、そこらへんはゆるくもつよめることも後方互換性により可能です。

古き良き時代を懐かしめる、もしくはその名残りが当面は残るのでしょう。

phpにはぬるぽ思想(ぬるぽになりそうな書き方が)がなかったがjavaにはぬるぽ思想がもともとあるということです。

javaには「ぬるぽ思想」がある、なんていい方は私しかしないと思いますが(汗)

気がつけば、Blazorの話から言語思想の違いにまで話が逸れてしまいましたが、技術選定に迷っている人間の内省として、誰かの参考になれば幸いです。

 

徒然草2.0
スポンサーリンク
シェアする
gomiryoをフォローする
ごみぶろぐ

コメント

タイトルとURLをコピーしました