発展LESSON 21

この教材で学ぶこと 静的サイトの配信先を、制限・運用・将来性から比較します。

GitHub PagesとCloudflare Pages比較 — 静的サイト配信の選び方

静的サイトの公開先を選ぶときは、単純な表示速度だけでなく、デプロイ方法・プレビュー環境・配信制御・将来の動的機能・運用の複雑さを比較します。

数値やプランは変更されることがあります。本稿の制限値は2026年9月時点の公式ドキュメントを基準にしています。導入時には必ず最新情報を確認してください。

最初に整理する3つの構成

「Cloudflareを使う」という表現には、異なる構成が含まれます。

1. GitHub Pagesだけで配信

Browser
  └─ GitHub Pages edge
       └─ Static HTML / CSS / JavaScript / Images

Gitのbranchから静的ファイルを公開する、最も単純な構成です。GitHub Pagesはcustom domainとHTTPS enforcementに対応しています。

2. Cloudflare Pagesへ移行

Browser
  └─ Cloudflare Pages
       └─ Static assets
       └─ Pages Functions(必要な場合だけ)

hosting先そのものをCloudflareへ変更します。Git連携、preview deployment、CloudflareのDNS・Rules・Workers ecosystemをまとめて使えます。

3. GitHub Pagesの前段にCloudflareを追加

Browser
  └─ Cloudflare proxy / CDN
       └─ GitHub Pages edge
            └─ Static assets

hostingはGitHub Pagesのまま、Cloudflareをreverse proxyとして追加する構成です。WAFやcache ruleを利用できますが、CDNが二重になるため、cache・TLS・障害の切り分けは複雑になります。

機能比較

観点 GitHub Pages Cloudflare Pages
得意な用途 documentation、portfolio、小規模な静的サイト 静的サイト、preview中心の開発、edge機能を使うサイト
配信 GitHubのmanaged static hosting Cloudflareのglobal network
custom domain・HTTPS 対応 対応
Git連携 branchまたはGitHub Actionsから公開 GitHub・GitLabと連携して自動build・deploy
preview 標準機能は限定的。workflowで補う branch・PRごとの固有preview URL
redirect・header制御 制約が多い _redirects、_headers、Rulesを利用可能
動的処理 原則として静的配信のみ Pages Functions / Workersを追加可能
security制御 platform側のmanaged protection WAF、rate limiting、bot対策等と統合しやすい
運用負荷 小さい 機能が増える分、設定項目も増える

主な制限を比較する

GitHub Pages

GitHub Pagesの公式制限では、主に次の基準が示されています。

  • 公開サイトは最大1 GB
  • 月100 GBのsoft bandwidth limit
  • deploymentは10分でtimeout
  • buildはsoft limitとして1時間あたり10回。ただしcustom GitHub Actions workflowによるbuildには適用されない

通常のportfolioや技術文書では十分大きな枠です。上限に近づいた場合、GitHubは第三者CDNや別hostingへの移行も選択肢として案内しています。

Cloudflare Pages

Cloudflare Pagesの公式制限では、Free planに次の基準があります。

  • 月500 builds
  • build timeoutは20分
  • 1 siteあたり20,000 files
  • 1 assetあたり最大25 MiB
  • 1 projectあたり100 custom domains

Pages Functionsの料金説明では、Functionsを通らないstatic asset requestはFree・Paidとも無料かつ無制限です。Functionsを使うrequestはWorkersのquota・料金体系で計算されます。

Cloudflare Pagesが強いところ

Preview deployment

Git連携したCloudflare Pagesでは、branchやpull requestごとにproductionへ影響しないURLを作れます。previewには既定でX-Robots-Tag: noindexが付与され、検索結果の重複も抑えられます。

デザイン確認や記事レビューをproduction公開前に行いたい場合に有効です。

Edge機能への発展

Pages Functionsを利用すると、専用serverを管理せずに次の機能を追加できます。

  • form受付
  • authentication
  • middleware
  • API endpoint
  • Workers KV・D1・R2等との連携

ただし、静的サイトに必要のないFunctionsを追加すると、security boundary、料金、障害点も増えます。必要になった機能だけを追加します。

DNSとRulesの統合

Cloudflare Pagesをapex domainで利用する場合、そのdomainをCloudflare zoneへ追加し、authoritative nameserverをCloudflareへ向けます。subdomainだけなら外部DNSからCNAMEで接続できます。詳しくはCustom domainsを確認してください。

DNSを移管すると、redirect、WAF、cache、DNSSECなどを同じ管理画面で扱いやすくなります。一方、DNS変更の影響範囲が大きくなるため、mail用recordやdomain verification recordまで事前に棚卸しする必要があります。

GitHub Pagesが強いところ

構成が単純

静的ファイルをGitで管理して公開するだけなら、GitHub Pagesは部品が少なく、障害調査も容易です。

Source / generated files
  └─ Git push
       └─ GitHub Pages deployment
            └─ Public site

DB、authentication、form、server-side APIがないサイトでは、この単純さ自体がsecurityと保守性の利点になります。

GitHub中心の運用と相性がよい

repository、Actions、Pages deployment、rollback対象のcommitをGitHub内で確認できます。公開物をGitのcommitとして固定したいdocumentationやportfolioに向いています。

選定フロー

次の順番で判断します。

完全な静的サイトか?
  ├─ Yes
  │   ├─ PR previewやCloudflare Rulesが必要か?
  │   │   ├─ No  → GitHub Pages
  │   │   └─ Yes → Cloudflare Pagesを検討
  │   └─ bandwidthやfile limitに近いか?
  │       ├─ No  → 現状維持
  │       └─ Yes → CDN追加またはhosting移行を比較
  └─ No
      ├─ 小規模なedge functionで足りる → Cloudflare Pages / Workers
      └─ 常駐serverや複雑なbackendが必要 → 別のapplication hostingも比較

ケーススタディ:小規模なAstro学習サイト

AstroでbuildしたHTML・CSS・画像を配信し、login、DB、form、server-side APIを持たない学習サイトを考えます。

この段階ではGitHub Pagesを選ぶ合理性があります。

  • build後は静的ファイルだけ
  • attack surfaceが小さい
  • Git commitをそのままrelease単位にできる
  • CDN、custom domain、HTTPSがすでに利用できる
  • Cloudflareを重ねても体感速度の改善が小さい可能性がある

一方、次の要件が生まれたらCloudflare Pagesへの移行を再評価します。

  • 学習進捗を複数端末で同期する
  • 教材検索APIを提供する
  • 問い合わせや回答送信を受け付ける
  • PRごとのpreviewを共有する
  • WAF、rate limiting、redirect ruleを細かく制御する

移行前のチェックリスト

hostingを変更するときは、機能比較だけでなくrollbackまで設計します。

  • 現在のDNS recordをすべて保存した
  • custom domainの所有確認方法を理解した
  • wwwとapex domainのredirect先を決めた
  • canonical URLとsitemapが変わらないことを確認した
  • CAA recordが新しい証明書発行元を許可している
  • preview URLへnoindexが付くことを確認した
  • cache purgeと更新反映の手順を決めた
  • 旧hostingへ戻すDNS・deployment手順を用意した
  • production切替前に一時URLで全ページを検証した

まとめ

  • GitHub Pagesは、静的サイトを少ない構成要素で公開したい場合に強い
  • Cloudflare Pagesは、preview、Rules、Workers ecosystemへ発展させたい場合に強い
  • GitHub Pagesの前段へCloudflareを置く構成は、WAF等の目的が明確な場合に限って検討する
  • 「CDNを追加すれば必ず速くなる」ではなく、現在の配信経路と必要な機能から選ぶ

まず最小の構成で公開し、実測した課題が生まれてから構成を増やすことが、静的サイト運用では重要です。