Skip to content
Cloud AI エンジニア入門ガイド
Go back

01. Astroとは何か:コンテンツ中心という選択

この章の全体像として、解く問題、Server-first、Zero JS、UI-agnosticの4つを番号順に並べ、以降の機能を設計思想つきで理解できるようになることを示した図

シリーズ目次次章: 02. Astroの環境構築とプロジェクト構成

Table of contents

Open Table of contents

この章のねらい

Astroは、何を優先して何を捨てるかの判断が他のフレームワークとはっきり違います。まずはその中身から見ていきます。

ここを押さえておくと、以降の章に出てくる機能が、なぜそういう設計なのかという理由つきで頭に入ります。

Astroが解こうとしている問題

2010年代後半以降、Webフロントエンドの主流はSPA(Single Page Application、シングルページアプリケーション)でした。SPAとは、最初に大きなJavaScriptをブラウザに送り、以降の画面の切り替えをJavaScriptがブラウザ上で行う方式です。

用語: SPAは「1枚のHTMLページの中身をJavaScriptで書き換え続ける」方式のWebアプリです。GmailやGoogleマップのように、画面遷移が多く操作が複雑なアプリに向いています。

SPAは、メールクライアントや管理画面のような操作が主役のアプリでは、これがよく効きます。しかし、ブログ・ニュースサイト・製品紹介ページ・ドキュメントのような読むことが主役のサイトでは、話が変わります。記事を読むだけの読者に、数百KBのJavaScriptをダウンロードさせて画面を組み立てさせるのは、明らかに過剰です。

Astroの公式ドキュメントは、この問題意識をコンテンツ駆動型(content-driven)のWebサイトに特化すると書いています。トレードオフをコンテンツ配信の側に寄せて速さを取る、という方針だそうです。

身近な例えで言うと

レストランに例えると分かりやすいかもしれません。

読むことが目的の来店客にとっては、後者のほうが快適です。

客席に何が運び込まれるかを並べると、違いがはっきりします。

SPAは客席に食材と調理器具をまるごと運び込んで自分で調理する方式、Astroは厨房で完成した料理と少量の調味料だけを配膳する方式として、両者を左右に並べて比較した図

5つの設計原則

公式ドキュメントの「Why Astro?」では、Astroの設計が5つの原則で説明されています。

原則意味
Content-drivenマーケティングサイト、ブログ、ドキュメントなどコンテンツ豊富なサイトの構築に特化する
Server-firstクライアントサイドレンダリングよりサーバーレンダリングを優先する
Fast by default「性能の悪いサイトを作るほうが難しい」状態を目指す
Easy to use.astroはHTMLの上位互換で、学習曲線をなだらかにする
Developer-focusedエディタ拡張、CLI、多言語ドキュメント、コミュニティで開発者を支える

このうち、技術的な判断に最も大きく効いているのが Server-first です。

この5つは横並びの特徴ではありません。Content-drivenという目的があり、そこからServer-firstという判断が出てきて、速さはその結果です。

Content-drivenという目的からServer-firstという中核の判断が導かれ、その結果としてFast by defaultが得られ、Easy to useとDeveloper-focusedが開発を支えることを示した、5つの設計原則の上下関係の図

Server-firstとMPAモデル

Astroは、SPAではなくMPA(Multi-Page Application、マルチページアプリケーション)モデルを採用しています。MPAとは、URLごとにサーバー側でHTMLを用意し、ページ遷移のたびに新しいHTMLを読み込む従来型の方式です。

公式ドキュメントは、このMPAモデルによってSPAモデルよりも初期ロードのパフォーマンスに優れると説明しています。両者のリクエスト処理の違いを図にすると、次のようになります。

AstroのMPAモデルと典型的なSPAモデルで、ブラウザがページを表示するまでの処理手順を並べて比較した図

クライアントレンダリングだけで画面を組み立てるSPAでは、JavaScriptの読み込みと実行が終わるまで主要な内容を表示できません。一方、Astroではサーバーから届いたHTMLをブラウザがそのまま表示できます。なお、Next.jsやNuxtなどのフレームワークも、サーバーレンダリングや静的生成を使えば完成したHTMLを先に表示できます。

MPAには弱点もあります。インタラクティブ性が乏しく、ページを移るたびに画面がちらつきます。Astroはこれを、後の章で扱うアイランドアーキテクチャとView Transitionsで補っています。

Zero JS by default

Astroの最も特徴的な挙動が、デフォルトではクライアントにJavaScriptを一切送らないという点です。

.astroコンポーネントに書いたJavaScriptは、ビルド時やリクエスト時にサーバー側で実行され、その結果のHTMLだけがブラウザに届きます。ReactやVueのコンポーネントを使った場合でも、明示的に指示しない限り、静的HTMLとしてレンダリングされてJavaScriptは削除されます。

つまりJavaScriptは、必要な場所に自分で足すものになりました。Astroのサイトが軽いのはこの一点によります。

既定の状態と、必要な部品にだけJavaScriptを足したあとを並べると次のようになります。

既定ではページ全体が静的HTMLでJavaScriptが0であり、対話が必要な部品にclientディレクティブを付けるとその部品の分だけJavaScriptが送られるようになることを、同じページの二段階で示した図

必要な部分だけを対話的にする仕組みが「アイランド」で、これは08. AstroのアイランドアーキテクチャとUIフレームワークで詳しく扱います。

UIフレームワークとの関係

Astroは特定のUIフレームワークに縛られません。公式インテグレーションとして、React、Preact、Svelte、Vue、SolidJS、Alpine.jsが用意されています。

さらに、1つのAstroコンポーネントの中に、ReactのコンポーネントとSvelteのコンポーネントを同時に置くこともできます。既存の資産を持ち込みやすく、将来フレームワークを乗り換える際の負担も小さくなります。

Astroを使うためにReactを覚える必要はありません。素のHTMLとJavaScriptだけでもサイトは作れます。

他のフレームワークとの位置づけ

ざっくりした比較を表にします。優劣ではなく得意分野の違いです。

観点AstroNext.js / Nuxtなど素のHTML/CSS
主な用途コンテンツ中心のサイトアプリケーション中心のサイト小規模な静的ページ
既定のJS量ゼロレンダリング方式や構成によって異なるゼロ
UIライブラリ複数を混在できる基本的に1つに固定なし
コンポーネント化できるできるできない
学習コスト低〜中中〜高

管理画面やリアルタイム性の高いアプリを作るなら、アプリケーション志向のフレームワークのほうが適しています。逆に、記事や製品情報を届けるサイトであれば、Astroの土俵です。

Astro 7という現在地

このシリーズはAstro 7系を前提としています。Astro 7は2026年6月22日にリリースされたメジャーバージョンで、公式ブログでは主に次の点が挙げられています。

これらの変更に、レンダリングエンジンやVite 8の改善を合わせたAstro 7全体のベンチマークでは、ビルド時間が15〜61%短縮されています。

一方で、破壊的変更も含まれます。特に、新しいコンパイラは不正なHTML構文に対して以前より厳しくなり、タグの閉じ忘れなどがエラーになります。過去の記事やサンプルコードを参照するときは、対象バージョンに注意してください。

要点

参考資料


シリーズ目次次章: 02. Astroの環境構築とプロジェクト構成


Share this post:

Previous Post
02. Astroの環境構築とプロジェクト構成
Next Post
00. Astro徹底入門シリーズ 目次