Astro で技術ブログを作ってみた


ずっと「ブログ書きたいな」と思いながら後回しにしてたんですが、ようやく重い腰を上げてブログ(takeisa.dev)を作りました。

今回はClaude Code(CC)と一緒にやりました。技術選定から実装とデザイン調整をしてリリースまで2日ちょっとでした。

設計壁打ちと方針変更などの判断のみで、実装は殆どやってくれました。凄い時代ですね。

使った技術

  • Astro — フレームワーク。コンテンツサイト向けで速い
  • Keystatic — ローカルファイルベースの CMS。記事をブラウザから編集できる
  • Tailwind CSS — スタイリング
  • Vercel — ホスティング。GitHub 連携で push するだけでデプロイ

なぜ Astro?

Next.js は昔少し触っことがあるんですが、ブログに使うにはちょっとオーバースペックかなと。

Astro はコンテンツサイト向けに特化されてて、デフォルトで JavaScript をほぼ出力しない。つまりめちゃくちゃ速い。それだけで採用理由として十分でした。

セットアップはこれだけ

npm create astro@latest . -- --template blog

テンプレートを使えば MDX サポートやサイトマップ生成が最初から入った状態で始められます。ここからカスタマイズしていく感じ。

記事の管理

src/content/blog/ に MDX ファイルを置くだけ。frontmatter にタイトルと日付を書けば記事として認識されます。

---
title: 記事タイトル
pubDate: 2026-03-01
tags:
  - Astro
---

ここに本文を書く

シンプルでいい。

管理画面(Keystatic)

ファイルを直接触るのもいいけど、せっかくなので CMS も入れました。Keystatic というツールで、記事を /keystatic というパスのブラウザ上の GUI から書いたり編集したりできます。

ファイルの実態は MDX のままなので、Git でそのまま管理できるのがいい。「CMS を使う」と「直接ファイルを触る」を気分で使い分けられる。

データベースは不要で、記事はすべてリポジトリ内のファイルとして保存されます。本番でも使えるように GitHub 認証をかけてます。

その他に拘ったポイント

全体的にシンプルなデザインにしました。

個人的に活力溢れるオレンジ色が好きなので、アクセントカラーに使いました。

デプロイは Vercel に投げる

GitHub リポジトリを Vercel に連携するだけで完了。push するたびに勝手にビルドして反映してくれます。

ただ Keystatic の管理画面を本番で使えるようにするのが地味に大変でした。

まず Keystatic の GitHub 連携には OAuth App ではなく GitHub App が必要でした。最初 OAuth App で設定したんですが、認証後に Authorization failed が出て詰まりました。原因はトークンのレスポンスに refresh_token が含まれないため。GitHub App に切り替えて解決しました。

他にも Vercel のサーバーレス環境では内部的なホストが localhost になるため、redirect_urihttps://localhost/... になってしまう問題もありました。Astro の security.allowedDomains に本番ドメインを指定することで解決。

地味にはまりポイントが多かったので、同じ構成で詰まってる人の参考になれば。

作ってみて

思ってたより全然ラクでした。デザインをゼロから作るのが一番時間かかったくらいで、Astro 自体は詰まるところがほぼなかったです。