概要
この記事にたどり着いたということはきっともうBlazorについてある程度知っている方だと思いますので、Blazorに関する細かい説明は省きます。
Blazorでアプリを作る際に、基本的にはUIコンポーネントライブラリを使うと思うんです。2025年3月現在で選択肢に上がってくるライブラリってどんなのがありますか?自分はRadzen.Blazor
かMudBlazor
を使うことが多いです。
BlazorのUIコンポーネントライブラリを使っていて思うのは、「依存が激しい」ということです。自社プロダクトに採用する際、ちょっと手を出しづらいなって思っています。とくにRadzenはアップデートの頻度がかなり高く、ありがたい反面ついていくのが非常につらい。なので、最近はずっとBootstrapで基本のUIを作成し、ダイアログや通知のようなどうしてもC#のパワーが必要な部分だけRadzenを使用するみたいなことをやっています。
多分ですが自社プロダクトを開発する際には自社用のUIコンポーネント群を実装することが多いはずなんです。コンポーネント群を作る際に、Radzenなど依存がかなり大きいコンポーネントライブラリに頼らず、最低限の機能だけ提供してくれるライブラリがあればなぁという気持ちになります。
作ってみた
ないなら作れば良いということで実装を始めてみました。その名もCSStack.PrimeBlazor
。私は普段、C#向けのライブラリを作る際にCSStack
というシリーズとして作成していますので、頭にCSStack
というのが入っています。
BlazorやRCLに関しては結構触っている方だと思っていますが、いろんな方の意見を取り入れながら成長させていきたいので、あえてオープンソースで開発することにしました。
リポジトリはこちら→ https://github.com/Uta-member/CSStack.PrimeBlazor
思想
やはりできる限り依存を減らして、気軽に導入していただけるようなライブラリにしたいなという思いが強いです。また、このパッケージは単体でBlazorに組み込むのではなく、あくまでもBlazorのUIコンポーネントライブラリの開発支援パッケージとして使っていただくことを想定しています。そのため、内部のクラスは抽象クラスになっていたり、本来はDIコンテナから取り出すようなインスタンスをパラメータで受け取っていたり、ちょっと変わったことをしています。
使い方
NuGetでCSStack.PrimeBlazor
と検索していただき、プロジェクトにインストールしていただければと思います。
URLはこちら→ https://www.nuget.org/packages/CSStack.PrimeBlazor#readme-body-tab
詳しい実装方法などはプロジェクト内のReadme
フォルダ内にそれぞれのコンポーネントに分けてマークダウンファイルを配置してありますので、そちらを参考にしていただければと思います。
現状、機能としてはまだダイアログと通知しかありませんが、今後どんどん増やしていく予定です。
今後の展望
機能面に関して
機能面に関しては以下のようなものを実装する予定です。
- Popup(特定のコンポーネントのアクションに応じて、近くに別のコンポーネントを表示する機能)
- Tooltip(特定のコンポーネントのアクションに対して、説明文を表示する機能)
- ContextMenu(右クリックメニュー)
- ThemeManager(CSSを入れ替えるなどしてアプリケーション全体のテーマを制御する機能)
その他
- ドキュメントの充実
- 実際にBootstrapとCSStack.PrimeBlazorを使用したRCLの公開(同時に開発を進めているのですぐに出せるかと思います)
- .NET8より前のフレームワークにも対応(.NET5まで対応できるようにしようと考えています)
- アニメーションを簡単に扱えるパッケージを作りたい...(Blazorってアニメーション制御難しくないですか?)
最後に
Blazorをもっと盛り上げていつかはnode.js勢を追い抜きたいなっていう思いなので、まずはその基礎となるライブラリを充実させるために、できるだけスピード感を持って開発していこうと思っていますので、ぜひまずはたくさん使っていただけると幸いです。
また、普段から私はBlazorやMagicOnionなどC#に関する記事を投稿していますので、ぜひフォローいただけると励みになります。
ポエムみたいになっちゃいましたが、以上、RCL開発支援ツールの紹介でした。