Astro で始めるオウンドメディア構築

はじめに

Astro はコンテンツ駆動の Web サイトに最適化されたフレームワークです。デフォルトで JavaScript をクライアントに送らないため、ページの読み込みが高速になります。

ポイント: Astro は「アイランドアーキテクチャ」を採用しています。ページの大部分は静的 HTML として配信され、インタラクティブな部分だけが JavaScript で動作します。

なぜ Astro + Pico.css なのか

以下の理由から、この組み合わせはオウンドメディアに最適です。

観点AstroPico.css
パフォーマンスゼロ JS がデフォルト軽量(約 10KB gzip)
学習コストHTML/Markdown ベースクラス名不要
SEO静的 HTML 出力セマンティック HTML
メンテナンスContent Collectionsスタイル自動適用

セットアップ手順

1. プロジェクトの作成

npm create astro@latest my-media -- --template minimal
cd my-media
npm install @picocss/pico

2. Content Collection の設定

Content Collection を使うことで、Markdown 記事に型安全なフロントマターを定義できます。

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

const posts = defineCollection({
  loader: glob({ pattern: '**/*.md', base: './src/content/posts' }),
  schema: z.object({
    title: z.string(),
    description: z.string(),
    pubDate: z.coerce.date(),
    tags: z.array(z.string()).default([]),
  }),
});

export const collections = { posts };

3. レイアウトの作成

Pico.css は semantic HTML 要素にスタイルを自動適用するため、<article><header><nav> などの要素をそのまま使うだけで整ったデザインになります。

記事の書き方

Markdown ファイルにフロントマターを書いて src/content/posts/ に置くだけです。

---
title: "記事タイトル"
description: "記事の説明"
pubDate: 2026-01-15
tags: ["tag1", "tag2"]
---

本文をここに書きます。

Markdown を書くだけで、CSS を一切触ることなく記事を公開できます。これがこのアーキテクチャの最大の利点です。

まとめ

Astro のアーキテクチャ