言語を切り替える
テーマを切り替える

Astroとは?「ゼロJS」「アイランド」そして「コンテンツ優先」の真の意味を3分で解説

先日、Next.jsで技術ブログを作ってビルドしたら、JavaScriptのサイズが500KBを超えていて驚愕しました。テキストと画像を表示するだけのサイトなのに、なぜこんなにJSが必要なのか?

Chrome DevToolsで確認すると、初期ロードに3秒かかり、さらに「未使用のJavaScript」の警告が大量に出ていました。コンテンツサイトにReact/Vueを使うのは、「牛刀で鶏を割く(大げさすぎる)」ことなのではないか、と疑問を持ち始めました。

そこで出会ったのが Astro です。「ほとんどのウェブサイトにそんな大量のJavaScriptは不要だ」という思想は過激に聞こえますが、その設計を知れば納得できます。

この記事では、Astroの3大コンセプト(コンテンツ優先、ゼロJSデフォルト、アイランドアーキテクチャ)の意味と、Next.jsやReactとの違い、そしてAstroを選ぶべきタイミングについて、専門用語を極力使わずに解説します。

なぜ従来のフレームワークは「重い」のか?

なぜ静的サイトに500KBものJSが必要になるのでしょうか?

ReactなどのSPA(シングルページアプリケーション)の仕組みを考えてみましょう。ブラウザはまずReactランタイム(約130KB)をロードし、次にビジネスロジックを読み込み、最後に「ハイドレーション(Hydration)」という処理を行って静的なHTMLを動的なアプリに変換します。

しかし、ただブログ記事を表示するだけのページで、90%がテキストと画像なら、この処理は無駄ではないでしょうか?

あるデータによると、SPAフレームワークがロードする平均500KBのJSのうち、60%は実際には使われていないそうです。3秒かけてロードしたコードの大半が「何もしない」のです。

「閲覧メインのサイト」と「高機能アプリ」は別物です。ドキュメント編集ツールには大量のJSが必要ですが、製品紹介ページには不要です。Astroはこの点に着目し、「デフォルトでJSをロードしない」という大胆な解決策を提示しました。

理念1:コンテンツ優先(Content-Focused)

「コンテンツ優先」とは、「もっと記事を書け」という意味ではなく、**「複雑なロジックよりコンテンツ表示を最優先するアーキテクチャ」**という意味です。

Astroはウェブサイトを2つに分類します:

  • コンテンツ型: ブログ、ドキュメント、公式サイト、LP、商品詳細
  • アプリ型: 管理画面、チャット、ドキュメント編集ツール

Astroは前者のために作られています。Next.jsでもブログは作れますが、戦車でコンビニに行くようなものです。
実例として、中国信託銀行(CITIC Bank)がNext.jsからAstroへ移行した際、JSサイズを90%削減し、パフォーマンスを30%向上させました。

"中国信託銀行がNext.jsからAstroへ移行した際、JSサイズを90%削減し、パフォーマンスを30%向上させました。"

— CITIC Bank Case Study

理念2:ゼロ JavaScript デフォルト(Zero JS by Default)

「JSを使わない」のではなく、**「デフォルトではJSをクライアントに送らない」**ということです。

Next.jsなどは、サーバーでHTMLを作った後、React本体とコンポーネントコードを全てブラウザに送り、全画面をハイドレーションします。
対してAstroは、純粋な静的HTMLを生成し、JSを一切添付しません。JSが必要な場合だけ、開発者が明示的に指定します。

これにより、Next.jsなら150KBになるページが、Astroなら11KBで済むこともあります。Lighthouseスコア99点を取るのも容易です。

理念3:アイランドアーキテクチャ(Islands Architecture)

これがAstroの真骨頂です。イメージしてください。

静的なHTMLの大海原に、ポツポツと浮かぶ「インタラクティブな島」。

海の部分(ヘッダー、サイドバー、記事本文など)はただのHTMLなので爆速です。島の部分(コメント欄、カルーセル、いいねボタンなど)だけが、独立してJSをロードし、動作します。これが「アイランドアーキテクチャ」です。

Astroは「部分ハイドレーション(Partial Hydration)」を採用しています。ページ全体をReact化するのではなく、必要なパーツだけをReact化します。

例えばブログ記事なら:

  • タイトル・本文 → 静的(HTMLのみ)
  • 目次 → 静的(HTMLのみ)
  • コメント欄 → 動的(React)
  • シェアボタン → 動的(Svelte)

これにより、ユーザーが操作可能になるまでの時間(TTI)を300%改善できます。
さらに、JSの読み込みタイミングも制御できます:

  • client:load: 即時ロード(重要機能)
  • client:idle: ブラウザが暇な時にロード(優先度低)
  • client:visible: 画面に映ったらロード(重いカルーセルなど)

3つの哲学比較:React vs Next.js vs Astro

1. 純React/Vue - 「クライアント重視」
ブラウザをアプリの実行環境と捉えます。

  • 向いている:SaaS、ツール、管理画面(Figma, Notionなど)

2. Next.js/Nuxt - 「全能プラットフォーム」
SPAの操作性とSSRの性能を両立。今やバックエンドも含めた全周対応。

  • 向いている:SNS、ECサイト、動的データの多いサイト(Netflix, TikTokなど)

3. Astro - 「コンテンツ優先」
静的HTML+オンデマンドJS。閲覧体験を最大化。

  • 向いている:ブログ、メディア、ドキュメント、コーポレートサイト
特徴AstroNext.js純React
JSサイズ極小(11KB~)中(150KB~)大(130KB~)
学習コスト低(JSXライク)中(SSR概念学習必須)
フレームワーク不問(React/Vue混在可)React専用React専用
用途コンテンツ閲覧アプリ/全般複雑な対話操作
SEO最強強い弱い(要設定)

結論:いつAstroを使うべきか?

✅ Astroが向いている場合

  1. ブログ・ドキュメント: テキスト主体のサイト。
  2. 企業サイト・LP: 表示速度がCVRに直結する場合。
  3. 商品紹介ページ: SEOが重要で、画像が多い場合。
  4. ポートフォリオ: シンプルで高速なサイト。

❌ Astroが向いていない場合

  1. 高機能Webアプリ: Figmaや管理画面のように、全画面で状態管理が必要な場合。
  2. リアルタイムアプリ: チャットや株価ボードなど。
  3. 完全なSPA: SEO不要で、アプリのような挙動が必要な場合。

判断基準はシンプルです:

  1. そのサイトは「読むもの」ですか?それとも「使うもの」ですか?
  2. もしJavaScriptをオフにしても、サイトの大枠は見れますか?

答えが「読むもの」「見れる」なら、Astroがベストチョイスです。

AstroはReactを捨てるものではなく、「必要な時だけReactを使う」という選択肢を与えてくれるフレームワークです。学習コストも低く、React/Vue経験者ならすぐに使えます。コンテンツサイトを作るなら、ぜひ一度試してみてください。驚くほど速いですよ。

FAQ

Astroとは何ですか?Next.jsとの違いは?
Astroはコンテンツ重視の高速フレームワークです。最大の違いは「デフォルトでJavaScriptをクライアントに送らない」こと。Next.jsなどのフレームワークがページ全体をJSで動作させるのに対し、Astroは静的HTMLを基本とし、必要な部分だけJSを動かします。これによりJSサイズが劇的に(90%近く)削減されます。
アイランドアーキテクチャとは?
ページ全体を動的アプリにするのではなく、静的なHTMLの中に、「島(アイランド)」のように独立した動的コンポーネント(ReactやVueなど)を配置する設計です。各島は独立してロード・動作するため、ページ全体のパフォーマンスを損ないません。
ReactやVueは使えますか?
はい、使えます。Astroは「フレームワークに依存しない」設計で、React、Vue、Svelte、Solidなどのコンポーネントをそのまま利用できます。しかも、それらを1つのページ内に混在させることも可能です。

3 min read · 公開日: 2025年12月2日 · 更新日: 2026年1月22日

コメント

GitHubアカウントでログインしてコメントできます

関連記事