Webフロントエンド - フレームワーク・ライブラリ

Astro あすとろ

静的サイトジェネレーターアイランドアーキテクチャゼロJSコンテンツ重視Reactパフォーマンス
Astroについて教えて

簡単に言うとこんな感じ!

Astroは「できるだけJavaScriptを使わないWebサイト構築ツール」だよ!ブログやドキュメントサイトを作るとき、「必要な部分だけJS動かして、あとは軽くして!」っていう考え方で動くフレームワークなんだ。結果、爆速で表示されるサイトがサクッと作れちゃうってこと!


Astroとは

Astroは、2021年に登場したオープンソースの静的サイトジェネレーター(SSG: Static Site Generator)兼Webフレームワークです。ブログ・ドキュメントサイト・マーケティングサイトなど、コンテンツ中心のWebサイトを高速に配信することを最大の目標として設計されています。

最大の特徴は「デフォルトでJavaScriptをほぼ出力しない」点です。従来のReactやVueベースのフレームワークは、ページを表示するために大量のJavaScriptをブラウザに送り込みますが、Astroはビルド時にHTMLを生成し、インタラクション(動き)が必要な部分だけにJavaScriptを限定的に適用します。これにより、ページの読み込みが劇的に速くなります。

また、AstroはReact・Vue・Svelte・SolidJSなど複数のUIフレームワークを1つのプロジェクト内で混在させて使える珍しい設計を採用しています。既存の資産を活かしつつ移行できる柔軟性も、エンジニアから支持を集める理由のひとつです。


アイランドアーキテクチャという核心的な考え方

Astroの心臓部にあるのが「アイランドアーキテクチャ(Islands Architecture)」という概念です。

ページ全体を「静かな海」と見立て、インタラクティブな部品だけを「島(アイランド)」として浮かべるイメージです。島の外はただのHTMLなのでJSのコストがゼロ、島の中だけ必要なJSが動きます。

エリア内容JavaScript
海(静的部分)ヘッダー・本文テキスト・フッターなどなし
島(動的部分)検索フォーム・カルーセル・ショッピングカートなど必要な分だけ

ハイドレーションの制御(client:* ディレクティブ)

Astroではコンポーネントに「いつJSを読み込むか」を指示できます。

ディレクティブタイミング
client:loadページ読み込み直後
client:idleブラウザが暇になったとき
client:visible画面に見えたとき
client:mediaメディアクエリが一致したとき
client:onlyサーバーレンダリングなし(CSRのみ)

Astroファイル構文(.astro

Astro独自の .astro ファイルは、上部にJavaScriptロジック、下部にHTMLテンプレートを書く形式です。

---
// ここはサーバー側で実行される(ビルド時 or リクエスト時)
const title = "こんにちは、Astro!";
const posts = await fetch("/api/posts").then(r => r.json());
---

<!-- ここがHTMLテンプレート -->
<h1>{title}</h1>
<ul>
  {posts.map(p => <li>{p.title}</li>)}
</ul>

歴史と背景

  • 2021年6月:Fred K. Schottらが開発、ベータ版を公開。「コンテンツサイトに特化したSSGが欲しい」という声に応えて誕生
  • 2022年8月:Astro v1.0 正式リリース。安定版として企業採用が増加
  • 2022年末〜2023年:コンテンツコレクション機能・SSR(サーバーサイドレンダリング)対応を強化。SSGだけでなくダイナミックなサイトにも使えるように進化
  • 2023年9月:Astro v3.0 リリース。ビューtransitions APIのネイティブサポートなどでSPA風のページ遷移を実現
  • 2024年:Astro v4.x 系でAstro DBやServer Actionsなどを追加、フルスタック志向の機能も強化
  • 背景として、Core Web Vitals(Googleの表示速度指標)の重要性が増したことで、「JSを減らして速いサイトを作る」需要が急増したことが普及を後押し

他フレームワークとの比較

Astroは何でもできる万能ツールではなく、コンテンツ重視サイトに特化した選択肢です。用途によって使い分けましょう。

フレームワーク主な用途デフォルトJS出力ルーティング
Astroブログ・ドキュメント・LP最小(ゼロ近く)ファイルベース
Next.jsWebアプリ全般・ECサイト多めファイルベース
Nuxt.jsVueベースのWebアプリ多めファイルベース
SvelteKit軽量Webアプリ少なめファイルベース
Remixデータ中心のWebアプリ多めファイルベース
Gatsbyコンテンツサイト(旧来)多めファイルベース

AstroのレンダリングモードをSVGで整理

Astroのレンダリングモード SSG 静的サイト生成 ビルド時にHTML生成 超高速・CDN配信向き ブログ・LPに最適 SSR サーバーサイドレンダリング リクエスト時にHTML生成 動的データ対応 認証・APIルートも可 ハイブリッド SSG + SSR 混在 ページごとに切替可 柔軟な設計が可能 v2.0以降で対応 速度重視 動的対応 両立

関連用語

  • 静的サイトジェネレーター — ビルド時にHTMLを生成してサイトを作るツールの総称
  • Next.js — ReactベースのフルスタックWebフレームワーク。Astroと比較されることが多い
  • React — Meta製UIライブラリ。Astroのコンポーネントとして組み込んで利用できる
  • Vite — Astroのビルドツールとしてベースになっているフロントエンドビルドツール
  • Core Web Vitals — Googleが定めるページ表示品質の指標。Astroが高スコアを取りやすい
  • SSG(Static Site Generation) — ビルド時にHTMLを生成するレンダリング方式
  • SSR(Server Side Rendering) — リクエストのたびにサーバーでHTMLを生成するレンダリング方式
  • Markdown — Astroでコンテンツを記述する際によく使われる軽量マークアップ言語