Site icon image World Hacker(ぎょうざブログ)

Think Different, Connect Dots for Line.

【最高の開発体験】Astro + shadcn/ui

Web開発、特にフロントエンドよりの開発をされている皆さんの開発環境は何を利用してますか?

今回は、ぎょうざの中で固まりつつあるWebアプリ開発環境についてのお話です。

ちなみに、ぎょうざはジャンル問わず「規模が小さく新しいもの」が好きです。バンドであればインディーズ派です。

また、自分が使うものは自分で作りたい人です。

ぎょうざはWebアプリをつくるとき、開発要素を次の3つで捉えています。

(Webアプリ)=(動かす)+(見せる)+(届ける)

(動かす):Webアプリを論理的にどのように動かすか、このリンクを押したらどこへ飛ぶか

(見せる):WebアプリをUIを使ってどのように見せるか、ボタンの形、色、大きさ

(届ける):Webアプリをどうデプロイするか、ホスティング先

上の式で言うところの(動かす)+(見せる)を、Astro(動かす)+shadcn/ui(見せる)

で手軽に作り込めるようになったのがめちゃくちゃ良かったです。

デプロイ先については、各自のお財布事情が絡んでくると思ったので、本記事ではおまけとして触れています。

Astro(動かす)+shadcn/ui(見せる)+ Cloudflare Pages(届ける)

によって、Webアプリがより簡単に、より楽しく作れるようになったので、それぞれご紹介していきます。

Astro(動かす:フロントエンド開発フレームワーク)

結論として、なんでもっと早く使い始めなかったのかと後悔してます。

Next.jsにどっぷり浸かっていたため、名前は知ってはいたのですが

最近までお恥ずかしながら食わず嫌いしてしまっていました。

  • とにかく高速
  • 機能がコンパクト
  • Webアプリ開発に適したコンポーネント群が豊富

本サイト(ほぼSSG)のような静的コンテンツが多いWebアプリを作るレベルでしたら

Astroを利用するほうが良いと思いました。理由を、Next.jsと比較して下記にまとめてみました。

※本サイトの開発ケースおよびめちゃくちゃ独断です。規模の大きいWebアプリ開発の場合は、この限りではありません。

(比較項目) Astro Next.js
開発フレームワーク フロントエンド フロントエンド
レンダリング SSG、SSR(組み合わせ可) SSG、SSR、ISR、CSR(組み合わせ可)
対応ホスティングサービス数
(静的、SSR)
○(※Vercelが最適)
採用ケース 静的なコンテンツが多く、かつ
部分的に動的なコンテンツを
組み込みたい
(本サイトのようなブログなど)
情報のリアルタイム性が求められ
動的コンテンツが多い
(X:旧Twitterなど)
node_module容量 約400MB 約900MB
ページパフォーマンス
学習コスト

- Next.jsはできることが多い分、実装方法を調べる時間も多かったです。今回の場合は過剰スペックでした。
- ユーザー認証など、複雑な機能を作り込みたい事情がある場合は、Next.jsの検討もありです。
- 公式ドキュメントで他のフレームワークからの移行もサポートされています。もちろんNext.jsからの移行も可能です。

🆕
追記:2024/06/16
→Astro開発ハウツーの連載を始めてみました。

新機能のリリース頻度も高いので、Astroは今後の動向が気になるフレームワークの一つです!

shadcn/ui(見せる:ライブラリ非依存なUIコンポーネント群)

Tailwind CSSにお世話になっている方は、ご存じの方も多いかと思います。

WebアプリのUIをデザインする際、自身の開発環境にパッケージをインストールして

デザインを作り込むことが多いかと思います。ぼくもその一人でした。

ですが、この手法ですとパッケージの依存関係や、アップデートが少なくなってくると

コンポーネントの使い方の変化の追従や、Webアプリ側のアップデート対応など

開発しているWebアプリの規模が大きくなっていくと、それに比例して

気にかけておかないといけない項目が増えていってしまいます

(※どうしてもという場合はライブラリのソースコードを直接いじれば良いですが、パッケージのアップデートと競合するので非推奨。。。)

その点shadcn/uiの場合は、

  • すでにある機能だけを使った実装が可能
  • UIに関するパッケージの依存関係を気にしなくていい

が好印象なポイントです。

自作に特化したUIコンポーネントなので、shadcn/uiは雛形をダウンロードしてくれるだけです。

Bootstrapを始め、他のUIライブラリを利用してきた方は、「え。標準のデザインこれだけ?」となりそうですが

ぎょうざは、そこが気に入りました。

したがって、「デフォルトでそれっぽくオシャレなUIを配置したい」、

「デザインをライブラリに頼りたい」方にとっては、物足りなく感じるかもしれません。

🆕
追記:2024/09/22追記
▼shadcn/uiのTipsを整理しています。

ちなみに、Astroでshadcn/uiを利用する際のドキュメントも公式でサポートされています。

参考URL:https://ui.shadcn.com/docs/installation/astro

※使うUIコンポーネントによっては、ビルド時にエラーが出るようで、独自にReactコンポーネント化する必要があるようです。

可能な限り、自分の思い描いた通りに作り込みたい派のぎょうざには、shadcn/uiは相性最高です!

【おまけ】Cloudflare Pages(届ける:ホスティングサービス)

お金のかからないホスティング先として、個人開発の範囲であれば、これ以上を求めるのは贅沢なのでは?というくらい充実してます。

対応する開発フレームワークの数も比較的多いので、簡単なブログやECサイト程度でしたら十分にデプロイ可能と思います。

自作APIなどと紐づける、Cloudflare Workersというサービスも提供されています。組み合わせると最強です。

ホスティング先は各自のお財布事情などあると思うので、ハイエナ根性が染み付いているぎょうざのお財布は紐が固いので

Cloudflare Pages ときどき Cloudflare Workers という形でお世話になるかと思います。

以前はHerokuNetlifyも利用させていただいていたのですが、下記事情でCloudflareさんへホスティングのお引越しをしました。

データベース利用が必要、大量アクセスが予想される、決済利用で高いセキュリティが求める、など

高機能かつ大規模なサービス構築に迫られない限り、しばらくはCloudflare無料枠がメインのホスティング先になりそうです。

(できるだけ無料運用させてくだち~。。。)

選定理由:2024-04-23時点、無料枠内でできることが豊富です。自動デプロイ、カスタムドメイン、セキュリティ設定などをGUI操作で直感的に作業できます。

Herokuは残念ながら、無料枠が廃止になってしまったので完全無料利用とはいかなくなりましたが

Netlifyに関しては無料枠がCloudflareに追従する十分さでサービス豊富なので

本番運用前デプロイテスト用途などで引き続き利用する予定です。

Netlifyは標準で、Html要素内に提供されるタグを記載するだけで、問い合わせフォームを簡単にサイトへ設置できるサービスがあります。

お金をかけずにここまでできちゃうのです、いい時代ですね。

以上、ぎょうざでした。