最終更新:

【2026年版】Astroの始め方 — ゼロJSで爆速Webサイトを作る完全ガイド


Astro Islands Architecture 静的HTML(JavaScriptゼロ) ヘッダー(静的HTML) ナビゲーション ロゴ 記事コンテンツ(静的HTML) 🏝️ Island(React) 検索... 🏝️ Island(Svelte) ♥ 42 client:visible フッター(静的HTML) 静的HTML(JSなし) Islandコンポーネント(JSあり)
Astro Islands Architecture のイメージ:静的HTMLの海にインタラクティブな島が浮かぶ
🎚 難易度 ★☆☆ 初心者向け
⏱ 学習時間の目安 読むだけ10分、静的サイト作成まで30分
📚 前提知識 html-css-getting-started の基礎知識・javascript-getting-started(あると理解が深まる)
✅ このガイドで学べること
  • Astroプロジェクトの作成と起動
  • .astroコンポーネントとレイアウトの書き方
  • Markdownでのコンテンツ管理
  • 静的サイトのビルドとデプロイ

セットアップ手順

# Astroプロジェクト作成
npm create astro@latest my-astro-site
cd my-astro-site
npm install
npm run dev

.astroコンポーネントの基本構造

---
// フロントマター(サーバーサイドで実行されるJavaScript/TypeScript)
const title = "はじめてのAstroページ";
const items = ["りんご", "みかん", "バナナ"];
---

<!-- テンプレート(HTMLとJSXの中間のような構文) -->
<html lang="ja">
  <head><title>{title}</title></head>
  <body>
    <h1>{title}</h1>
    <ul>
      {items.map(item => <li>{item}</li>)}
    </ul>
  </body>
</html>

<style>
  h1 { color: purple; }
</style>

よくある詰まりポイント

Q: ReactやVueのコンポーネントをAstroで使いたい → Astroのインテグレーション(npx astro add react など)を追加すれば使えます。ただし client:loadclient:visible などのディレクティブで「いつクライアント側でハイドレートするか」を指定する必要があります。

Q: .astro ファイルと .md ファイルの使い分けは? → ページレイアウトや再利用コンポーネントは .astro、ブログ記事などのコンテンツは .md または .mdx が向いています。Content Collections機能を使うとMarkdownファイルの型安全な管理ができます。

Q: ビルドが遅いnpm run build で本番ビルドしてください。npm run preview でビルド結果をローカルで確認できます。

ひよこ ひよこ

最近「Astro」ってよく聞くんだけど、どういうフレームワークなの?

ペンギン先生 ペンギン先生

AstroはWebサイトを作るためのフレームワークで、最大の特徴は「デフォルトJavaScriptをゼロにする」ことなんだ。普通のフレームワークはページ全体をJavaScriptで動かすけど、Astroは静的なHTMLを出力して、必要な部分だけJavaScriptを読み込む。だから表示速度がめちゃくちゃ速いんだよ。

ひよこ ひよこ

JavaScriptゼロなのにちゃんとしたサイトが作れるの?

ペンギン先生 ペンギン先生

もちろん!ブログやドキュメントサイト、ポートフォリオみたいなコンテンツ中心のサイトならJavaScriptがなくても十分なんだ。ボタンのクリックやフォームみたいなインタラクティブな部分だけ、あとで説明する「Islands Architecture」で部分的にJSを足せるよ。

ひよこ ひよこ

プロジェクトを始めるにはどうすればいいの?

ペンギン先生 ペンギン先生

ターミナルで「npm create astro@latest」を実行するだけだよ。対話形式でプロジェクト名やテンプレートを選べるんだ。TypeScriptの設定やGit初期化もまとめてやってくれる。作成が終わったら「npm run dev」で開発サーバーが立ち上がるよ。

ペンギン先生 ペンギン先生

ここで「npm create astro@latest my-astro-site」を実行してみてね。テンプレートを選ぶ画面が出たら「Minimal」か「Blog」を選ぶといいよ。「cd my-astro-site」→「npm install」→「npm run dev」で「localhost:4321」にアクセスできれば成功だよ!

ひよこ ひよこ

ページやレイアウトはどうやって作るの?

ペンギン先生 ペンギン先生

srcフォルダの中にpagesディレクトリがあって、そこに.astroファイルを置くとそのままURLになるんだ。たとえばpages/about.astroを作れば /about でアクセスできる。レイアウトはlayoutsディレクトリに共通テンプレートを作って、各ページから読み込む形だね。.astroファイルは上部にJavaScriptを書くフロントマター部分と、下部にHTMLテンプレートを書く部分に分かれているよ。

ひよこ ひよこ

ブログ記事みたいなコンテンツをたくさん管理するにはどうするのかな?

ペンギン先生 ペンギン先生

そこで活躍するのが「Content Collections」だよ。src/contentフォルダMarkdownファイルをまとめて置いて、スキーマで型を定義できるんだ。たとえばblogコレクションを作れば、タイトルや日付のバリデーションを自動でやってくれる。型安全にコンテンツを扱えるから、記事が増えても管理しやすいんだよ。

ひよこ ひよこ

「Islands Architecture」って何なの?名前がかっこいいけど難しそう…

ペンギン先生 ペンギン先生

静的なHTMLの「海」の中に、インタラクティブなコンポーネントの「島(Island)」が浮かんでいるイメージだよ。たとえばページ全体は静的HTMLだけど、検索バーだけReactコンポーネントにする、みたいなことができるんだ。コンポーネントにclient:loadやclient:visibleといったディレクティブを付けると、その部分だけブラウザJavaScriptが実行されるよ。

ひよこ ひよこ

ReactとかVueとかSvelteも使えるの?

ペンギン先生 ペンギン先生

それがAstroのすごいところで、ReactVueSvelte・Solid・Preactなど複数のUIフレームワークを同じプロジェクト内で混在できるんだ。インテグレーションを追加するだけで使えるようになる。既存のReactコンポーネントをそのまま持ってきて、Astroプロジェクトに組み込むこともできるよ。

ひよこ ひよこ

静的サイトだけじゃなくてサーバーサイドレンダリングもできるの?

ペンギン先生 ペンギン先生

できるよ!Astroデフォルトでは静的サイト生成、つまりSSGモードでビルド時にHTMLを生成するんだけど、設定でSSRモードに切り替えられるんだ。SSRならリクエストごとにサーバーでページを生成できるから、ユーザーごとに違う内容を返したい場合に便利だね。ページ単位でSSGSSRを混在させることもできるよ。

ひよこ ひよこ

作ったサイトをデプロイするにはどうしたらいいの?

ペンギン先生 ペンギン先生

SSGモードならCloudflare PagesやVercelNetlifyなど大体どこでもデプロイできるよ。GitHubリポジトリを連携するだけで自動デプロイが組める。SSRモードの場合はアダプターが必要で、たとえばCloudflare Workersなら専用のアダプターをインストールして設定ファイルに追加するだけだよ。

ひよこ ひよこ

Astroってどんなサイトに向いているのかな?

ペンギン先生 ペンギン先生

コンテンツ中心のサイトが最も得意だね。ブログ、ドキュメントサイト、マーケティングページ、ポートフォリオなんかはAstroの強みを最大限に活かせる。逆にダッシュボードやSNSみたいに画面全体がインタラクティブなアプリにはNext.jsNuxtの方が向いているよ。適材適所で使い分けるのが大事だね。

ひよこ ひよこ

なるほど、まずはブログから試してみるね!

ペンギン先生 ペンギン先生

いい選択だね!Astroの公式ドキュメントにブログチュートリアルがあるから、それを一通りやるのがおすすめだよ。View Transitionsでページ遷移アニメーションを付けたり、画像最適化RSSフィード生成もビルトインで対応しているから、意外と少ないコードで本格的なブログが作れるよ。

次に学ぶなら