静的サイトを作りたいけれど、

  • Next.js は少し重く感じる
  • WordPress は管理が大変そう
  • できれば表示は速くしたい

そんなときに、かなり気持ちよくハマるのが Astro です。

個人的に Astro の良いところは、「凝ったこともできるのに、最初の一歩はすごく軽い」ことです。ブログ、ポートフォリオ、会社案内、ランディングページみたいなコンテンツ主体のサイトなら、本当に相性が良いです。

この記事では、Astro が何者なのか、なぜ人気なのか、どうやって始めるのかを、初心者向けに整理していきます。

Astroとは?

Astro は、コンテンツ中心の Web サイトを作るために設計されたモダンなフレームワークです。

一番わかりやすい特徴は、必要な場所だけ JavaScript を使うという考え方にあります。

普通のフレームワークでは、ページ全体に JavaScript がかなり載ることがあります。でも Astro は、まず HTML をしっかり出して、動きが必要な部分だけを後から読み込む設計です。これが、いわゆるアイランドアーキテクチャです。

難しそうに聞こえるかもしれませんが、使う側としてはかなり単純で、

  • テキスト中心のページは軽い
  • ブログ記事が速く表示される
  • 必要なら一部だけ React や Vue を混ぜられる

という、おいしいところ取りができます。

Astroが向いているサイト

Astro は万能というより、向いている分野がかなりはっきりしているタイプです。

特に相性が良いのは、次のようなサイトです。

  • ブログ
  • メディアサイト
  • ポートフォリオ
  • 会社紹介サイト
  • 商品紹介ページ
  • ドキュメントサイト

逆に、管理画面が重かったり、画面全体がアプリのように頻繁に動くサービスでは、React や Next.js のほうが自然な場合もあります。

だから Astro を選ぶときの判断軸はシンプルで、「このサイトの主役はコンテンツか?」 です。主役が文章や画像なら、かなり有力候補になります。

Astroの主な特徴

1. とにかく表示が軽い

Astro はデフォルトで余計な JavaScript をあまり出さないので、初回表示がかなり軽いです。

この差は、記事サイトでは体感にも効きます。

読者からすると、

  • クリックしてすぐ本文が見える
  • スマホでももたつきにくい
  • 広告や計測を載せてもベースが軽い

という形で効いてきます。

見た目が同じでも、表示が遅いだけで離脱されることは本当に多いので、ここは地味に大きいです。

2. 好きな UI フレームワークを混ぜられる

Astro の面白いところは、React、Vue、Svelte、Solid などのコンポーネントを同じプロジェクト内で使えることです。

たとえば、

  • 普通のページは Astro で軽く作る
  • 検索ボックスだけ React にする
  • 料金シミュレーターだけ Vue にする

みたいな使い方ができます。

「全部を React で組み切るほどではないけれど、一部だけ動かしたい」という場面にすごく強いです。

3. コンテンツ管理が気持ちいい

src/content/ に Markdown や MDX を置いて、config.ts でスキーマを定義する形はかなり扱いやすいです。

特にブログでは、

  • タイトルを書き忘れた
  • 日付の形式がバラバラ
  • category の値が崩れた

みたいな事故が減ります。型で守られながら記事を積めるのは、長く運営するほどありがたいです。

4. MDX が使いやすい

記事内にコンポーネントを差し込めるので、ブログと UI パーツの距離が近いです。

たとえばこのサイトでも、記事の流れの中に PR ブロックや関連記事導線を自然に差し込みやすくなります。単なる Markdown より、収益導線や比較ブロックを入れやすいのはかなり便利です。

インストール方法

まずは Node.js 18 以上が入っていることを確認します。

node -v

問題なければ、以下で Astro プロジェクトを作れます。

npm create astro@latest

# 質問に答えながらセットアップ
cd my-blog
npm install
npm run dev

開発サーバーが立ち上がったら、http://localhost:4321 で確認できます。

最初の感想としては、「あ、もう見えるんだ」という軽さがあると思います。ここで難しい設定に引っかかりにくいのも Astro の良いところです。

プロジェクト構造をざっくり理解する

Astro プロジェクトは、最初に全部を覚えなくても大丈夫です。まずはこのくらいで十分です。

my-blog/
├── public/          # 画像やfaviconなど、そのまま配信するファイル
├── src/
│   ├── components/  # 使い回す部品
│   ├── content/     # 記事コンテンツ
│   ├── layouts/     # 共通レイアウト
│   ├── pages/       # URLになるページ
│   └── styles/      # CSS
├── astro.config.mjs
└── package.json

初心者のうちは、

  • ページは src/pages
  • 記事は src/content
  • 共通デザインは src/layouts

この3つだけ意識しておけばかなり進められます。

pages ディレクトリの考え方

src/pages/ に置いたファイルは、そのまま URL に近い形で公開されます。

src/pages/
├── index.astro        → /
├── about.astro        → /about
└── articles/
    ├── index.astro    → /articles
    └── [slug].astro   → /articles/任意のスラッグ

このルールが素直なので、後から見返しても迷いにくいです。

「なぜこの URL になるのか分からない」というフレームワーク特有の混乱が少ないのは、学習コストの低さにつながっています。

Astroコンポーネントの書き方

.astro ファイルは、フロントマターとテンプレートが1つのファイルにまとまっています。

---
const greeting = "Hello, World!";
---

<h1>{greeting}</h1>

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

最初は「HTMLに少しだけサーバー側の処理が入るもの」と思うと分かりやすいです。

React の JSX より、静的ページ用途ではかなり素直に読めます。デザイナー寄りの人や、HTML/CSS に慣れている人でも入りやすいです。

コンテンツコレクションは早めに触ると楽になる

ブログを作るなら、コンテンツコレクションは早めに使うのがおすすめです。

import { defineCollection, z } from 'astro:content';

const articles = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    publishedAt: z.coerce.date(),
    category: z.enum(['tech', 'lifestyle', 'review']),
  }),
});

export const collections = { articles };

この仕組みのおかげで、記事が増えても構造が壊れにくくなります。

「個人ブログなんだから雑でもいい」と思いがちですが、10本を超えたあたりから雑さのツケが来ます。Astro はそこを最初から軽く防いでくれるのが嬉しいです。

Astroを使っていて気持ちいいポイント

実際に触ると、スペック表だけでは伝わりにくい良さがあります。

作る側が疲れにくい

大げさな初期設定をしなくても進めやすく、構造も比較的読みやすいです。1週間後に戻ってきても「何をしていたか」が分かりやすいのは大きいです。

記事追加の心理的ハードルが低い

MDX で1本増やすだけ、という感覚で記事を積みやすいので、更新が止まりにくいです。ブログ運営って、この「止まりにくさ」が本当に大事なんですよね。

後から育てやすい

最初は静的サイトとして始めて、後から検索、絞り込み、ランキング、広告ブロックなどを足していく流れが作りやすいです。最初から重装備で始めなくていいのが楽です。

つまずきやすいところ

もちろん、良いことばかりではありません。

動的アプリを作る感覚で入ると少しズレる

Astro は「何でも React 的にやる」世界観とは違います。ページ全体をクライアント側でゴリゴリ動かしたいなら、別の選択肢のほうが自然なことがあります。

記事構造を後から変えると意外と面倒

これは Astro が悪いというより、ブログ全般の話ですが、カテゴリや frontmatter の設計は早めに決めたほうが楽です。

UI フレームワークを混ぜすぎると複雑になる

React も Vue も Svelte も使えるからといって、全部混ぜると普通に管理コストが上がります。最初は1つに絞るか、そもそも Astro だけで進めるのがおすすめです。

まとめ

Astro は、コンテンツを速く、気持ちよく届けたい人にかなり向いているフレームワークです。

特に、

  • ブログを作りたい
  • 表示速度を大事にしたい
  • Markdown / MDX で記事を書きたい
  • 重すぎる構成は避けたい

という人には、本当に相性が良いです。

最初の一歩が軽くて、後からちゃんと育てられる。このバランスの良さが Astro の魅力だと思っています。

次の記事では、作った Astro サイトを Cloudflare Pages で無料デプロイする方法 を紹介します。公開まで一気に進めたい方は、あわせて読んでみてください。