Featured image of post Astroの全自動ビルドに感動。Hugoから移行して気づいたCI/CDの真実

Astroの全自動ビルドに感動。Hugoから移行して気づいたCI/CDの真実

「え? Astroって、pushするだけで良いの……?」 これ、Hugoから移行したばかりの私が最初に漏らした本音です。

今まで当たり前のように「ビルドして、ファイルをアップロードして……」という作業を繰り返していた自分にとって、Astroのビルド挙動はまさに「魔法」のように感じました。

今回は、自分がハマったポイントも含めて、Astroのビルド挙動のリアルを備忘録として残しておきます。

なぜ本番環境に「localhost」が混ざらないのか? Viteの分離設計に救われる

今までHugoを使っていた時、一番怖かったのが「リンク切れ」でした。 ローカルでプレビューした時の localhost というURLが、うっかり本番ファイルに焼き付いてしまう……なんて事故、身に覚えがある人も多いはず。

Astro(というか構成要素の Vite)はこの「開発」と「本番」が完全に切り離されています。

  • 開発モード: メモリ上で一時的に動くだけ。ファイルは書き出さない。
  • 本番モード: 専用のコマンドで、ゼロからクリーンに本番用ファイルを生成する。

この「分断」のおかげで、開発中にどんなに localhost で暴れ回っても、公開されるファイルが汚染される心配がないんです。

これだけでも、精神衛生上めちゃくちゃプラスですよね。

「手動ビルド」はもう古い。GitHub Actions という頼れる相棒

Astroの真のパワーは、GitHub Actionsと組み合わせた時に発揮されます。 ぶっちゃけ、自分の手元で npm run build を打つ必要すらありません。

  1. ソースをPush: 記事を書いて GitHubに投げるだけ。
  2. クラウドでビルド: GitHub側のサーバーが勝手に立ち上がり、ビルドを実行。
  3. 自動デプロイ: 完成したファイルだけを本番サーバーへ自動転送。

ワイはこの仕組みを知ってから、ローカル環境は完全に「プレビュー用」と割り切って使うようになりました。

「ビルドし忘れて古い記事が上がったままだった……」なんていう人為的なミスが、物理的に起こらなくなるからです。

それでも「ローカルビルド」が必要な時。保険としての最終チェック

基本は「書いて、投げる」だけで良いんですが、稀に手元でビルドしなきゃいけない場面もあります。

  • バージョンアップ時: Astro自身のアップデートでビルドが壊れていないか確認。
  • 複雑なデータ連携をした時: dev では動いても build でコケるケース(パスの指定ミスなど)の最終チェック。

こうした「保険」の使い分けができるようになると、運用の安定感がぐっと増すと感じています。

【重要】ハマりポイント! 記事の日付が「ビルド時間」に上書きされる謎

これ、一番驚いたポイントです。 トレンド記事の並び順がぐちゃぐちゃになって、「あれ? 今ビルドした瞬間の時間が記事の日付になってる?」と気づきました。

原因は、Astro(特に使用テーマの仕様)の**「日付の認識ルール」**にありました。

GitHub Actions はビルドのたびに新しい環境を作るため、ファイルのタイムスタンプが「今」になってしまいます。

フロントマターで日付が正しく指定されていないと、AIが「あ、日付未設定なら今の時間を入れとこうか」とフォールバックを働かせてしまうんです。

解決策は「明示的なキー指定」

今回私がハマったテーマでは、一般的な date: ではなく publishDate: というキーを要求していました。

全ての記事を publishDate: に書き換えることで、ビルド時間に左右されない正しいソート順を取り戻せました。


まとめ:これからの開発体験(DX)について

私が今回得た教訓は、「自動化できるところは、徹底的にシステムに任せるべき」だということです。

手動ビルドからの解放は、単に「楽になる」だけじゃなく、「記事の中身そのもの」に集中できる時間を増やしてくれます。 オンデバイスAIや次世代のビルドエンジンが主流になる未来では、こうした「インフラの存在を忘れるほどの快適さ」が当たり前になっていくのかもしれませんね。

自分もその進化に取り残されないよう、データ基盤を整えつつ、次の一手を考えていきたい。 そう強く思った備忘録でした。