<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>デプロイ手順  |  Python-memo｜自動化・AI・Web開発の実験室</title>
	<atom:link href="https://python.cbagames.jp/tag/%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e6%89%8b%e9%a0%86/feed/" rel="self" type="application/rss+xml" />
	<link>https://python.cbagames.jp</link>
	<description>Pythonで、できるをふやそう。</description>
	<lastBuildDate>Mon, 09 Jun 2025 02:49:24 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://python.cbagames.jp/wp-content/uploads/2025/06/cropped-497d491d54402de785c9e043bfa0620a-32x32.png</url>
	<title>デプロイ手順  |  Python-memo｜自動化・AI・Web開発の実験室</title>
	<link>https://python.cbagames.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cloudflare PagesとPython APIを連携！Jamstack構成でWebアプリを公開する手順</title>
		<link>https://python.cbagames.jp/2025/06/09/cloudflare-pages-python-api-jamstack/</link>
					<comments>https://python.cbagames.jp/2025/06/09/cloudflare-pages-python-api-jamstack/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Mon, 09 Jun 2025 02:46:34 +0000</pubDate>
				<category><![CDATA[Webアプリ開発]]></category>
		<category><![CDATA[API連携]]></category>
		<category><![CDATA[Cloudflare Pages]]></category>
		<category><![CDATA[Jamstack]]></category>
		<category><![CDATA[Python API]]></category>
		<category><![CDATA[デプロイ手順]]></category>
		<category><![CDATA[静的サイト]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=190</guid>

					<description><![CDATA[目次 1. はじめに｜Cloudflare Pages × Python APIって何ができるの？🔧こんな人におすすめ！🌟この記事でわかること2. Jamstackとは？構成の基本をおさらい💡Jamstackって何の略？ [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2"><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1. はじめに｜Cloudflare Pages × Python APIって何ができるの？</a><ol><li><a href="#toc2" tabindex="0">🔧こんな人におすすめ！</a></li><li><a href="#toc3" tabindex="0">🌟この記事でわかること</a></li></ol></li><li><a href="#toc4" tabindex="0">2. Jamstackとは？構成の基本をおさらい</a><ol><li><a href="#toc5" tabindex="0">💡Jamstackって何の略？</a></li><li><a href="#toc6" tabindex="0">🚀Jamstack構成のメリット</a></li><li><a href="#toc7" tabindex="0">🔧よくあるJamstackの例</a></li></ol></li><li><a href="#toc8" tabindex="0">3. Cloudflare Pagesとは？無料で使える高速ホスティング</a><ol><li><a href="#toc9" tabindex="0">🌀Cloudflare Pagesってなに？</a><ol><li><a href="#toc10" tabindex="0">できることはこんな感じ：</a></li></ol></li><li><a href="#toc11" tabindex="0">🌟Cloudflare Pagesのメリットまとめ</a></li><li><a href="#toc12" tabindex="0">📂静的サイトってどんなもの？</a></li><li><a href="#toc13" tabindex="0">🤔でも、Pythonのバックエンドはどうするの？</a></li></ol></li><li><a href="#toc14" tabindex="0">4. PythonでAPIを作る｜FastAPIを例に解説</a><ol><li><a href="#toc15" tabindex="0">🐍FastAPIってなに？</a></li><li><a href="#toc16" tabindex="0">🛠️準備するもの</a></li><li><a href="#toc17" tabindex="0">📦最小構成のAPIコードを書いてみよう</a></li><li><a href="#toc18" tabindex="0">🚀ローカルで起動してみよう</a></li><li><a href="#toc19" tabindex="0">🌐Swagger UIでAPIを試せる！</a></li></ol></li><li><a href="#toc20" tabindex="0">5. Python APIをCloudflare Workersにデプロイする手順</a><ol><li><a href="#toc21" tabindex="0">😥 でもちょっと待って！Cloudflare WorkersってPython動くの？</a></li><li><a href="#toc22" tabindex="0">✅ Python API公開の3つの選択肢（Cloudflare Pagesと相性◎）</a></li><li><a href="#toc23" tabindex="0">🚀ステップ1：Render.comでFastAPIを公開しよう</a><ol><li><a href="#toc24" tabindex="0">1. GitHubにFastAPIのコードをアップ</a></li><li><a href="#toc25" tabindex="0">2. Renderで新しいWebサービスを作成</a></li><li><a href="#toc26" tabindex="0">3. 数分待つと、自動でAPIが公開されるURLが発行されます！</a></li></ol></li><li><a href="#toc27" tabindex="0">🔗ステップ2：Cloudflare Pagesの静的フロントと連携</a></li></ol></li><li><a href="#toc28" tabindex="0">6. Cloudflare PagesとAPIを統合する</a><ol><li><a href="#toc29" tabindex="0">🎨ステップ1：フロントエンドを作成しよう</a></li><li><a href="#toc30" tabindex="0">📦ステップ2：Cloudflare Pagesにデプロイ</a><ol><li><a href="#toc31" tabindex="0">手順：</a></li></ol></li><li><a href="#toc32" tabindex="0">🔗ステップ3：APIとつなげて動作確認！</a></li><li><a href="#toc33" tabindex="0">🔐ステップ4：環境変数やAPIの保護（補足）</a></li></ol></li><li><a href="#toc34" tabindex="0">7. 公開と動作確認｜デプロイ後のチェックポイント</a><ol><li><a href="#toc35" tabindex="0">✅1. 公開URLの確認</a></li><li><a href="#toc36" tabindex="0">✅2. APIとの通信ができているか確認</a></li><li><a href="#toc37" tabindex="0">✅3. API側でエラーが出ていないか？</a></li><li><a href="#toc38" tabindex="0">✅4. CORS（クロスオリジン）の確認</a></li><li><a href="#toc39" tabindex="0">✅5. モバイル・別ブラウザでも確認しよう</a></li><li><a href="#toc40" tabindex="0">✅6. キャッシュやHTTPS設定もチェック</a></li><li><a href="#toc41" tabindex="0">✅7. 予期しない入力にも強いか？（バリデーション）</a></li></ol></li><li><a href="#toc42" tabindex="0">8. まとめ</a><ol><li><a href="#toc43" tabindex="0">✅今回やったことまとめ</a></li><li><a href="#toc44" tabindex="0">🚀Jamstackで広がる開発の可能性</a></li><li><a href="#toc45" tabindex="0">🔄今後の展開アイデア</a></li></ol></li><li><a href="#toc46" tabindex="0">🔗あわせて読みたい（関連リンク）</a></li><li><a href="#toc47" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">1. はじめに｜Cloudflare Pages × Python APIって何ができるの？</span></h2>



<p>こんにちは！この記事では、<strong>Cloudflare PagesとPython APIを組み合わせて、最新のWebアプリを公開する方法</strong>をご紹介します。</p>



<p>最近よく聞く「<strong>Jamstack（ジャムスタック）</strong>」って言葉、知っていますか？これは、<strong>フロントエンド（見た目）を静的サイトで、バックエンド（中身の処理）をAPIで作る</strong>という新しいWeb開発の考え方なんです。</p>



<p>たとえば…</p>



<ul class="wp-block-list">
<li>Webページは<strong>Cloudflare Pages</strong>で超高速に配信！</li>



<li>データの保存や計算などの裏側処理は<strong>Pythonで作ったAPI</strong>におまかせ！</li>
</ul>



<p>というふうに、「表示」と「処理」をきれいに分けて動かせるのがJamstack構成のポイントです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc2">🔧こんな人におすすめ！</span></h3>



<ul class="wp-block-list">
<li>PythonでAPI（裏側のプログラム）を作ったけど、<strong>公開方法がよくわからない</strong>…</li>



<li><strong>Cloudflare Pagesってよく聞くけど、どう使えばいいの？</strong></li>



<li>ReactやHTMLでフロントを作ったあと、<strong>バックエンドをPythonで連携したい！</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc3">🌟この記事でわかること</span></h3>



<p>この記事では、次のようなことをステップごとにやさしく解説していきます！</p>



<ul class="wp-block-list">
<li>Cloudflare Pagesの基本とメリット</li>



<li>PythonでAPIを作る方法（FastAPIを使います）</li>



<li>静的サイトとAPIを組み合わせて公開する手順</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>「サーバーを持たずにWebアプリを作りたい！」「Pythonで書いたコードをそのままWebに活かしたい！」<br>そんな方にぴったりの内容です。</p>



<p>それでは、Cloudflare Pages × Python APIの世界へ、いっしょに一歩踏み出してみましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc4">2. Jamstackとは？構成の基本をおさらい</span></h2>



<p>「Jamstack（ジャムスタック）」って言葉、ちょっとカッコいいけど、なんだか難しそうですよね。でも、仕組みは意外とシンプルなんです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc5">💡Jamstackって何の略？</span></h3>



<p>Jamstackは、3つの要素の頭文字からできた言葉です。</p>



<ul class="wp-block-list">
<li><strong>J</strong>avaScript：動きをつける言語（ReactやVueなど）</li>



<li><strong>A</strong>PI：外部のデータや処理を呼び出す仕組み（今回はPythonで作る！）</li>



<li><strong>M</strong>arkup：HTMLなどの静的なページ</li>
</ul>



<p>つまり、「<strong>フロントエンドは静的（HTML）で高速に配信し、裏側の処理はAPIで別に用意する</strong>」というスタイルなんです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc6">🚀Jamstack構成のメリット</span></h3>



<p>なぜこの構成が人気なのか？理由はとても魅力的です。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>メリット</th><th>内容</th></tr></thead><tbody><tr><td><strong>速い！</strong></td><td>静的サイトはCDNで爆速配信されます</td></tr><tr><td><strong>安全！</strong></td><td>サーバーがないので攻撃されにくい</td></tr><tr><td><strong>スケーラブル！</strong></td><td>アクセスが増えても自動で対応できる</td></tr><tr><td><strong>柔軟！</strong></td><td>フロントとバックエンドを自由に組み合わせられる</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc7">🔧よくあるJamstackの例</span></h3>



<p>たとえば、次のような構成が人気です：</p>



<ul class="wp-block-list">
<li>フロントエンド：Next.js（Reactベース）を使ってCloudflare Pagesにホスティング</li>



<li>バックエンド：FastAPI（Python）でAPIを用意し、Cloudflare Workersや他のサーバレス環境で公開</li>
</ul>



<p>こんなふうに「見た目」と「処理」を分けて構築することで、モダンでメンテしやすいアプリが作れるんですね。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Jamstackのイメージがつかめてきたら、次はいよいよ主役のひとつ「Cloudflare Pages」について詳しく見ていきましょう！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc8">3. Cloudflare Pagesとは？無料で使える高速ホスティング</span></h2>



<p>さて、ここからはJamstack構成の「見た目」部分、つまり<strong>静的サイトのホスティング</strong>を担う「Cloudflare Pages（クラウドフレア・ページズ）」について見ていきましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc9">🌀Cloudflare Pagesってなに？</span></h3>



<p>Cloudflare Pagesは、<strong>静的なWebサイトをGitHubと連携して自動で公開できるサービス</strong>です。しかも無料プランでも十分すぎる機能が使えるので、個人開発や学習用途にもピッタリ！</p>



<h4 class="wp-block-heading"><span id="toc10">できることはこんな感じ：</span></h4>



<ul class="wp-block-list">
<li>GitHubにプッシュしたら<strong>自動でデプロイ</strong>される</li>



<li>世界中のCloudflare CDNから<strong>超高速で配信</strong></li>



<li><strong>カスタムドメイン・SSL対応も無料！</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc11">🌟Cloudflare Pagesのメリットまとめ</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>特徴</th><th>内容</th></tr></thead><tbody><tr><td><strong>無料で始められる</strong></td><td>個人開発や学習にも最適</td></tr><tr><td><strong>GitHub連携が超かんたん</strong></td><td>コードをpushするだけで公開できる</td></tr><tr><td><strong>CDNで高速配信</strong></td><td>世界中にキャッシュされてアクセスが速い</td></tr><tr><td><strong>FunctionsでサーバレスAPIも使える</strong></td><td>Node.jsベースの簡単なAPI処理ならこれでOK！</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc12">📂静的サイトってどんなもの？</span></h3>



<p>静的サイトというのは、<strong>HTML・CSS・JavaScriptなどがすでに完成した状態のファイル</strong>です。Cloudflare Pagesでは、こういったファイルをまるごとアップロードするだけで公開できます。</p>



<p>たとえば…</p>



<ul class="wp-block-list">
<li>ReactやVueなどのフレームワークでビルドしたページ</li>



<li>PelicanやHugoなどの静的ブログジェネレーターで作ったサイト</li>



<li>純粋なHTML/CSSの手書きサイト</li>
</ul>



<p>これらすべてがCloudflare Pagesに対応しています！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc13">🤔でも、Pythonのバックエンドはどうするの？</span></h3>



<p>ここがポイント。Cloudflare Pagesは「静的サイト専用」なので、<strong>Pythonのようなサーバーサイドの処理はそのままでは動かせません</strong>。</p>



<p>じゃあどうするか？<br>答えは次のセクションで詳しく紹介しますが、<strong>Python APIを別の場所にホスティングして、それをフロントから呼び出す</strong>というスタイルにするんです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc14">4. PythonでAPIを作る｜FastAPIを例に解説</span></h2>



<p>さて、ここからは「バックエンド」側のお話です。<br>Cloudflare Pagesで公開する静的なフロントエンドと連携するために、<strong>PythonでAPIを作っておく必要</strong>があります。</p>



<p>ここでは、近年大人気のフレームワーク「<strong>FastAPI（ファストエーピーアイ）</strong>」を使って、かんたんなAPIを作ってみましょう！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc15">🐍FastAPIってなに？</span></h3>



<p>FastAPIは、PythonでAPIを高速に作れる軽量フレームワークです。次のような特徴があります：</p>



<ul class="wp-block-list">
<li>書き方がシンプルで初心者でもわかりやすい！</li>



<li>自動でAPIドキュメント（Swagger UI）を作ってくれる！</li>



<li>実行がめちゃくちゃ速い！</li>
</ul>



<p>PythonでAPIを作るなら、まずこれを使っておけば間違いなしです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc16">🛠️準備するもの</span></h3>



<p>まずは環境を用意しましょう。次の手順でOKです：</p>



<pre class="wp-block-preformatted"><code># 仮想環境の作成（任意）<br>python -m venv venv<br>source venv/bin/activate  # Windowsなら venv\Scripts\activate<br><br># 必要なパッケージのインストール<br>pip install fastapi uvicorn<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc17">📦最小構成のAPIコードを書いてみよう</span></h3>



<p>次に、<code>main.py</code> という名前で以下のようなコードを作ってみましょう。</p>



<pre class="wp-block-preformatted"><code>from fastapi import FastAPI<br><br>app = FastAPI()<br><br>@app.get("/")<br>def read_root():<br>    return {"message": "こんにちは！FastAPIが動いています！"}<br><br>@app.get("/greet/{name}")<br>def greet(name: str):<br>    return {"message": f"こんにちは、{name}さん！"}<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc18">🚀ローカルで起動してみよう</span></h3>



<p>APIを実行するには、以下のコマンドを使います：</p>



<pre class="wp-block-preformatted"><code>uvicorn main:app --reload<br></code></pre>



<p>起動したら、ブラウザで次のURLにアクセスしてみましょう：</p>



<ul class="wp-block-list">
<li><a rel="noopener" target="_blank" class="" href="http://localhost:8000">http://localhost:8000</a> → トップページ</li>



<li><a rel="noopener" target="_blank" class="" href="http://localhost:8000/greet/Taro">http://localhost:8000/greet/Taro</a> → 「こんにちは、Taroさん！」と返してくれる！</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc19">🌐Swagger UIでAPIを試せる！</span></h3>



<p>FastAPIは、<a rel="noopener" target="_blank" class="" href="http://localhost:8000/docs">http://localhost:8000/docs</a> にアクセスすると、<strong>自動生成されたAPIドキュメント</strong>（Swagger UI）が表示されます。ここでAPIを直接試すこともできますよ！</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このようにして、Pythonだけで簡単に動くAPIが完成しました！<br>あとは、これをどこかに「公開」して、Cloudflare PagesのフロントエンドとつなげればOKです。</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc20">5. Python APIをCloudflare Workersにデプロイする手順</span></h2>



<p>前のセクションで作成したPythonのFastAPI。ローカルではバッチリ動きましたね！<br>でも、Webアプリとして<strong>誰でもアクセスできるようにするには「どこかに公開」する必要</strong>があります。</p>



<p>ここでは、Cloudflareが提供する**サーバーレス実行環境「Cloudflare Workers」**を使って、PythonのAPIを動かす方法を解説します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc21">😥 でもちょっと待って！Cloudflare WorkersってPython動くの？</span></h3>



<p>正直に言うと、Cloudflare Workersは**Node.jsやWebAssembly（WASM）**ベースの環境なので、<strong>そのままPythonを動かすことはできません</strong>。</p>



<p>ですが、以下の方法でPython APIを「擬似的に」クラウドに公開することができます：</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h3 class="wp-block-heading"><span id="toc22">✅ Python API公開の3つの選択肢（Cloudflare Pagesと相性◎）</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>方法</th><th>説明</th><th>難易度</th></tr></thead><tbody><tr><td><strong>① Fly.ioやRenderでFastAPIをホスト</strong></td><td>Pythonがそのまま動くクラウドにデプロイ</td><td>⭐⭐</td></tr><tr><td><strong>② Cloudflare WorkersにHTTP経由でリバースプロキシ</strong></td><td>WorkersでAPIを中継する</td><td>⭐⭐⭐</td></tr><tr><td><strong>③ WASM化されたPython実行環境を使う</strong></td><td><code>pyodide</code>や<code>micropython</code>でJS上でPython実行</td><td>⭐⭐⭐⭐</td></tr></tbody></table></figure>



<p>ここでは、一番現実的でかんたんな「①FastAPIを別クラウドにデプロイ」してから「Cloudflare Pagesのフロントエンドとつなぐ」方法を紹介します！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc23">🚀ステップ1：Render.comでFastAPIを公開しよう</span></h3>



<h4 class="wp-block-heading"><span id="toc24">1. GitHubにFastAPIのコードをアップ</span></h4>



<ol class="wp-block-list">
<li>GitHubに新しいリポジトリを作成</li>



<li><code>main.py</code> や <code>requirements.txt</code> をpush</li>
</ol>



<pre class="wp-block-preformatted"><code># requirements.txt<br>fastapi<br>uvicorn<br></code></pre>



<h4 class="wp-block-heading"><span id="toc25">2. Renderで新しいWebサービスを作成</span></h4>



<ol class="wp-block-list">
<li><a rel="noopener" target="_blank" class="" href="https://render.com/">https://render.com/</a> にアクセスして無料アカウント作成</li>



<li>Dashboard → 「New Web Service」→ GitHubを選んでリポジトリを選択</li>



<li>設定値は以下を参考に：</li>
</ol>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>項目</th><th>値</th></tr></thead><tbody><tr><td>Runtime</td><td>Python</td></tr><tr><td>Build Command</td><td><code>pip install -r requirements.txt</code></td></tr><tr><td>Start Command</td><td><code>uvicorn main:app --host 0.0.0.0 --port 10000</code></td></tr><tr><td>Environment</td><td>Web Service</td></tr><tr><td>Region</td><td>Singapore（日本から近い）</td></tr></tbody></table></figure>



<h4 class="wp-block-heading"><span id="toc26">3. 数分待つと、自動でAPIが公開されるURLが発行されます！</span></h4>



<p>例：</p>



<pre class="wp-block-preformatted"><code>https://my-fastapi-app.onrender.com/greet/Taro<br></code></pre>



<p>これで、外部からもアクセスできる「公開されたPython API」が完成しました！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc27">🔗ステップ2：Cloudflare Pagesの静的フロントと連携</span></h3>



<p>Cloudflare Pages側のJavaScriptやHTMLから、このAPIを呼び出せばOKです。</p>



<p>例（JavaScript）：</p>



<pre class="wp-block-preformatted"><code>fetch("https://my-fastapi-app.onrender.com/greet/Taro")<br>  .then(res => res.json())<br>  .then(data => console.log(data.message));<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>RenderやFly.ioでも<strong>独自ドメイン対応可能</strong>です。<br>さらにCloudflare側でDNS設定すれば、静的サイトと同じドメイン配下で統一することも可能ですよ！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc28">6. Cloudflare PagesとAPIを統合する</span></h2>



<p>ここまでで、<strong>Cloudflare Pagesで静的なフロントエンド</strong>ができて、<strong>Pythonで作ったAPIもクラウドに公開</strong>できました！</p>



<p>あとは、この2つを組み合わせて、<strong>ユーザーが操作するとAPIが動き、結果が表示される</strong>ようにすれば、JamstackなWebアプリの完成です！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc29">🎨ステップ1：フロントエンドを作成しよう</span></h3>



<p>まずは、Cloudflare Pagesにアップする**静的Webページ（HTML/JS）**を作成します。ここでは、APIと連携するシンプルなHTMLを例にしてみましょう。</p>



<pre class="wp-block-preformatted"><code>&lt;!-- index.html --><br>&lt;!DOCTYPE html><br>&lt;html lang="ja"><br>&lt;head><br>  &lt;meta charset="UTF-8" /><br>  &lt;title>Python API連携アプリ&lt;/title><br>&lt;/head><br>&lt;body><br>  &lt;h1>Python APIと連携しよう！&lt;/h1><br>  &lt;input type="text" id="name" placeholder="名前を入力してね" /><br>  &lt;button onclick="callAPI()">あいさつする&lt;/button><br>  &lt;p id="result">&lt;/p><br><br>  &lt;script><br>    async function callAPI() {<br>      const name = document.getElementById('name').value;<br>      const response = await fetch(`https://your-fastapi-app.onrender.com/greet/${name}`);<br>      const data = await response.json();<br>      document.getElementById('result').textContent = data.message;<br>    }<br>  &lt;/script><br>&lt;/body><br>&lt;/html><br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc30">📦ステップ2：Cloudflare Pagesにデプロイ</span></h3>



<p>このHTMLをGitHubにpushし、Cloudflare Pagesに連携させます。</p>



<h4 class="wp-block-heading"><span id="toc31">手順：</span></h4>



<ol class="wp-block-list">
<li>GitHubで新しいリポジトリを作成（例：<code>python-api-frontend</code>）</li>



<li><code>index.html</code> をルートに置く</li>



<li>Cloudflare Pagesにログイン → 「Create a Project」</li>



<li>GitHubのリポジトリを選ぶ</li>



<li>ビルド設定は次のように：</li>
</ol>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>項目</th><th>値</th></tr></thead><tbody><tr><td>Framework Preset</td><td>None</td></tr><tr><td>Build command</td><td>（空欄）</td></tr><tr><td>Output folder</td><td><code>/</code> または <code>.</code></td></tr></tbody></table></figure>



<p>これで、Cloudflare Pagesで静的ページがデプロイされます！<br>例：</p>



<pre class="wp-block-preformatted"><code>https://python-api-frontend.pages.dev/<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc32">🔗ステップ3：APIとつなげて動作確認！</span></h3>



<p>Cloudflare Pagesに公開されたページで、名前を入力しボタンを押すと、<strong>FastAPIで作ったAPIが呼ばれて結果が表示される</strong>ようになります！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc33">🔐ステップ4：環境変数やAPIの保護（補足）</span></h3>



<p>本番環境では以下のポイントにも注意しましょう。</p>



<ul class="wp-block-list">
<li>APIキーが必要な場合は <strong>Cloudflare Pagesの環境変数機能</strong>を使う</li>



<li>レート制限や認証を導入して、<strong>APIの濫用を防止</strong></li>



<li>CORS設定をFastAPI側で調整（<code>fastapi.middleware.cors</code>）</li>
</ul>



<p>例：</p>



<pre class="wp-block-preformatted"><code>from fastapi.middleware.cors import CORSMiddleware<br><br>app.add_middleware(<br>    CORSMiddleware,<br>    allow_origins=["https://your-pages.pages.dev"],<br>    allow_methods=["*"],<br>    allow_headers=["*"],<br>)<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これで、<strong>Cloudflare Pages + Python API</strong>を組み合わせたJamstack構成が完成です！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc34">7. 公開と動作確認｜デプロイ後のチェックポイント</span></h2>



<p>ついに！Cloudflare Pagesで静的なフロントエンドを公開し、Pythonで作ったAPIとも連携できるようになりました。</p>



<p>ここでは、「**きちんと動いているか？」「本番運用で問題が起きないか？」」をチェックするためのポイントをまとめておきます！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc35">✅1. 公開URLの確認</span></h3>



<p>まずは、Cloudflare Pagesで発行されたURLを開いてみましょう。</p>



<p>例：</p>



<pre class="wp-block-preformatted"><code>https://your-frontend-project.pages.dev/<br></code></pre>



<p>画面がちゃんと表示されているか、ボタンなどの操作ができるか確認します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc36">✅2. APIとの通信ができているか確認</span></h3>



<p>フォームやボタンを使ってAPIにリクエストを送り、<strong>結果が表示されるかどうか</strong>を確認します。</p>



<p>例：</p>



<ul class="wp-block-list">
<li>名前を入力 → 「こんにちは、◯◯さん！」と表示されたらOK！</li>



<li>ネットワークタブ（開発者ツール）でfetchリクエストが成功しているか確認</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc37">✅3. API側でエラーが出ていないか？</span></h3>



<p>RenderやFly.ioなど、APIをホスティングしているプラットフォームの管理画面で<strong>ログを確認</strong>しましょう。</p>



<ul class="wp-block-list">
<li>404や500エラーが出ていないか？</li>



<li>CORSエラーで止まっていないか？</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc38">✅4. CORS（クロスオリジン）の確認</span></h3>



<p>ブラウザからAPIを呼び出すとき、「CORS」というセキュリティ設定に引っかかって失敗することがあります。</p>



<p>FastAPI側で、以下のようなCORS設定が入っているか確認しましょう：</p>



<pre class="wp-block-preformatted"><code>from fastapi.middleware.cors import CORSMiddleware<br><br>app.add_middleware(<br>    CORSMiddleware,<br>    allow_origins=["https://your-frontend-project.pages.dev"],<br>    allow_credentials=True,<br>    allow_methods=["*"],<br>    allow_headers=["*"],<br>)<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc39">✅5. モバイル・別ブラウザでも確認しよう</span></h3>



<p>PCだけでなく、スマホや別のブラウザでも表示・操作できるか確認することで、ユーザー目線の不具合を減らせます。</p>



<ul class="wp-block-list">
<li>スマホ表示が崩れていないか？</li>



<li>入力やボタン操作がスムーズに動くか？</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc40">✅6. キャッシュやHTTPS設定もチェック</span></h3>



<p>Cloudflare Pagesは自動でHTTPS（SSL）に対応しますが、初回デプロイ後すぐはHTTPリダイレクトが効かない場合もあります。</p>



<ul class="wp-block-list">
<li><code>https://</code> で始まるURLでアクセスできるか？</li>



<li>APIや画像などもHTTPS経由で読み込まれているか？</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc41">✅7. 予期しない入力にも強いか？（バリデーション）</span></h3>



<p>予想外の入力（空欄、記号だけ、大量の文字など）でも、APIが落ちないようにチェック！</p>



<p>例：</p>



<pre class="wp-block-preformatted"><code>@app.get("/greet/{name}")<br>def greet(name: str):<br>    if not name or len(name) > 50:<br>        return {"message": "入力が正しくありません"}<br>    return {"message": f"こんにちは、{name}さん！"}<br></code></pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このように、公開後は<strong>技術的なチェック＋ユーザー体験のチェック</strong>の両方を丁寧に行うことで、安心して運用できるJamstackアプリが完成します！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2494518121553371"
     crossorigin="anonymous"></script><br />
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2494518121553371"
     data-ad-slot="2936039508"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading"><span id="toc42">8. まとめ</span></h2>



<p>ここまで、<strong>Cloudflare PagesとPython API（FastAPI）を連携</strong>して、Jamstack構成のWebアプリを作る流れを一緒に見てきました。</p>



<p>ふり返ってみると、こんなステップで構成できましたね！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc43">✅今回やったことまとめ</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>ステップ</th><th>内容</th></tr></thead><tbody><tr><td>1</td><td>Jamstackの考え方を理解</td></tr><tr><td>2</td><td>Cloudflare Pagesで静的なWebページを公開</td></tr><tr><td>3</td><td>Python（FastAPI）でAPIを作成</td></tr><tr><td>4</td><td>APIをRenderやFly.ioなどでクラウドにデプロイ</td></tr><tr><td>5</td><td>JavaScriptでAPIと連携し、動的なWebアプリに仕上げる</td></tr><tr><td>6</td><td>公開・動作確認・セキュリティチェックまでしっかり実施</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc44">🚀Jamstackで広がる開発の可能性</span></h3>



<p>Jamstack構成にすることで、<strong>速く・安全で・拡張しやすいWebアプリ</strong>を作ることができます。</p>



<ul class="wp-block-list">
<li>小規模なプロジェクトや個人アプリ</li>



<li>APIベースのSaaS</li>



<li>ブログやポートフォリオ、業務ツールなど</li>
</ul>



<p>Pythonを活かして、さまざまなサービスを軽量に実現できるのが魅力ですね！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc45">🔄今後の展開アイデア</span></h3>



<p>今回の構成をベースに、次のようなステップアップも可能です：</p>



<ul class="wp-block-list">
<li><strong>ログイン機能</strong>を追加（OAuthやJWT連携）</li>



<li><strong>データベース（PostgreSQLなど）と接続</strong>して本格的なCRUDアプリ化</li>



<li><strong>Stripe API</strong>などと連携して、<strong>課金付きアプリ</strong>にも！</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://python.cbagames.jp/wp-content/uploads/2025/06/9d9697ea94c9608a27d0bde31599ba86-150x150.jpg" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>JamstackとPythonを組み合わせれば、「静的サイト × 動的API」という最先端の開発スタイルを誰でも体験できます。<br>ぜひ、あなたのアイデアを形にしてみてくださいね！</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc46">🔗あわせて読みたい（関連リンク）</span></h2>



<p>以下は、本記事と関連性が高く、内部リンクとしておすすめの既存記事です：</p>



<ul class="wp-block-list">
<li>👉 <a target="_blank" href="https://python.cbagames.jp/2025/06/09/python-pelican-cloudflare-pages-deploy/">Pelicanでブログを作ってCloudflare Pagesにデプロイする方法</a><br>静的サイトホスティングの基本を学べる記事。Cloudflare Pages初心者に◎</li>



<li>👉 <a>【初心者向け】FastAPIの基本の使い方を解説</a><br>FastAPIをはじめて使う方にぴったりのチュートリアル</li>



<li>👉 <a target="_blank" href="https://python.cbagames.jp/2025/06/05/flask-webapp-beginner/">Python初心者がFlaskでWebアプリを作る方法｜最小構成で始めるWeb開発</a><br>Flaskとの違いや使い分けが気になる人にもおすすめ</li>



<li>👉<a target="_blank" href="https://python.cbagames.jp/2025/06/07/python-automation-for-beginners/"> Pythonでできる自動化10選｜初心者向けにやさしく解説</a><br>Jamstackと連携できる自動化スクリプトのヒントにも！</li>
</ul>



<h2 class="wp-block-heading"><span id="toc47">よくある質問（Q&amp;A）</span></h2>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Cloudflare PagesにPythonコードをそのままデプロイできますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>いいえ。Cloudflare Pagesは<strong>静的ファイル専用のホスティングサービス</strong>なので、Pythonのコード（FastAPIなど）はそのままでは動きません。代わりに、API部分は<strong>別のサービス（例：RenderやFly.io）で公開し、Pagesと連携</strong>する形になります。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">FastAPIを無料で公開できるおすすめのホスティング先は？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>個人開発や検証用途なら、以下の2つが人気です：</p>



<ul class="wp-block-list">
<li><a rel="noopener" target="_blank" class="" href="https://render.com/">Render</a>：無料枠あり、使いやすいUI</li>



<li><a rel="noopener" target="_blank" class="" href="https://fly.io/">Fly.io</a>：軽量アプリ向けで世界中に配置可能</li>
</ul>



<p>どちらもGitHub連携で簡単にデプロイできます。</p>
</div></dd></dl></div>



<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box not-nested-style cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">APIとの連携時にCORSエラーが出るのですが？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p>FastAPI側に<strong>CORS（クロスオリジン）許可設定</strong>を追加する必要があります。Cloudflare Pagesのドメインを<code>allow_origins</code>に設定することで、ブラウザからのアクセスが許可されます。</p>
</div></dd></dl></div>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/09/cloudflare-pages-python-api-jamstack/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
