TECH LAB
Astro Content Collectionsで記事管理システムを構築した話
DEV TOOLS

Astro Content Collectionsで記事管理システムを構築した話

道ゐ / Dowie 2026年1月10日 5 min read
Scroll

このブログ、実はAstroのContent Collectionsで動いてる。

型安全で、Markdownで書けて、デザイン変更が一箇所で済む。ブログ記事管理システムを構築した時の実装メモを残しておく。

Astro
Astro Content Collections
Code

なぜContent Collectionsか

型安全、Markdown対応、自動ルーティング。ブログ構築に必要なものが全部揃ってる。

🤖
あいぼー
Content Collectionsって何なん?
普通にMarkdownファイル置くのと何が違うん?
道ゐちゃん
道ゐちゃん
型安全なのが一番デカい。

Zodでスキーマを定義すると、frontmatterの型が保証される。「titleが必須」「dateはDate型」みたいに。

間違った形式で書いたらビルド時にエラーになるから、本番でバグが出ない。
1
config.tsでスキーマ定義
自動
ルーティング生成
型安全
TypeScript連携
1箇所
デザイン変更
Schema
01

スキーマを定義する

src/content/config.tsでZodを使ってスキーマを定義。

title、date、description、tags…必要なfrontmatter項目を全部ここで指定する。

これがあると、VSCodeで補完も効くし、タイポも防げる。

02

動的ルーティング

/tech/[slug].astroで記事ページを自動生成。

getStaticPathsでコレクション内の全記事を取得して、各記事ページを生成する。

新しい記事を追加しても、ルーティングの設定は不要。

Routing
🤖
あいぼー
デザイン変更が一箇所で済むってどういうこと?
道ゐちゃん
道ゐちゃん
PostLayoutコンポーネントに全部集約してるんよ。

1ヘッダー画像の表示
2タイトル、日付、タグの配置
3本文のスタイリング
4関連記事の表示

デザインを変えたくなったらPostLayoutだけ修正すれば、全記事に反映される。これが最高に楽。
ASTRO
"

Content Collectionsは小〜中規模のブログに最適。型安全でMarkdownで書けて、デザイン変更が一箇所で済む。セットアップも簡単だった。

— 実装してみた感想

やったこと

1

config.tsでスキーマ定義

Zodを使ってfrontmatterの型を定義。title、date、description、tags、heroImage…全部ここで。

2

動的ルーティング設定

/tech/[slug].astroで記事ページを自動生成。getStaticPathsでコレクション内の全記事を取得。

3

PostLayoutで一元管理

Geminiのアドバイスを採用し、デザインはPostLayout.astroに集約。変更が一箇所で済む。

Content Collectionsの良かった点

  • 01 型安全でエラーが事前に分かる。ビルド時に検出されるから本番で安心。
  • 02 Markdownで書けるので執筆に集中できる。フォーマットを気にしなくていい。
  • 03 デザイン変更が一箇所で済む。PostLayoutを修正すれば全記事に反映。

まとめ

Content Collectionsはブログ構築に最適

型安全、Markdown対応、自動ルーティング、一元管理…必要なものが全部揃ってる。セットアップも公式ドキュメント見ながら1時間くらいで終わった。

このブログもContent Collectionsで動いてる。小〜中規模のブログにはおすすめ。


関連記事

Author

道ゐ / Dowie

Music Producer

音楽スタジオ運営 / A-Sketch新人発掘担当。AIツールを活用した効率的なコンテンツ制作を日々研究しています。