フロントエンドフレームワークの一長一短で「コンテンツ特化型」に分類したAstroを見ていきます。この記事は実例に困りません——このサイト自体が、Astroで作られているからです。
このサイト自体が、Astroで作られている
Dance with Agentsは、Astro+Tailwind CSS+content collectionsという構成で実装されています。いま読んでいるこのコラム本文も、Markdownのファイルとしてリポジトリに置かれ、Astroが読み込んで組み立てています。
コンテンツが主役、という前提
Astroは、ブログ・ドキュメント・企業サイトのような「文章を読ませる」サイト向けに作られた、静的サイト生成に振り切ったツールです。ページの大半が変化しない文章であることを前提に、初期状態で配るJavaScriptの量をほぼ0にするという設計思想を持っています。
アイランドアーキテクチャ
React・VueによるSPA(Single Page Application、画面全体を1つのアプリとしてブラウザ側で動かす構成)や、Next.js・Nuxtのようなメタフレームワークは、たいていページ全体を「JavaScriptで動く1つの塊」として組み立てます。Astroはこの発想が逆で、ページの大部分をただのHTMLとして配り、動きが必要な部分(検索ボックス、タグの絞り込みなど)だけを「島(island)」として個別に指定し、そこだけJavaScriptを読み込ませます。 これが「アイランドアーキテクチャ」と呼ばれる仕組みです。
Astro自体はUIライブラリを持たず、React・Vue・Svelteといった複数のフレームワークのコンポーネント(画面を組み立てる部品)を、1つのAstroページの中に混在させることもできます。「島の中でどのライブラリを使うか」は自由、という立ち位置です。
向いているもの、向いていないもの
- 向いている:記事・ドキュメントのような、読みもの中心のサイト。検索エンジンからの流入を重視するサイトにも強い(JavaScriptに頼らず、コンテンツがそのままHTMLとして届くため)
- 向いていない:常に画面が動き続けるダッシュボードや、ログイン後の操作画面のようなアプリ。フロントエンドフレームワークの一長一短で書いたJyotish-ONE(日付や惑星を切り替えるたびに再計算・再描画が起きる、インド占星術のチャート描画ツール)のような用途では、素のVue・ReactによるSPAのほうが向いています
まとめ
このサイトがAstroで、Jyotish-ONEがVueであるのは、優劣ではなく用途の違いです。文章を読ませるサイトにはAstro、常に画面が動き続けるアプリには素のライブラリやそのSPA構成——というのが、この一長一短シリーズの結論になります。