GitHub と Cloudflare って何が違う?
個人サイトを20分で引っ越して分かったこと
コードの置き場所と、サイトを配る仕組みは別もの。このサイトを実際に引っ越したときの手順とつまずきから、2つの違いを説明します。
この記事は 2026年10月22日時点の情報です2026年10月21日の夜、このサイト usuilab.com の置き場所を引っ越しました。引っ越し元は GitHub Pages、引っ越し先は Cloudflare Pages です。かかった時間は20分ちょっと。サイトは一度も止まりませんでした。
「GitHub と Cloudflare って何が違うの?」は、個人で何かを公開しようとすると必ず出てくる疑問です。このノートでは、私が実際にやった引っ越しを例に、2つの違いと、引っ越しで気をつけることを書きます。
- GitHub は「コードの保管庫」、Cloudflare は「世界中に配る配送網」。Pages はどちらも、そのおまけの公開機能
- Cloudflare Pages は、コードを非公開にしたまま無料で公開できて、商用での利用にも向いている
- 引っ越しで気をつけるのは、DNS の付け替え、www の転送、404 ページ。404 がないとトップが返ってくる
そもそも役割が違う
名前が似ているので混ざりやすいのですが、2つはもともと別の仕事をしている会社です。
- GitHub:プログラムのコードを保管して、変更の履歴を残す場所。「GitHub Pages」は、そのコードをそのままウェブサイトとして公開できる、おまけの機能です
- Cloudflare:ウェブサイトを世界中に素早く配る配送網と、ドメインの管理をしている会社。「Cloudflare Pages」は、その配送網の上でサイトを公開する機能です
比べてみると
| GitHub Pages | Cloudflare Pages | |
|---|---|---|
| 料金 | 無料。非公開のコードから公開するなら有料プラン | 無料。コードは非公開のままで公開できる |
| 主な上限 | サイト全体で1GB、転送量は月100GBが目安、更新は1時間10回が目安 | 無料プランで2万ファイル、1ファイル25MB、更新は月500回 |
| 商用での利用 | 「オンラインビジネスのための無料ホスティング」としての利用は不可と明記 | とくに制限の記載なし |
| 始めやすさ | リポジトリの設定画面のボタン1つ。いちばん簡単 | 最初の連携に少し手間。そのあとは同じくらい楽 |
| うれしい機能 | — | 作業ブランチごとに確認用の URL ができる。ドメインと DNS も同じ画面で管理できる |
私が引っ越しを決めた理由は2つありました。
- コードを非公開にしたかった:作り直し中の下書きや作業ブランチまで、誰でも見られる状態だった
- 広告で収益化したかった:GitHub は「オンラインビジネスのための無料ホスティングではない」と書いている
GitHub の有料プランにすれば、非公開のまま Pages を使い続けることもできます。でも、Cloudflare なら無料でどちらも満たせるので、こちらを選びました。
引っ越しの前に、見つけてしまったもの
引っ越しの準備でリポジトリを点検したら、困ったものが見つかりました。告知文の下書きや計測の計画といった内部資料が、リポジトリだけでなく、usuilab.com/marketing/ という URL で誰でも読める状態になっていたんです。
鍵やパスワードのような秘密は入っていませんでしたが、外に見せるつもりのない文書でした。公開するフォルダから外して、手元にだけ置く場所へ移しています。
GitHub Pages では、リポジトリに置いたものは基本ぜんぶ公開される。「置き場所=公開場所」なのを忘れない。
引っ越しの手順
実際の作業は、Claude に私の Chrome を操作してもらいながら進めました。私がやったのは、GitHub の連携の許可ボタンを1回押したことだけです。
- Cloudflare で、usuilab のリポジトリとつながった公開プロジェクトを作る。GitHub 側には Cloudflare の連携アプリが入っていたので、許可を1回出すだけでつながった
- 存在しない URL に、ちゃんと「404 Not Found」を返すページを追加(理由は次の章で)
- DNS の付け替え。GitHub を指していた4行の設定を、Cloudflare が「usuilab.pages.dev を指す1行」に自動で置き換えてくれた
- 外から本当に切り替わったかを確認。トップ、記事、アプリの規約ページ、広告用のファイル(ads.txt)、sitemap まで開けることを確かめた
- GitHub Pages を止めてから、リポジトリを非公開に。そのあと main に変更を送ると、約30秒で usuilab.com に反映された
順番が大事で、先にリポジトリを非公開にすると、無料の GitHub Pages はその時点でサイトを止めてしまいます。新しい公開先で動くことを確かめてから、古いほうを止めました。
気をつけた3つのこと
1. DNS(サイトの住所録)の付け替え
DNS は、「usuilab.com はどのサーバーにある?」に答える住所録のようなものです。ここを書き換えると、訪れた人が向かう先が変わります。このサイトのドメインはもともと Cloudflare で管理していたので、Cloudflare の画面の中で付け替えが完結しました。
注意したのは、Google の Search Console の所有確認に使っている設定まで消さないことです。DNS の画面には、サイトの向き先以外の設定も並んでいます。付け替えたあと、確認用の設定が残っていることを確かめました。
2. www つきの住所を転送する
www.usuilab.com と usuilab.com は、別々の住所として扱われます。両方で同じページが見えると、検索エンジンからは同じ内容が2つあるように見えてしまいます。
なので www つきで来た人は、「恒久的に引っ越しました」という意味の301転送で、www なしのほうへ送っています。URL の後ろの部分(記事の場所)もそのまま引き継ぐので、古いリンクから来た人も迷子になりません。
3. 404 ページを用意する(これがいちばんの罠)
Cloudflare Pages には、少し意外な動きがあります。404 ページ(ファイルが見つからないときのページ)を用意していないと、存在しない URL に来た人にも、トップページを返すのです。公式ドキュメントにも、その場合はアプリとして扱い、どんな URL にもトップを返すと書かれています。
人が見るぶんには困らないように思えますが、検索エンジンから見ると「存在しないはずの URL に、毎回同じ中身のページがある」状態になります。消した記事もいつまでも残っているように見えてしまう。
そこで、方眼の紙に付箋を貼ったデザインの 404 ページを作りました。いまは存在しない URL を開くと、ちゃんと「404 Not Found」が返ります。いまのデザインの最初の試し刷りは、実はこの 404 ページでした。
引っ越して良かったこと
- コードを非公開にできた:作り直し中の下書きを、気にせず置けるようになった
- 確認用の URL が自動でできる:作業ブランチを送ると、
ブランチ名.usuilab.pages.devという確認用の URL ができる。検索に載せない指定も自動で付くので、本番と重複しない - 反映が速い:main に送ると、約30秒で本番に出る
このノートの記事も、作業ブランチの確認用 URL でスマホから見た目を確かめてから、本番に出しています。
結局、どっちを選べばいい?
- はじめて自分のページを公開してみたいGitHub Pages で十分。ボタン1つで公開できて、いちばん簡単
- コードは見せたくないCloudflare Pages。無料のまま非公開にできる
- 広告や販売でお金を得たいCloudflare Pages が安心。GitHub は商用での利用に制限がある
- 独自ドメインも一緒に管理したいCloudflare なら DNS と公開を同じ画面で扱える
このノートから持ち帰れること
サイトの置き場所を変えるときは、GitHub や Cloudflare に限らず、だいたい同じところでつまずきます。
- 「保管する場所」と「公開する場所」は分けて考える同じ場所でやると、隠したいものまで公開される。分けておけば、コードは非公開のまま、サイトだけ公開できる。ブログ、ポートフォリオ、作品の紹介ページ
- 引っ越しは「新しいほうで動く」を確かめてから、古いほうを止める順番を逆にすると、その間サイトが止まる。サーバーの移転、ドメインの付け替え、アプリのバックエンドの移行
- 公開フォルダの中身を、一度ぜんぶ見る私は内部資料が URL で読める状態になっているのを、引っ越しの準備で見つけた。GitHub Pages、静的サイト、共有フォルダ
- 「ないページ」で、本当に 404 が返るか試すCloudflare Pages は 404 ページがないとトップを返す。存在しない URL を1つ開いてみるだけで分かる。サイト公開の最後の確認
- 新しい公開先で、トップ・記事・規約・ads.txt・sitemap が開けるか
- DNS を付け替えたあと、Search Console の確認用の設定が残っているか
- www つきの住所が、301 で正しい住所に転送されるか(URL の後ろも引き継ぐか)
- 存在しない URL で 404 が返るか
- 古い公開先を止めてから、リポジトリを非公開にしたか
- 変更を送ったら、新しい公開先に自動で反映されるか
やってみよう
記事と同じことを、手元の AI で試せる指示文です。ChatGPT・Gemini・Claude のどれでも使えます。AI は毎回ちがう答えを返すので、記事とまったく同じ条件にはなりませんが、考え方の練習にはしっかり使えます。実際にやってみてください。
練習1自分のサイトの「公開されているもの」を点検する
私は個人サイトを公開しています。公開フォルダに、外に見せるつもりのないものが混ざっていないか点検したいです。 よく紛れ込むファイルやフォルダの例を10個挙げて、それぞれ見つけ方を教えてください。 (例:下書き、メモ、設定ファイル、古いバックアップ)
記事の「内部資料が URL で読めた」と同じことが、自分のサイトで起きていないか。
練習2引っ越しの手順を、自分の場合で書いてもらう
私のサイトの今の状態は次のとおりです。 (例:GitHub Pages で公開。独自ドメインあり。お問い合わせフォームは外部サービス) これを Cloudflare Pages に移すときの手順を、サイトが止まらない順番で書いてください。最後に、移したあとの確認項目も挙げてください。
「新しいほうで動くのを確かめてから、古いほうを止める」の順番になっているか。404 の確認が入っているか。
出典・参考にした情報
- GitHub Docs「GitHub Pages limits」(英語)
- Cloudflare Docs「Pages limits」(英語)
- Cloudflare Docs「Serving Pages」(404 ページがないときの動き、英語)
- 引っ越しの時刻と手順は、2026年10月21日の作業記録から
いずれも 2026年10月22日に確認しました。下書きや図づくりには AI を使っていますが、事実関係は自分で確かめてから公開しています。