結論
- 会社案内・サービス紹介・記事のように「誰が見ても同じ内容」のサイトは、あらかじめHTMLに書き出しておく静的サイトにできます。書き出したファイルをCDNのホスティングに置けば、自分でサーバーを借りて保守する必要がなくなります。
- 構成は「原稿(Markdown等)→ 静的サイトジェネレーターでビルド → ホスティングに公開 → 独自ドメインを割り当て」の一本道です。公開のしかたは、手元でビルドしてコマンドで直接アップロードする方法と、Gitリポジトリにpushしてホスティング側に自動でビルドさせる方法の2通りがあります。
- 静的ホスティングには無料の枠を設けている事業者が複数あり、その枠に収まる規模なら、継続してかかる費用は独自ドメインの登録・更新だけ、という構成が成り立ちます。無料枠の条件は変わるので、公式の制限ページで確認します。
- 予約、会員ログイン、決済、頻繁な更新を複数人が管理画面から行う、といった要件があるなら、この構成だけでは足りません。
1. 静的サイトとCMS型サイトの違い
| 観点 | 静的サイト+CDNホスティング | サーバーで動くCMS型 |
|---|---|---|
| ページの作られ方 | 公開前にHTMLへ書き出しておく | アクセスのたびにサーバーのプログラムとデータベースが組み立てる |
| 保守するもの | 原稿とビルドの設定 | サーバー、CMS本体、プラグイン、データベースの更新 |
| 更新の方法 | ファイルを編集してビルドし、公開し直す(コマンド、またはGitにpush) | 管理画面から入力 |
| 向いている内容 | 会社案内、記事、資料、手順書 | 予約、会員機能、複数人が管理画面で更新するサイト |
どちらが優れているかではなく、サイトに必要な機能で決まります。
2. 部品ごとの説明
静的サイトジェネレーター(例: Astro)
Astroの公式ドキュメントは、自らをブログ・マーケティングサイトなど「コンテンツ中心のウェブサイト」のためのフレームワークと説明しています。特徴として挙げているのは次の点です。
- できる限りブラウザ側ではなくサーバー側でHTMLにする(Server-first)
- 既定ではブラウザに送るJavaScriptをゼロにする(Zero JS, by default)
- 動きが必要な部分だけを「アイランド」として個別に組み込める
CDNのホスティング(例: Cloudflare Workersの静的アセット/Cloudflare Pages)
Cloudflareには静的サイトを置く方法が2つあります。Astro公式のデプロイガイドには「Cloudflareは新しいプロジェクトにはCloudflare Workersの利用を勧めている」との記載があるため、先にWorkersを説明します。
Workersの静的アセット:静的サイトだけならAstro側のアダプターは不要です(アダプターが要るのはオンデマンドレンダリングを使う場合)。設定ファイル(wrangler)の assets.directory に ./dist を指定し、次の2つのコマンドで公開します。
| 項目 | 値 |
|---|---|
| ビルドコマンド | npx astro build |
| 公開コマンド | npx wrangler deploy |
| 出力ディレクトリ | dist |
| 自動化 | リポジトリを接続してpushのたびに同じ2コマンドを実行させることもできる(Workers Builds) |
Cloudflareのドキュメントに記載されている静的アセットの主な条件は次のとおりです(取得日時点)。
| 項目 | 内容 |
|---|---|
| 静的アセットへのリクエスト | 無料で無制限(Workerのスクリプトを呼ぶリクエストはWorkersの料金体系に従う) |
| 1バージョンあたりのファイル数 | 無料プランで20,000 |
| 1ファイルの大きさ | 25 MiB |
Pages:Cloudflareの公式ガイドでは、AstroのサイトをPagesに置くときの設定は次のとおりです。
| 項目 | 値 |
|---|---|
| ビルドコマンド | npm run build |
| 出力ディレクトリ | dist |
| 連携 | GitHub等のリポジトリを接続すると、pushのたびにビルドと公開が行われる |
| プレビュー | プルリクエストごとにプレビュー用のURLが作られ、本番に出す前に確認できる |
Pagesの制限ページに記載されている無料プランの主な上限は次のとおりです(取得日時点)。
| 項目 | 上限 |
|---|---|
| ビルド回数 | 月500回 |
| 同時ビルド | 1 |
| ビルドの制限時間 | 20分 |
| 1サイトのファイル数 | 20,000 |
| 1ファイルの大きさ | 25 MiB |
| 1プロジェクトの独自ドメイン | 100 |
考え方(ビルドした dist をCDNに置く)はどちらも同じです。これから始めるなら、両方の公式ガイドを読んでから選んでください。
独自ドメイン
Workersで独自ドメイン(Custom Domain)を割り当てるには、そのドメインがCloudflare上で有効なゾーンになっている(ネームサーバーをCloudflareに向けている)ことが条件です。割り当てると、DNSレコードの作成と証明書の発行はCloudflareが行います。
Pagesの場合、公式ドキュメントの説明は次のとおりです。
| 割り当てたい名前 | 必要なこと |
|---|---|
| ルートのドメイン(example.com) | ドメインのネームサーバーをCloudflareに向ける必要がある |
サブドメイン(www.example.com 等) | いまのDNS事業者のままで、プロジェクト名.pages.dev を指すCNAMEを追加すればよい |
DNSにCAAレコードを設定している場合は、Cloudflareによる証明書の発行が許可されていないと、割り当てに失敗します。
ネームサーバーを移す場合は、同じドメインでメールを使っているなら、MXレコードとSPF・DKIM・DMARCのTXTレコードを移行先にも漏れなく登録します。
3. 手順の全体像
- 要件を確認する(4節の表で「静的で足りるか」を判定)
- ドメインを登録する(登録と更新が継続費用になる)
- 手元でサイトを作り、
npm run buildでdistが出ることを確認する - 原稿と設定をGitリポジトリで管理する(履歴とバックアップを兼ねる)
- 公開する(コマンドで
distを直接アップロードする、またはホスティングにリポジトリを接続してビルドコマンドと出力ディレクトリを設定する) - 発行されたURLで表示を確認する
- 独自ドメインを割り当て、DNSを設定する
- 問い合わせ手段を決める(メールアドレスの掲載、外部のフォームサービス等)
4. 確認表
| # | 確認すること | 判定 |
|---|---|---|
| 1 | 全員に同じ内容を見せるページが中心か | はい→静的で可 |
| 2 | 予約・会員ログイン・決済を自分のサイト内に持つ必要があるか | はい→静的だけでは不足 |
| 3 | 更新する人はファイル編集とGitの操作ができるか(または覚える意思があるか) | いいえ→管理画面のあるCMS型を検討 |
| 4 | ホスティング側でビルドさせる場合、更新頻度は月間ビルド回数の上限に収まるか | 公式の制限ページで確認 |
| 5 | ファイル数・1ファイルの大きさは上限に収まるか(動画や大きなPDFに注意) | 同上 |
| 6 | 同じドメインのメールのDNSレコードを控えたか | ネームサーバー移行前に必須 |
| 7 | 原稿とリポジトリのバックアップがあるか | ホスティングを替えても再公開できる状態か |
| 8 | 無料枠の条件が変わったときの移行先を想定しているか | dist は他の静的ホスティングにもそのまま置ける |
出典(取得日: 2026-09-20)
- Astro Docs “Why Astro?” https://docs.astro.build/en/concepts/why-astro/
- Astro Docs “Deploy your Astro Site to Cloudflare” https://docs.astro.build/en/guides/deploy/cloudflare/
- Cloudflare Pages “Deploy an Astro site” https://developers.cloudflare.com/pages/framework-guides/deploy-an-astro-site/
- Cloudflare Pages “Limits” https://developers.cloudflare.com/pages/platform/limits/
- Cloudflare Pages “Custom domains” https://developers.cloudflare.com/pages/configuration/custom-domains/
- Cloudflare Workers “Static Assets: Billing and Limitations” https://developers.cloudflare.com/workers/static-assets/billing-and-limitations/
- Cloudflare Workers “Limits” https://developers.cloudflare.com/workers/platform/limits/
- Cloudflare Workers “Custom Domains” https://developers.cloudflare.com/workers/configuration/routing/custom-domains/