Skip to content
Cloud AI エンジニア入門ガイド
Go back

12. AstroPaperのビルドとデプロイ

この章の全体像として、ビルドの中身、公開前の確認、デプロイ、続ける工夫の4つを番号順に並べ、公開して更新を取り込み続けられるようになることを示した図

シリーズ目次 前章: 11. AstroPaperでUI文言の翻訳と多言語対応

Table of contents

Open Table of contents

この章のねらい

最後に、手元で動いているサイトをインターネットへ出します。AstroPaperは静的サイトなので、やることはビルドして、できたファイルを置くだけ。ただし置く前に確かめておきたいことがいくつかあります。

記事の更新からビルド、静的ホスティングへの配信、公開後の確認までの流れを示した図

ビルドの中身をもう一度

{
  "scripts": {
    "build": "astro check && astro build && pagefind --site dist && cp -r dist/pagefind public/"
  }
}package.json

&& は、前の処理が成功したら次へ進むという意味です。どこかで失敗すれば、その時点で止まります。

順番処理内容
1astro checkTypeScriptの型、.astro ファイル、フロントマターを検査する
2astro builddist/ にHTML・CSS・JavaScript・画像を書き出す
3pagefind --site distdist/ のHTMLから検索索引を作る
4cp -r dist/pagefind public/索引を public/ へコピーする

1番目の型チェックが最初に来ているのがミソです。フロントマターの書き間違いがあれば、ここで止まります。壊れたサイトが公開される事故を防ぐ設計になっています。

型チェックだけを実行する

記事を書き終えた段階で、素早く確認したいときに使えます。

pnpm astro check

エラーがあれば、ファイル名と行番号付きで表示されます。

ビルド結果を確認する

pnpm build
pnpm preview

pnpm previewdist/ の中身をそのまま配信するので、公開後と同じ状態が見られます。検索機能を確かめられるのはこの方法だけです。

公開前のチェックリスト

項目確認内容
site.url実際に公開するURLと一致しているか
site.title / descriptionサイト名と説明が自分のものになっているか
site.author著者名が設定されているか
site.lang / timezone言語とタイムゾーンが正しいか
サンプル記事テンプレート同梱の記事を削除または差し替えたか
about.md内容を書き換えたか
favicon.svg差し替えたか
socials / shareLinks不要なリンクが残っていないか
下書きdraft: true のまま公開したい記事がないか
pnpm buildエラーなく完了するか

site.url は正規URLにもサイトマップにもRSSにもOG画像にも効きます。公開直前に必ず見直してください。

項目を設定、同梱物、最終確認の3つに束ねておくと、抜け漏れが減ります。

設定を自分のものにする、同梱物を差し替える、最後に確かめるという3つのまとまりで公開前の確認項目を並べた図

デプロイの考え方

pnpm build で作られる dist/ の中身は、ただのHTML・CSS・JavaScript・画像です。特別な実行環境は不要で、静的ファイルを配信できる場所ならどこでも公開できます。

一般的な静的ホスティングサービスでは、次の3つを指定するだけで公開できます。

設定項目
ビルドコマンドpnpm build
出力ディレクトリdist
Node.jsのバージョン22.12以上

Gitリポジトリと連携させれば、push のたびに自動でビルドと公開が走ります。記事を書いてコミットするだけで公開される、という運用になります。

指定する3項目と、公開までの流れをまとめると次のとおりです。

ビルドコマンド・出力ディレクトリ・Node.jsのバージョンという3つの設定と、pushから自動ビルドを経て公開されるまでの流れを示した図

サービス選びの観点

観点見るところ
ビルド時間の上限と回数記事が増えるとビルド時間が伸びる
Node.jsのバージョン指定22.12以上を選べるか
独自ドメイン設定できるか、証明書は自動か
定期ビルド予約公開を使うなら必要

テンプレートにはCloudflare Pages向けの設定ファイルが同梱されていますが、他のサービスでも上の3項目を設定すれば動きます。

予約公開を使う場合

第5章で書いたとおり、静的サイトでは時刻が来ても勝手には公開されません。公開されるのは、その時刻より後にビルドしたときです。

予約公開を実際に機能させるには、次のいずれかが必要です。

サブパスで公開する場合

https://example.com/blog/ のように、ドメイン直下ではない場所に置きたい場合は、Astroの base 設定を使います。

export default defineConfig({
  site: "https://example.com",
  base: "/blog",
  // ...
});astro.config.ts

AstroPaperには、この設定に対応するための補助関数が用意されています。

export function getAssetPath(path: string): string {
  const normalizedPath = path.replace(/^\/+/, "");

  if (!normalizedPath) {
    return base === "" ? "/" : base;
  }
  return baseRoot + normalizedPath;
}src/utils/withBase.ts

ファビコンやサイトマップのパスは、この関数を通して組み立てられます。だから base を設定しても、テーマ側のリンクは正しく解決されます。

ただし記事本文に直接書いた絶対パスは調整されません。サブパスで公開する予定があるなら、記事内のリンクの書き方に気をつけてください。

base が効く範囲と効かない範囲を分けておきます。

base設定でテーマ側のリンクは補助関数により自動解決される一方、記事本文に直接書いた絶対パスは調整されないことを左右に並べた図

公開後の確認

デプロイが終わったら、次を実際にブラウザで確認します。

確認先見るところ
トップページ記事一覧が正しく出ているか
記事詳細本文、画像、コードブロックの表示
/search/検索して結果が出るか
/rss.xmlXMLが表示されるか
/sitemap-index.xmlURL一覧が正しいか
/robots.txtサイトマップのURLが正しいか
/og.png画像が生成されているか
記事URL + index.png記事ごとのOG画像が生成されているか
ダークモード切り替えが機能するか

SNSでの見え方は、各サービスのカード検証ツールで確認できます。OGP情報を更新してもキャッシュが残って古い画像が出ることがあるので、検証ツールから再取得を指示してください。

継続的な運用

更新の流れ

  1. src/content/posts/ に記事を追加する
  2. pnpm dev で確認する
  3. pnpm build が通ることを確認する
  4. コミットして push する
  5. 自動ビルドの結果を確認する

3番目を習慣にしておいてください。公開直前に型エラーが出ると、いちばん面倒です。

コードの整形と検査

テンプレートにはPrettierとESLintが同梱されています。

pnpm format        # 整形する
pnpm format:check  # 整形が必要か確認する
pnpm lint          # 問題のある書き方を検出する

Markdownファイルも整形の対象なので、表の桁がそろわないといった乱れも直ります。

テーマの更新を取り込む

AstroPaperは今後も更新されます。新機能や修正を取り込みたい場合は、リポジトリの変更履歴を確認して、必要な差分を手作業で反映するのが基本です。

このときテーマ本体のファイルをどれだけ書き換えたかが効いてきます。astro-paper.config.tstheme.cssi18n/lang/ の範囲に収まっていれば、取り込みは楽です。コンポーネントを大きく改造していると、差分の突き合わせで泣きます。

カスタマイズするときは、まず設定で実現できないかを考える。長く付き合うならこれです。

改造がどこまで及んでいるかで、更新の取り込みやすさが変わります。

設定ファイル、配色と翻訳、コンポーネントの改造という3段階を上から並べ、深くなるほどテーマ更新の取り込みが難しくなることを示した図

シリーズのまとめ

12章を通じて、AstroPaperの全体像を見てきました。

学んだこと
テーマの立ち位置と価値観第1章
環境構築と主要コマンド第2章
ファイル配置の地図第3章
設定ファイルの全項目第4章
記事の書き方と公開制御第5章
URL設計とタグ設計第6章
Markdown表現とアセット第7章
配色のカスタマイズ第8章
検索とフィード第9章
OG画像とSEO第10章
UI文言の翻訳第11章
ビルドとデプロイ第12章

AstroPaperは、コードを読み切れる規模に収まっているテーマです。分からないことがあったら、このシリーズで紹介したソースファイルを開いてください。たいてい答えはそこに数十行で書いてあります。

要点

参考資料


シリーズ目次 前章: 11. AstroPaperでUI文言の翻訳と多言語対応


Share this post:

Previous Post
00. ChatGPT徹底入門シリーズ 目次
Next Post
11. AstroPaperでUI文言の翻訳と多言語対応