Scriptone Scriptone

Starwind UIを採用した

約5分

💡 Summary

本サイトの外観整理と再利用性向上のため、AstroネイティブでTailwind CSS v4ベースのコンポーネントライブラリ「Starwind UI」を採用しました。shadcn/ui風のCLI導入による自由度の高さや、バニラJSによる軽量性が非常に快適です。

本サイトの外観がまた少し変わりました。色々作っていく中でページごとに外観が微妙に違う状態ができていて、コード的にも微妙に重複している箇所があるのが気になっていました。これを機に外観やコンポーネントを再利用可能な部品を使うことで整理整頓したく、Astro向けに利用できる Starwind UI を利用することとしました。

Starwind UI

Starwind UIは、Astro向けにゼロから設計されたオープンソースのUIコンポーネントライブラリです。従来のコンポーネントライブラリのように特定のフロントエンドフレームワーク(ReactやSvelte等)に依存せず、Astro本来のアイランドアーキテクチャ(Island Architecture)と相性が良いのが大きなメリットです。

特徴

  • Astroネイティブ&Vanilla JS/TS: ReactやVueといった重いUIフレームワークを追加で導入することなく、純粋なAstroと標準のJavaScript/TypeScriptだけで動作します。これにより、Astro本来の軽量さを損なわずにインタラクティブなUIを実現できます。
  • shadcn/uiライクなCLI提供: shadcn/uiと同じように、コンポーネントを自分のソースコード(src/components/など)に直接インストールして使用します。配布されたパッケージを呼び出すだけではなく、生成されたコード自体を自分でフルカスタマイズできるため、細かなデザインや機能の変更が非常に容易です。
  • Tailwind CSS v4対応: 現代のビルドシステムやスタイル設計に合わせた、Tailwind CSS v4による効率的でクリーンなスタイルがあらかじめ適用されています。

利用状況

当ブログでは、Starwind UIからボタン(Button)やバッジ(Badge)などの基本コンポーネントをコードレベルで導入しています。ブログのグローバルスタイルと衝突しないよう微調整を施し、一貫性のあるデザインを実装しました。

今回はまず、ボタン(Button)やバッジ(Badge)、カード(Card)といった基本的な共通パーツ群を移行・導入しました。

導入にあたっては、このブログ独自のグローバルスタイル(インラインコードのフォント指定やテーブルの角丸・境界線、引用ブロックなど)とも衝突しないように微調整を加えています。自分好みのカスタムテーマカラーと、Starwind UIが持つ一貫性のあるマージンやボーダーラインの設定が自然に同居できるようになりました。

感想

Starwind UIの導入により、自前での重複実装を防ぎ、デザインの一貫性を容易に保てるようになりました。CLI経由でソースコード自体を直接プロダクト内に取り込めるため、軽微なスタイルの拡張や微調整も柔軟に行えます。

AstroとTailwindCSSだとテンポよくコンポーネントを作っていくことができて便利ですが、うっかり似たようなものを再実装してしまうことがあります。ただ、自前での実装をしてもそこまで見た目が良いわけでもないのでそれであれば最初から美しいUI集を再利用できた方がよく、UIをそのまま利用するだけでも見た目がシンプルに美しくなるなと思います。

インストールされたコンポーネントのソースコード自体がシンプルで読みやすいため、「ここを少しだけ調整したい」という時にすぐに触れるのも良いです。今後他の共通UIパーツ(ダイアログやインプットなど)が必要になった際も、Starwind UIをベースに拡張します。

マインドマップ

< Diary一覧に戻る

年月別

カテゴリー別

タグ別