今でしょう!この内容は Blazor Advent Calendar 2020の13日目の記事です
#自分のBlazorの履歴
僕はBlaozrの開発を大体2018年の12月ぐらいから始めています。大体2年ぐらいBlazorを使っていることになります。Blazorを始めた当初よく言われていたことは、確かに凄そう、だけどテクノロジーとしては定着しなそう。僕自身も正直将来でもBlazorが使えるかと言うと、かなり厳しいと思っていました。にも拘わらずその当時ASP.NET MVCで作っていたサービスをほぼゼロからフルスクラッチで書き換えることにしました。この理由はただ一つで自分にとっての至高言語であるC#を使ってクライアントサイドを書きたかったからです。
#Blazorは使い始めた時からちゃんとC#で書ける
Blazorは開発当初からC#でクライアントが書けます。個人的にはかなり直感的に使えると思いました。razorファイルの中で変数を宣言すればhtmlのタグの中に@でその変数を書けます。
@code {
private int Count { get; set; } = 1;
}
Blazor構文
<div>@Count</div>
↓
実際にレンダリングされるhtml
<div>1</div>
@の中ではif文もfor文も使えます。これだけで僕にとっては使う価値がありと判断しました。この仕組みは2年前から全く変わっていません。
#バージョンアップ毎に色々あった
ただ、最も重要なC#で書けるという大枠は変わってないですが、ライブラリの記述ルールやメソッドの名前、ファイル名の拡張子など細かいルールは色々変わっています。例えば以前はBlazorの中でcsを書くためのキーワードは@codeではなくて、@functionsでした。僕が使っていた2年前は、そもそもexperimentalと銘打っていたので当たり前の話ではあるんですが、バージョンアップするとほぼ書きかえないと動かなくなっていました。分かっていてやっている分には許せても、この段階で人に勧めるのはちょっと難しいと思います。
#IDEの開発環境もバグが多かった
また、Visual StudioもBlazorで開発していくにはバグが色々ありました。特に2年前はrazorファイル(当時はまだcshtmlファイル)の編集が酷くて、色は碌に変わらないし、インデントはちょっとしたことですぐ崩れました。極めつけはVSの機能でリネームしただけなのに、ファイルの中身がめちゃくちゃになったこともありました。Gitの履歴を確認したら編集出来ない状態も長く続いていてこれは地味にストレスでした。
#ライブラリも足りていなかった
この状態だと当然ですがライブラリも充実していません。誰かが作った便利ライブラリが少ないのはもちろん、公式のBlazorにも足りない機能はありました。特に当初認証回りが全く対応していませんでした。僕はその部分は自作しています。やるならほぼ自分で作らないといけないのもハードルしては高いと思います。
#正式版の発表
2020年の5月にBlazorは正式版になりました。バージョンアップは苦労していたのですぐにはせずに8月ぐらいに完全に新規で作りなおしました。それまでのコードは全て刷新されて無駄と思えていたようなコードはこの時点で全てなくなりました。開発環境も全く問題ないレベルになっていました。razorファイルの中でブレークポイントがバッチリ使えるようなったのも大きいと思います。さらに最近.NET Conf 2020がありましたがスケジュールを見たらBlazorのセッションが10個以上ありました。これはマイクロソフトとしても本気で推してきていることが見て取れます。
#というわけでまとめ
バージョンアップから何か月かさわっていますが、フレームワークとしての完成度という点において全く問題なくなっていると感じます。IDEの開発環境としても使いやすいし、長く問題だったバグも直っていたし、これからはもうバージョンアップしても殆ど書き換える必要もないと思います。開発するのに必要なものも揃ってきているし、今後は導入実績もどんどん増えていくと思います。そろそろ使えるフレームワークとして人に勧めても良い時期が来たと思います。なにより僕自身が全作り直しを覚悟して選んだフレームワークなのでこの状況を一番喜んでいます!
Blazorを始めるなら?今でしょ!