<?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>API連携  |  Python-memo｜自動化・AI・Web開発の実験室</title>
	<atom:link href="https://python.cbagames.jp/tag/api%E9%80%A3%E6%90%BA/feed/" rel="self" type="application/rss+xml" />
	<link>https://python.cbagames.jp</link>
	<description>Pythonで、できるをふやそう。</description>
	<lastBuildDate>Sun, 01 Feb 2026 08:43:25 +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>API連携  |  Python-memo｜自動化・AI・Web開発の実験室</title>
	<link>https://python.cbagames.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Python×業務自動化】Cinii APIで書籍データを対話式に取得してExcel出力する方法｜メソッドチェーン付き実演ガイド</title>
		<link>https://python.cbagames.jp/2025/06/20/python-cinii-books-api-to-excel/</link>
					<comments>https://python.cbagames.jp/2025/06/20/python-cinii-books-api-to-excel/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Fri, 20 Jun 2025 02:52:14 +0000</pubDate>
				<category><![CDATA[自動化スクリプト]]></category>
		<category><![CDATA[API連携]]></category>
		<category><![CDATA[Excel出力]]></category>
		<category><![CDATA[pandas]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[メソッドチェーン]]></category>
		<category><![CDATA[対話式スクリプト]]></category>
		<category><![CDATA[業務自動化]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=421</guid>

					<description><![CDATA[目次 1. はじめに｜書籍検索を自動化して業務効率UP！2. Cinii Books APIとは？無料で使える学術書検索API📚 Cinii Booksってなに？🌐 Web APIとしての特徴✅ どんな場面で使える？3. [&#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. はじめに｜書籍検索を自動化して業務効率UP！</a></li><li><a href="#toc2" tabindex="0">2. Cinii Books APIとは？無料で使える学術書検索API</a><ol><li><a href="#toc3" tabindex="0">📚 Cinii Booksってなに？</a></li><li><a href="#toc4" tabindex="0">🌐 Web APIとしての特徴</a></li><li><a href="#toc5" tabindex="0">✅ どんな場面で使える？</a></li></ol></li><li><a href="#toc6" tabindex="0">3. Pythonで対話式スクリプトを作ろう！</a><ol><li><a href="#toc7" tabindex="0">💻 必要なライブラリをインポートしよう</a></li><li><a href="#toc8" tabindex="0">🗣 input()でキーワードを受け取る</a></li><li><a href="#toc9" tabindex="0">🌐 Cinii APIで書籍データを取得する</a></li><li><a href="#toc10" tabindex="0">📋 データの中身を確認してみよう</a></li><li><a href="#toc11" tabindex="0">✨ ここまでのまとめ</a></li></ol></li><li><a href="#toc12" tabindex="0">4. 書籍データをExcelに保存する方法</a><ol><li><a href="#toc13" tabindex="0">🎯 どの情報を取り出す？</a></li><li><a href="#toc14" tabindex="0">🛠 書籍データの抽出処理</a></li><li><a href="#toc15" tabindex="0">📊 pandasでDataFrameに変換</a></li><li><a href="#toc16" tabindex="0">💾 Excelファイルとして保存する</a></li><li><a href="#toc17" tabindex="0">🧪 動作確認してみよう！</a></li><li><a href="#toc18" tabindex="0">💡 ちょっと便利な工夫も！</a></li></ol></li><li><a href="#toc19" tabindex="0">5. エラーハンドリングと分岐処理のコツ</a><ol><li><a href="#toc20" tabindex="0">⚠️ ケース①：API自体にアクセスできない</a></li><li><a href="#toc21" tabindex="0">🚫 ケース②：検索結果が0件だった場合</a></li><li><a href="#toc22" tabindex="0">✅ 安全な書き方まとめ</a></li><li><a href="#toc23" tabindex="0">✨ なぜこれが大事なの？</a></li></ol></li><li><a href="#toc24" tabindex="0">6. コードを美しく！メソッドチェーンでリファクタリング</a><ol><li><a href="#toc25" tabindex="0">🔄 メソッドチェーンって何？</a></li><li><a href="#toc26" tabindex="0">🧼 改行とインデントで読みやすく！</a></li><li><a href="#toc27" tabindex="0">🎨 カラム名の変更は先にやるとスッキリ！</a></li><li><a href="#toc28" tabindex="0">💡 メソッドチェーンのメリット</a></li><li><a href="#toc29" tabindex="0">✅ 実際の例（完成版）</a></li></ol></li><li><a href="#toc30" tabindex="0">7. 実行例と動作確認</a><ol><li><a href="#toc31" tabindex="0">🧪 実行例①：「Python」で検索してみる</a></li><li><a href="#toc32" tabindex="0">🧪 実行例②：「物理」で検索してみる</a></li><li><a href="#toc33" tabindex="0">🧪 実行例③：「ギリシャ語」で検索</a></li><li><a href="#toc34" tabindex="0">🚫 検索結果が0件だった場合は？</a></li><li><a href="#toc35" tabindex="0">✅ テスト成功のポイント</a></li></ol></li><li><a href="#toc36" tabindex="0">8. まとめ｜API×Pythonで情報収集も自動化できる時代！</a><ol><li><a href="#toc37" tabindex="0">🧰 このスクリプトが使えるシーン</a></li><li><a href="#toc38" tabindex="0">🚀 情報収集も「自動化」がスタンダードに</a></li><li><a href="#toc39" tabindex="0">あわせて読みたい</a></li></ol></li><li><a href="#toc40" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">1. はじめに｜書籍検索を自動化して業務効率UP！</span></h2>



<p>書籍の検索って、意外と時間がかかりませんか？<br>たとえば、教育現場や研究機関、図書館などで「特定のテーマに関する書籍をまとめて探したい」という場面。いちいち検索サイトにアクセスして、検索ワードを入力して、目当ての本を見つけて……という作業を繰り返すのは、正直かなり面倒です。</p>



<p>そんなときに活躍するのが「Python＋Web APIによる自動化」です！</p>



<p>この記事では、<strong>Cinii Books（国立情報学研究所が提供する書籍検索サービス）のWeb API</strong>を活用して、インターネットから書籍データを取得し、<strong>Excelファイルとして保存するPythonスクリプト</strong>の作り方を解説します。</p>



<p>さらに今回は、ちょっと便利な工夫として、**ユーザーがコマンドラインでキーワードを入力できる「対話式スクリプト」**を採用。誰でも簡単に使えるようにしています。</p>



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



<p>また、ただスクリプトを動かすだけではなく、</p>



<ul class="wp-block-list">
<li>取得したJSONデータの扱い方</li>



<li>pandasによるデータ加工と出力処理</li>



<li>メソッドチェーンを使ったスマートなコードの書き方</li>



<li>エラー処理や条件分岐の実践例</li>
</ul>



<p>といった、<strong>Python実務でも役立つテクニック</strong>も合わせて紹介していきます！</p>



<p>💡「書籍データをサクッと集めたい」<br>💡「PythonでAPIを使ってみたい」<br>💡「Excelへの出力処理まで自動化したい」</p>



<p>そんな方は、ぜひ最後まで読んでくださいね！</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="toc2">2. Cinii Books APIとは？無料で使える学術書検索API</span></h2>



<p>今回のスクリプトで使うのは、<strong>Cinii Books（サイニィ・ブックス）というサービスのWeb APIです。<br>これは、国立情報学研究所（NII）が提供している日本の大学図書館などに所蔵されている書籍情報を検索できるデータベース</strong>で、誰でも無料で使うことができます。</p>



<h3 class="wp-block-heading"><span id="toc3">📚 Cinii Booksってなに？</span></h3>



<p>Cinii Booksは、全国の大学図書館・国立図書館などが所蔵する書籍の情報を検索できるWebサービスです。<br>たとえば、「Python」「医療」「民法」といったキーワードで検索すると、それに関連する書籍のタイトルや著者、出版年、出版社などの情報を一覧で取得できます。</p>



<p>しかも、<strong>アカウント登録やAPIキーの発行は一切不要</strong>。URLにキーワードを含めてアクセスするだけで、JSON形式のレスポンスをすぐに取得できるのが特徴です。</p>



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



<h3 class="wp-block-heading"><span id="toc4">🌐 Web APIとしての特徴</span></h3>



<p>Cinii BooksのWeb APIはとてもシンプルな設計で、以下のような特徴があります。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>特徴</th><th>内容</th></tr></thead><tbody><tr><td>利用料</td><td>無料（商用は注意）</td></tr><tr><td>認証</td><td>不要（APIキー不要）</td></tr><tr><td>出力形式</td><td>JSON または XML</td></tr><tr><td>主な情報</td><td>タイトル、著者名、出版年、所蔵図書館など</td></tr><tr><td>URL構成</td><td>クエリパラメータで検索条件を指定</td></tr></tbody></table></figure>



<p>たとえば、「Python」に関する書籍をJSON形式で取得するURLはこんな感じになります：</p>



<pre class="wp-block-preformatted"><code>https://ci.nii.ac.jp/books/opensearch/json?q=Python<br></code></pre>



<p>このURLにアクセスすれば、Pythonに関連する書籍の情報がJSON形式で返ってきます。<br><strong>とても扱いやすいAPIなので、Python学習の実践教材にもピッタリです。</strong></p>



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



<h3 class="wp-block-heading"><span id="toc5">✅ どんな場面で使える？</span></h3>



<p>このAPIは、以下のようなシーンで活用できます。</p>



<ul class="wp-block-list">
<li>教育現場での資料収集（例：講義資料の検索）</li>



<li>学術研究での関連書籍の収集</li>



<li>図書館業務の効率化（例：特定ジャンルの新着本調査）</li>



<li>書籍リストの作成やExcelへの自動取り込み</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>今回作るスクリプトを少しカスタマイズするだけで、**自分専用の「書籍検索ツール」**に進化させることも可能です！</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="toc6">3. Pythonで対話式スクリプトを作ろう！</span></h2>



<p>それではいよいよ、<strong>Pythonで書籍検索ツールを作る本編</strong>に入っていきましょう！</p>



<p>ここではまず、Cinii Books APIを使って書籍情報を取得する基本的な流れと、<strong>ユーザーがキーワードを入力できる「対話式」のスクリプト</strong>を作成する方法を紹介します。</p>



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



<h3 class="wp-block-heading"><span id="toc7">💻 必要なライブラリをインポートしよう</span></h3>



<p>今回使う主なライブラリは以下の3つです：</p>



<pre class="wp-block-preformatted"><code>import requests       # APIリクエストを送るため<br>import pprint         # JSONデータを見やすく整形して表示<br>import pandas as pd   # データの加工とExcel出力に使用<br></code></pre>



<p>💡 pandasが未インストールの場合は、事前に <code>pip install pandas openpyxl</code> を実行しておきましょう。</p>



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



<h3 class="wp-block-heading"><span id="toc8">🗣 input()でキーワードを受け取る</span></h3>



<p>ユーザーがコマンドラインから検索キーワードを入力できるよう、以下のように <code>input()</code> 関数を使います：</p>



<pre class="wp-block-preformatted"><code>keyword = input("検索したいキーワードを入力してください：")<br></code></pre>



<p>これで、ユーザーが「Python」や「歴史」などのキーワードを自由に指定できるようになります。</p>



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



<h3 class="wp-block-heading"><span id="toc9">🌐 Cinii APIで書籍データを取得する</span></h3>



<p>次に、入力されたキーワードを使ってWeb APIにアクセスします。以下のように、<code>requests</code>ライブラリを使ってGETリクエストを送信します：</p>



<pre class="wp-block-preformatted"><code>url = f"https://ci.nii.ac.jp/books/opensearch/json?q={keyword}&amp;count=100&amp;sortorder=3"<br>response = requests.get(url)<br>response.raise_for_status()  # エラーハンドリング<br></code></pre>



<p>APIからのレスポンスはJSON形式なので、次のようにしてPythonの辞書型に変換します：</p>



<pre class="wp-block-preformatted"><code>data = response.json()<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc10">📋 データの中身を確認してみよう</span></h3>



<p>データの構造を確認するために、<code>pprint</code>で中身を見てみましょう。</p>



<pre class="wp-block-preformatted"><code>from pprint import pprint<br>pprint(data)<br></code></pre>



<p>このようにして、APIから返ってきた内容を整形して確認できます。<br>レスポンス内の <code>@graph</code> → <code>items</code> → 各書籍の情報 という構造を理解しておくと、次のステップで役立ちます。</p>



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



<h3 class="wp-block-heading"><span id="toc11">✨ ここまでのまとめ</span></h3>



<p>これで、以下のような基本の流れが完成しました：</p>



<ol class="wp-block-list">
<li>ユーザーが検索キーワードを入力</li>



<li>Web APIにアクセスして書籍情報を取得</li>



<li>取得データをPythonで扱える形式に変換</li>



<li>中身を確認できるよう整形表示</li>
</ol>



<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>Excelファイルに保存する方法</strong>を見ていきましょう！</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="toc12">4. 書籍データをExcelに保存する方法</span></h2>



<p>前のセクションで取得したCinii Booksの書籍データ。<br>今回はその中から必要な情報だけを抜き出して、<strong>Excelファイルに保存する方法</strong>を解説していきます！</p>



<p>データを見やすく整理して保存すれば、あとから絞り込みや並べ替えも自由自在。業務でも大いに役立ちますよ！</p>



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



<h3 class="wp-block-heading"><span id="toc13">🎯 どの情報を取り出す？</span></h3>



<p>Cinii APIから取得したデータには、たくさんの情報が含まれていますが、今回は以下の3つに絞って抽出します：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>抽出する情報</th><th>JSON内のキー名</th></tr></thead><tbody><tr><td>書籍のタイトル</td><td><code>title</code></td></tr><tr><td>著者名</td><td><code>dc:creator</code></td></tr><tr><td>出版年</td><td><code>dc:date</code></td></tr></tbody></table></figure>



<p>これらは <code>data["@graph"][0]["items"]</code> の中に、リスト形式で格納されています。</p>



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



<h3 class="wp-block-heading"><span id="toc14">🛠 書籍データの抽出処理</span></h3>



<p>以下のコードで、必要な情報だけを取り出してリスト化します：</p>



<pre class="wp-block-preformatted"><code>items = data.get("@graph", [])[0].get("items", [])<br><br>books = []<br>for item in items:<br>    title = item.get("title", "不明")<br>    author = item.get("dc:creator", "不明")<br>    year = item.get("dc:date", "不明")<br>    books.append({<br>        "タイトル": title,<br>        "著者名": author,<br>        "出版年": year<br>    })<br></code></pre>



<p>💡 書籍によっては「著者名」や「出版年」が空欄になっていることもあるので、<code>.get()</code>で安全に取り出しています。</p>



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



<h3 class="wp-block-heading"><span id="toc15">📊 pandasでDataFrameに変換</span></h3>



<p>リストに格納された書籍データをpandasでデータフレームに変換します：</p>



<pre class="wp-block-preformatted"><code>df = pd.DataFrame(books)<br></code></pre>



<p>見やすく整った表形式になります！</p>



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



<h3 class="wp-block-heading"><span id="toc16">💾 Excelファイルとして保存する</span></h3>



<p>最後に、検索キーワードをファイル名に使ってExcelに保存します：</p>



<pre class="wp-block-preformatted"><code>filename = f"{keyword}_books.xlsx"<br>df.to_excel(filename, index=False)<br>print(f"Excelファイルに保存しました：{filename}")<br></code></pre>



<p>📂 保存先はスクリプトを実行したフォルダと同じ場所になります。</p>



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



<h3 class="wp-block-heading"><span id="toc17">🧪 動作確認してみよう！</span></h3>



<p>ここまでの処理を組み合わせれば、次のような流れが完成します：</p>



<pre class="wp-block-preformatted"><code>検索したいキーワードを入力してください：人工知能<br><br>→ Cinii APIにリクエスト送信  <br>→ 書籍の一覧を取得  <br>→ Excelファイル「人工知能_books.xlsx」に保存完了！<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc18">💡 ちょっと便利な工夫も！</span></h3>



<ul class="wp-block-list">
<li>検索結果の最大件数（count）を100件に設定して、より多くの情報を取得</li>



<li>出力ファイル名に検索ワードを含めて、後から探しやすく</li>



<li>列名に日本語を使って、Excelでも読みやすく！</li>
</ul>



<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="toc19">5. エラーハンドリングと分岐処理のコツ</span></h2>



<p>プログラムを実際の現場で使うには、「エラーが起きたときの対応」や「想定外の入力への対処」も重要です。<br>今回は、<strong>2つのケース</strong>に対応する処理を加えて、より信頼性の高いスクリプトに仕上げていきましょう。</p>



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



<h3 class="wp-block-heading"><span id="toc20">⚠️ ケース①：API自体にアクセスできない</span></h3>



<p>APIのURLが間違っていたり、ネットワークの問題があったりすると、<code>requests.get()</code> でエラーが発生する可能性があります。<br>そんなときは、以下のように <code>try-except</code> ブロックと <code>raise_for_status()</code> を使って対処します。</p>



<pre class="wp-block-preformatted"><code>try:<br>    response = requests.get(url)<br>    response.raise_for_status()<br>except requests.exceptions.RequestException as e:<br>    print("APIへの接続に失敗しました：", e)<br>    exit()<br></code></pre>



<p>💡 <code>raise_for_status()</code> はHTTPエラー（404や500など）を検出し、例外として報告してくれます。</p>



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



<h3 class="wp-block-heading"><span id="toc21">🚫 ケース②：検索結果が0件だった場合</span></h3>



<p>キーワードに合う書籍が一件も見つからないこともあります。<br>これは「失敗」ではなく「正常な結果」ですが、処理を続けても意味がないので、以下のように分岐を加えます。</p>



<pre class="wp-block-preformatted"><code>graph = data.get("@graph", [])<br>if not graph or "items" not in graph[0]:<br>    print("該当する書籍が見つかりませんでした。")<br>    exit()<br></code></pre>



<p>このチェックにより、<code>items</code>キーがない場合は「0件」と判断し、ユーザーにメッセージを出して終了できます。</p>



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



<h3 class="wp-block-heading"><span id="toc22">✅ 安全な書き方まとめ</span></h3>



<p>エラーハンドリングや分岐を含めた、基本的な流れはこんな感じになります：</p>



<pre class="wp-block-preformatted"><code>try:<br>    response = requests.get(url)<br>    response.raise_for_status()<br>    data = response.json()<br>except requests.exceptions.RequestException as e:<br>    print("API通信エラー：", e)<br>    exit()<br><br>graph = data.get("@graph", [])<br>if not graph or "items" not in graph[0]:<br>    print("検索結果が0件でした。")<br>    exit()<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc23">✨ なぜこれが大事なの？</span></h3>



<ul class="wp-block-list">
<li><strong>ユーザーが安心して使える</strong></li>



<li><strong>予期しないクラッシュを防げる</strong></li>



<li><strong>エラーの原因が分かりやすくなる</strong></li>



<li><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>実務でスクリプトを使う場合、<strong>「何が起きても止まらないコード」が信頼されるコード</strong>です！</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="toc24">6. コードを美しく！メソッドチェーンでリファクタリング</span></h2>



<p>スクリプトが正しく動くようになったら、次は<strong>コードの見た目や読みやすさを整える</strong>番です。<br>今回は、Pythonらしくスッキリとした記述に変えるために、<strong>メソッドチェーン</strong>を使ったリファクタリング方法をご紹介します！</p>



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



<h3 class="wp-block-heading"><span id="toc25">🔄 メソッドチェーンって何？</span></h3>



<p>メソッドチェーンとは、<strong>複数の処理をドット（.）でつないで一気に書く方法</strong>です。<br>一時変数を使わずに処理を連続して実行できるので、コードがシンプルになりやすいです。</p>



<p>以下のような処理を…</p>



<pre class="wp-block-preformatted"><code>df = pd.DataFrame(books)<br>df = df.rename(columns={"dc:creator": "著者名", "dc:date": "出版年"})<br>df.to_excel(filename, index=False)<br></code></pre>



<p>こんなふうにまとめて書けます：</p>



<pre class="wp-block-preformatted"><code>pd.DataFrame(books) \<br>  .rename(columns={"dc:creator": "著者名", "dc:date": "出版年"}) \<br>  .to_excel(filename, index=False)<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc26">🧼 改行とインデントで読みやすく！</span></h3>



<p>ただし、行が長くなると読みにくくなるので、<strong>バックスラッシュ（\）を使って改行</strong>するのがポイントです。<br>タブやスペースでインデントをそろえることで、コードの流れがひと目でわかります。</p>



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



<h3 class="wp-block-heading"><span id="toc27">🎨 カラム名の変更は先にやるとスッキリ！</span></h3>



<p>書籍データをExcelに保存する際、カラム名（列名）を「dc:creator」のままにすると分かりづらいですよね。<br>そこで、<code>rename()</code>メソッドを使ってあらかじめ<strong>日本語に変換</strong>しておくと、あとで操作しやすくなります。</p>



<pre class="wp-block-preformatted"><code>df = pd.DataFrame(books).rename(columns={<br>    "title": "タイトル",<br>    "dc:creator": "著者名",<br>    "dc:date": "出版年"<br>})<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc28">💡 メソッドチェーンのメリット</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>メリット</th><th>内容</th></tr></thead><tbody><tr><td>見た目がスッキリ</td><td>無駄な変数が減る</td></tr><tr><td>保守がしやすい</td><td>処理の流れが直線的に見える</td></tr><tr><td>処理の流れが明快</td><td>データの加工手順が追いやすい</td></tr></tbody></table></figure>



<p>ただし、<strong>複雑な処理はメソッドチェーンにせず、分けて書いた方が読みやすい場合もあります。</strong><br>読み手の立場に立って、バランスを考えるのがコツですね！</p>



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



<h3 class="wp-block-heading"><span id="toc29">✅ 実際の例（完成版）</span></h3>



<pre class="wp-block-preformatted"><code>pd.DataFrame(books) \<br>  .rename(columns={<br>      "title": "タイトル",<br>      "dc:creator": "著者名",<br>      "dc:date": "出版年"<br>  }) \<br>  .to_excel(f"{keyword}_books.xlsx", index=False)<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>このように、データフレームの作成 → カラム名の変更 → Excel出力 までを一気に記述できるので、とてもスマートです。</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="toc30">7. 実行例と動作確認</span></h2>



<p>ここまでで、<strong>検索キーワードの入力 → 書籍情報の取得 → Excel出力</strong>までを自動で行うPythonスクリプトが完成しました。<br>では実際に、いくつかのキーワードを使って<strong>動作確認</strong>をしてみましょう！</p>



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



<h3 class="wp-block-heading"><span id="toc31">🧪 実行例①：「Python」で検索してみる</span></h3>



<pre class="wp-block-preformatted"><code>検索したいキーワードを入力してください：Python<br></code></pre>



<p>▶︎ 実行結果：</p>



<ul class="wp-block-list">
<li><code>Python_books.xlsx</code> というファイルが出力される</li>



<li>Excelファイルには、Pythonに関する書籍（タイトル、著者名、出版年）が100件分一覧に！</li>
</ul>



<p>📸 <strong>Excelファイルの中身の例：</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>タイトル</th><th>著者名</th><th>出版年</th></tr></thead><tbody><tr><td>Pythonプログラミング入門</td><td>山田太郎</td><td>2021</td></tr><tr><td>実践Pythonデータ分析</td><td>鈴木一郎</td><td>2022</td></tr><tr><td>Pythonと機械学習の世界</td><td>田中花子</td><td>2020</td></tr></tbody></table></figure>



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



<h3 class="wp-block-heading"><span id="toc32">🧪 実行例②：「物理」で検索してみる</span></h3>



<pre class="wp-block-preformatted"><code>検索したいキーワードを入力してください：物理<br></code></pre>



<p>▶︎ 実行結果：</p>



<ul class="wp-block-list">
<li><code>物理_books.xlsx</code> というファイルが生成され、物理関連の学術書情報がリストアップされます。</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc33">🧪 実行例③：「ギリシャ語」で検索</span></h3>



<pre class="wp-block-preformatted"><code>検索したいキーワードを入力してください：ギリシャ語<br></code></pre>



<p>▶︎ 実行結果：</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="toc34">🚫 検索結果が0件だった場合は？</span></h3>



<pre class="wp-block-preformatted"><code>検索したいキーワードを入力してください：あいうえおかきくけこ<br></code></pre>



<p>▶︎ 実行結果：</p>



<pre class="wp-block-preformatted"><code>該当する書籍が見つかりませんでした。<br></code></pre>



<p>このように、<strong>存在しないキーワードに対しても優しく対応</strong>できるようになっています！</p>



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



<h3 class="wp-block-heading"><span id="toc35">✅ テスト成功のポイント</span></h3>



<ul class="wp-block-list">
<li><strong>いろんなジャンルのキーワード</strong>で動作するか？</li>



<li><strong>出力されたExcelが正しく開けるか？</strong></li>



<li><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>上記のような観点からテストすれば、安心して業務でも使えるスクリプトになります。</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="toc36">8. まとめ｜API×Pythonで情報収集も自動化できる時代！</span></h2>



<p>今回は、PythonとCinii Books APIを使って、</p>



<ul class="wp-block-list">
<li>ユーザーがキーワードを入力</li>



<li>書籍情報をWebから自動取得</li>



<li>Excelファイルに出力して保存</li>
</ul>



<p>という一連の流れを、<strong>対話形式のスクリプト</strong>として作成してきました。</p>



<p>しかも、ただ動くだけではなく…</p>



<ul class="wp-block-list">
<li><code>input()</code>を使ったユーザー入力対応</li>



<li>JSONの取り扱いと必要項目の抽出</li>



<li><code>pandas</code>によるデータ加工</li>



<li><code>to_excel()</code>によるExcel出力</li>



<li><code>try-except</code>を使ったエラーハンドリング</li>



<li>メソッドチェーンでコードをスッキリ整形</li>
</ul>



<p>といった、<strong>Python実務で必須のテクニック</strong>も自然に学べる内容になっています。</p>



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



<h3 class="wp-block-heading"><span id="toc37">🧰 このスクリプトが使えるシーン</span></h3>



<ul class="wp-block-list">
<li>研究資料の事前収集</li>



<li>大学・図書館の業務効率化</li>



<li>新刊情報の自動まとめ</li>



<li>書籍リストの定期更新ツールとして再利用</li>
</ul>



<p>さらに、Cinii APIは追加パラメータも豊富なので、</p>



<ul class="wp-block-list">
<li>出版社で絞り込む</li>



<li>出版年の範囲を指定する</li>



<li>特定の図書館だけで絞る</li>
</ul>



<p>といった<strong>応用的な検索</strong>にも対応可能です。</p>



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



<h3 class="wp-block-heading"><span id="toc38">🚀 情報収集も「自動化」がスタンダードに</span></h3>



<p>今までは、手作業で検索して、コピペして…という情報収集が当たり前でしたが、<br><strong>PythonとAPIを組み合わせれば、その作業も一瞬で完了します。</strong></p>



<p>時間をかけずに正確なデータを集めたい。<br>そんなとき、今回のような<strong>小さな自動化スクリプト</strong>が大きな力になります。</p>



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



<h3 class="wp-block-heading"><span id="toc39">あわせて読みたい</span></h3>



<p>当ブログでは、今回のような<strong>Pythonを使った業務効率化・自動化</strong>に役立つ記事を多数ご紹介しています。あわせて以下の記事もチェックしてみてください！</p>



<ul class="wp-block-list">
<li>🔗 <a target="_blank" href="https://python.cbagames.jp/2025/06/18/python-exchange-rate-to-excel/">Pythonで為替レートを自動取得してExcelに保存する方法【初心者向け】</a><br>⇒ 為替APIからレートを取得し、Excelファイルに自動保存する手順を解説しています。</li>



<li>🔗 <a target="_blank" href="https://python.cbagames.jp/2025/06/16/python-gmail-api-send-receive/">【Python×Gmail API】メール送受信＆添付ファイル操作を自動化する方法</a><br>⇒ メール処理をPythonで一括管理したい方におすすめの内容です。</li>



<li>🔗<a target="_blank" href="https://python.cbagames.jp/2025/06/18/python-stock-price-analysis/">【Python株価分析】データ取得・可視化・予測まで完全ガイド！</a><br>⇒ 株価情報をAPIで取得し、グラフ化・予測まで行う分析系の応用記事です。</li>
</ul>



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



<h2 class="wp-block-heading"><span id="toc40">よくある質問（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">Cinii Books APIの利用に制限や登録は必要ですか？</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>登録不要・無料で利用できます。ただし商用利用や大量アクセスには注意が必要です。詳細は<a>Ciniiの利用規約</a>をご確認ください。</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">出力されたExcelファイルが文字化けします。どうすれば？</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><code>openpyxl</code>を使って出力していれば基本的に文字化けしませんが、Excelのバージョンや文字コードによっては表示が乱れることも。<code>to_excel()</code>の引数に <code>encoding="utf-8-sig"</code> を追加してみてください（ただし <code>.xlsx</code> 形式では不要です）。</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">データ数が100件を超える場合、どうすれば全件取得できますか？</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>Cinii APIは1回のリクエストで取得できる件数が最大100件です。<code>start</code> パラメータを使ってページを分けることで全件取得も可能です（複数回リクエストする必要があります）。</p>
</div></dd></dl></div>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/20/python-cinii-books-api-to-excel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pythonで為替レートを自動取得してExcelに保存する方法【初心者向け】</title>
		<link>https://python.cbagames.jp/2025/06/18/python-exchange-rate-to-excel/</link>
					<comments>https://python.cbagames.jp/2025/06/18/python-exchange-rate-to-excel/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Wed, 18 Jun 2025 03:32:14 +0000</pubDate>
				<category><![CDATA[自動化スクリプト]]></category>
		<category><![CDATA[API連携]]></category>
		<category><![CDATA[Excel操作]]></category>
		<category><![CDATA[openpyxl]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[requests]]></category>
		<category><![CDATA[為替レート]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=379</guid>

					<description><![CDATA[目次 はじめに｜Pythonで為替レートを自動取得するってどういうこと？1. Pythonで為替データを扱うメリット✅ 毎日の作業が自動化できる✅ 無料APIを活用して最新データを取得✅ 取得したデータをそのままExce [&#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-4"><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに｜Pythonで為替レートを自動取得するってどういうこと？</a></li><li><a href="#toc2" tabindex="0">1. Pythonで為替データを扱うメリット</a><ol><li><a href="#toc3" tabindex="0">✅ 毎日の作業が自動化できる</a></li><li><a href="#toc4" tabindex="0">✅ 無料APIを活用して最新データを取得</a></li><li><a href="#toc5" tabindex="0">✅ 取得したデータをそのままExcelに保存</a></li><li><a href="#toc6" tabindex="0">✅ 業務でも通用するスキルが身につく</a></li></ol></li><li><a href="#toc7" tabindex="0">2. 必要な環境とライブラリ</a><ol><li><a href="#toc8" tabindex="0">🔧 Python仮想環境の作成</a><ol><li><a href="#toc9" tabindex="0">✅ なぜ仮想環境を使うの？</a></li><li><a href="#toc10" tabindex="0">✅ 仮想環境の作り方（Windows/Mac共通）</a></li><li><a href="#toc11" tabindex="0">✅ 仮想環境の起動方法</a></li></ol></li><li><a href="#toc12" tabindex="0">📦 ライブラリのインストール</a><ol><li><a href="#toc13" tabindex="0">✅ インストールコマンド（仮想環境の中で実行）</a></li><li><a href="#toc14" tabindex="0">✅ ライブラリのインポート方法</a></li></ol></li></ol></li><li><a href="#toc15" tabindex="0">3. 為替APIの仕組みとエンドポイント設定</a><ol><li><a href="#toc16" tabindex="0">🌐 APIってなに？</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">✅ 通貨を指定したい場合は？</a></li></ol></li><li><a href="#toc20" tabindex="0">4. APIから為替レートを取得するPythonコード</a><ol><li><a href="#toc21" tabindex="0">🧪 まずはAPIにアクセスしてみよう！</a></li><li><a href="#toc22" tabindex="0">🔍 解説：このコードで何をしているの？</a></li><li><a href="#toc23" tabindex="0">💡 JSON形式のデータとは？</a></li><li><a href="#toc24" tabindex="0">✅ 必要な情報だけ取り出すには？</a></li></ol></li><li><a href="#toc25" tabindex="0">5. 取得したデータをExcelに書き込む</a><ol><li><a href="#toc26" tabindex="0">📘 Excelファイルを作るには？（Workbook）</a></li><li><a href="#toc27" tabindex="0">🏷️ ヘッダーを追加する（append）</a></li><li><a href="#toc28" tabindex="0">🔄 通貨とレートを1行ずつ追加（forループ＋append）</a></li><li><a href="#toc29" tabindex="0">✅ append()とは？</a></li><li><a href="#toc30" tabindex="0">💡 補足：複数回appendすれば、表形式になる</a></li></ol></li><li><a href="#toc31" tabindex="0">6. Excelファイルの保存と出力の確認</a><ol><li><a href="#toc32" tabindex="0">💾 Excelファイルを保存する（.save()）</a></li><li><a href="#toc33" tabindex="0">✅ 保存できたかどうかを知らせるメッセージ</a></li><li><a href="#toc34" tabindex="0">🔁 全体の流れをまとめると…</a></li><li><a href="#toc35" tabindex="0">📂 実行後の確認方法</a></li></ol></li><li><a href="#toc36" tabindex="0">7. おまけ：日付や時間も一緒に書き込む（発展応用）</a><ol><li><a href="#toc37" tabindex="0">🕒 現在の日付・時刻を取得するには？</a></li><li><a href="#toc38" tabindex="0">📝 Excelの表に日付列を追加するには？</a><ol><li><a href="#toc39" tabindex="0">✅ ヘッダーを修正：</a></li><li><a href="#toc40" tabindex="0">✅ データの書き込み部分を変更：</a></li></ol></li><li><a href="#toc41" tabindex="0">📈 毎日データを記録するログとしても使える！</a></li><li><a href="#toc42" tabindex="0">✅ 補足：時間まで記録したい場合は？</a></li></ol></li><li><a href="#toc43" tabindex="0">8. まとめ</a><ol><li><a href="#toc44" tabindex="0">💡 この記事で学べたこと</a></li><li><a href="#toc45" tabindex="0">📌 自動化の一歩として最適なテーマ！</a></li></ol></li><li><a href="#toc46" tabindex="0">🔗 あわせて読みたい</a><ol><li><a href="#toc47" tabindex="0">🧮 データの扱いに強くなろう！</a></li><li><a href="#toc48" tabindex="0">🧰 API・ファイル操作の基礎固めに！</a></li><li><a href="#toc49" tabindex="0">💡 自動化スキルをレベルアップ！</a></li></ol></li><li><a href="#toc50" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに｜Pythonで為替レートを自動取得するってどういうこと？</span></h2>



<p>「毎日の為替レートを確認して、Excelに手入力するのが正直つらい…」<br>「できれば最新の為替レートを、自動でExcelに保存したい…」</p>



<p>そんな悩みを感じたことはありませんか？</p>



<p>実は、<strong>Pythonを使えば為替レートを自動取得し、そのままExcelファイルに保存することができます。</strong><br>一度仕組みを作ってしまえば、毎日の確認作業や転記ミスから解放され、業務効率を大きく改善できます。</p>



<p>この記事では、<strong>APIを使って最新の為替レートを取得し、PythonでExcelに自動保存する方法</strong>を、プログラミング初心者向けにやさしく解説します。<br>難しそうに聞こえる「API」も、仕組みを理解すれば意外とシンプルです。</p>



<p>経理・財務・輸入業務などで外国通貨を扱う方はもちろん、<br>「Pythonで業務を自動化してみたい」「Excel作業を効率化したい」という方にもおすすめの内容です。</p>



<p>この記事を読むことで、次のことができるようになります。</p>



<ul class="wp-block-list">
<li>Pythonで為替レートを自動取得する方法</li>



<li>為替APIの基本的な使い方</li>



<li>取得したデータをExcelファイルに書き込む手順</li>



<li>実務でも使える、シンプルで分かりやすいコード構成</li>
</ul>



<p>コードは<strong>丸写しで終わらないように、1行ずつ意味を解説</strong>していきます。<br>「なぜこの書き方なのか」が分かるので、Python初心者の方でも安心です。</p>



<p>それでは、Pythonを使った為替レートの自動取得とExcel保存を、一緒に進めていきましょう。</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="toc2">1. Pythonで為替データを扱うメリット</span></h2>



<p>Pythonは、**「データを集めて、加工して、出力する」**という一連の流れを、とてもシンプルに書けるプログラミング言語です。<br>この特性が、<strong>為替レートの自動取得＆Excelへの書き出し</strong>という作業にピッタリなんです。</p>



<p>ここでは、Pythonを使うことで得られる具体的なメリットをいくつか紹介します。</p>



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



<h3 class="wp-block-heading"><span id="toc3">✅ 毎日の作業が自動化できる</span></h3>



<p>たとえば「毎朝、為替レートを調べて、Excelに入力する」…こんなルーチン作業、ありませんか？</p>



<p>Pythonを使えば、<strong>その作業をボタン1つ、あるいは時間指定で自動化</strong>できます。人の手を使わないので、入力ミスも防げて一石二鳥！</p>



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



<h3 class="wp-block-heading"><span id="toc4">✅ 無料APIを活用して最新データを取得</span></h3>



<p>多くの為替レート提供サイトでは、<strong>「API」という仕組みでレート情報を提供</strong>しています。<br>Pythonでは <code>requests</code> というライブラリを使うことで、<strong>数行のコードでAPIからデータを取得することが可能</strong>です。</p>



<p>しかも、APIの多くは無料プランを用意しており、登録不要で使えるものもあります（例：exchangerate.host など）。</p>



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



<h3 class="wp-block-heading"><span id="toc5">✅ 取得したデータをそのままExcelに保存</span></h3>



<p>Pythonには <code>openpyxl</code> というライブラリがあり、Excelファイル（.xlsx）の作成・編集が自由自在。<br>今回のように、<strong>「為替レートを日付とともに記録する表」を自動で作る</strong>のも簡単です。</p>



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



<h3 class="wp-block-heading"><span id="toc6">✅ 業務でも通用するスキルが身につく</span></h3>



<p>APIの使い方やExcel連携の知識は、<strong>業務で使える実践的なスキル</strong>です。<br>特に、財務・経理・データ分析・エンジニア職などでは、こうしたスキルが評価される場面も多くなっています。</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>「プログラミングって難しそう…」という方もご安心ください。<br>このあとの手順では、<strong>一つひとつの操作をやさしく丁寧に解説</strong>していきます。</p>



<p>次は、Python環境の準備と必要なライブラリのインストールから始めましょう！</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="toc7">2. 必要な環境とライブラリ</span></h2>



<p>Pythonで為替レートを取得してExcelに書き込むには、<strong>準備がとても大切</strong>です。<br>ここでは、実際にプログラムを書く前にやっておきたい2つの準備――<strong>仮想環境の作成</strong>と<strong>ライブラリのインストール</strong>について説明します。</p>



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



<h3 class="wp-block-heading"><span id="toc8">🔧 Python仮想環境の作成</span></h3>



<p>まずは、作業ごとに独立したPython環境をつくっておきましょう。これを**「仮想環境」**といいます。</p>



<h4 class="wp-block-heading"><span id="toc9">✅ なぜ仮想環境を使うの？</span></h4>



<p>Pythonにはたくさんのライブラリがありますが、全部をごちゃまぜに使っていると、<br>「どのツールがどのライブラリを使っていたっけ？」<br>「他のツールとバージョンがぶつかって動かない…」<br>なんてことが起きやすくなります。</p>



<p>仮想環境を使えば、<strong>1つのツール＝1つの専用環境</strong>として管理できるので安心です。</p>



<h4 class="wp-block-heading"><span id="toc10">✅ 仮想環境の作り方（Windows/Mac共通）</span></h4>



<p>ターミナル（またはコマンドプロンプト）で以下のコマンドを入力します：</p>



<pre class="wp-block-preformatted"><code>python -m venv venv<br></code></pre>



<p>すると、<code>venv</code> という名前の仮想環境が作成されます。</p>



<h4 class="wp-block-heading"><span id="toc11">✅ 仮想環境の起動方法</span></h4>



<ul class="wp-block-list">
<li>Windowsの場合：</li>
</ul>



<pre class="wp-block-preformatted"><code>venv\Scripts\activate<br></code></pre>



<ul class="wp-block-list">
<li>Mac/Linuxの場合：</li>
</ul>



<pre class="wp-block-preformatted"><code>source venv/bin/activate<br></code></pre>



<p>うまくいくと、ターミナルの先頭に <code>(venv)</code> と表示されます。これで仮想環境の中に入った状態です！</p>



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



<h3 class="wp-block-heading"><span id="toc12">📦 ライブラリのインストール</span></h3>



<p>今回使うライブラリは以下の2つです：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>ライブラリ名</th><th>用途</th></tr></thead><tbody><tr><td><code>requests</code></td><td>為替レートAPIからデータを取得する</td></tr><tr><td><code>openpyxl</code></td><td>Excelファイルの読み書きを行う</td></tr></tbody></table></figure>



<h4 class="wp-block-heading"><span id="toc13">✅ インストールコマンド（仮想環境の中で実行）</span></h4>



<pre class="wp-block-preformatted"><code>pip install requests openpyxl<br></code></pre>



<h4 class="wp-block-heading"><span id="toc14">✅ ライブラリのインポート方法</span></h4>



<p>Pythonコードの最初に以下を記述して、ライブラリを使えるようにします：</p>



<pre class="wp-block-preformatted"><code>import requests<br>from openpyxl import Workbook<br></code></pre>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-point block-box has-border-color has-amber-border-color">
<p><code>import openpyxl</code> とする方法もありますが、今回は <code>Workbook</code> クラスだけ使うので <code>from openpyxl import Workbook</code> の方がシンプルです。</p>
</div>



<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>これで準備完了！<br>次はいよいよ「APIを使って為替レートを取得する」ステップに進みましょう！</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="toc15">3. 為替APIの仕組みとエンドポイント設定</span></h2>



<p>いよいよここから、<strong>為替レートのデータを取得するための準備</strong>に入ります。<br>そのカギを握るのが、「API」と呼ばれる仕組みです。</p>



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



<h3 class="wp-block-heading"><span id="toc16">🌐 APIってなに？</span></h3>



<p>APIとは「Application Programming Interface（アプリケーション・プログラミング・インターフェース）」の略です。</p>



<p>……ちょっと難しく聞こえますが、ざっくり言うと、</p>



<p><strong>「他のサービスから情報を自動で受け取るための窓口」</strong></p>



<p>と考えてください。</p>



<p>たとえば、天気情報・ニュース・為替レート・株価などを自分のプログラムに取り込むには、<br>その情報を提供してくれる「APIのURL」にアクセスして、<strong>機械が読み取れる形式でデータを受け取る</strong>のが一般的です。</p>



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



<h3 class="wp-block-heading"><span id="toc17">💱 為替APIとは？</span></h3>



<p>今回使う為替APIは「exchangerate.host」という、<strong>無料で使える便利なAPIサービス</strong>です。</p>



<p><strong>アクセスするURLの例：</strong></p>



<pre class="wp-block-preformatted"><code>https://api.exchangerate.host/latest<br></code></pre>



<p>このURLにアクセスすることで、**「今日の為替レート（EURを基準）」**がJSON形式で返ってきます。</p>



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



<h3 class="wp-block-heading"><span id="toc18">📌 エンドポイントって？</span></h3>



<p>APIで使われる「エンドポイント」とは、<strong>情報を取得するためのURLのこと</strong>です。<br>サービスごとに、さまざまなエンドポイントが用意されています。</p>



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



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>エンドポイント</th><th>内容</th></tr></thead><tbody><tr><td><code>/latest</code></td><td>最新の為替レート</td></tr><tr><td><code>/timeseries</code></td><td>過去の為替レート履歴</td></tr><tr><td><code>/convert</code></td><td>通貨変換（例：USD → JPY）</td></tr></tbody></table></figure>



<p>今回はもっともシンプルな <strong>「最新のレート」を取得する <code>/latest</code></strong> を使います。</p>



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



<h3 class="wp-block-heading"><span id="toc19">✅ 通貨を指定したい場合は？</span></h3>



<p>URLの末尾にパラメータをつけて、<strong>取得したい通貨を絞り込むことも可能</strong>です。</p>



<p>たとえば、「USD（米ドル）を基準に、JPY（日本円）のレートを取得したい」なら、こんなURLになります：</p>



<pre class="wp-block-preformatted"><code>https://api.exchangerate.host/latest?base=USD&amp;symbols=JPY<br></code></pre>



<p>このように、**クエリパラメータ（?〜）**を使って情報をカスタマイズできるのがAPIの面白さです！</p>



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



<p>ここまでの内容をまとめると、次のようなコードで為替データが取得できます：</p>



<pre class="wp-block-preformatted"><code>import requests<br><br>url = "https://api.exchangerate.host/latest?base=USD"<br>response = requests.get(url)<br>data = response.json()<br>print(data)<br></code></pre>



<p>このコードを実行すると、USDを基準とした通貨レートの一覧が表示されます。</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>次は、このAPIから取得したデータを**どのようにPythonで扱っていくのか？**を見ていきましょう！</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">4. APIから為替レートを取得するPythonコード</span></h2>



<p>ここからは、いよいよ実際に<strong>為替レートのデータをPythonで取得するコード</strong>を書いていきます！</p>



<p>今回は「USD（米ドル）」を基準に、複数の通貨レートを取得する例で進めます。</p>



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



<h3 class="wp-block-heading"><span id="toc21">🧪 まずはAPIにアクセスしてみよう！</span></h3>



<p>以下のコードをPythonファイルに書いてみてください：</p>



<pre class="wp-block-preformatted"><code>import requests<br><br># APIのURL（USDを基準）<br>url = "https://api.exchangerate.host/latest?base=USD"<br><br># データ取得<br>response = requests.get(url)<br><br># JSON形式でデータを取り出す<br>data = response.json()<br><br># 内容を確認してみよう<br>print(data)<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc22">🔍 解説：このコードで何をしているの？</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><code>requests</code> ライブラリを読み込んで、Webからデータを取得できるようにします。</td></tr><tr><td>4行目</td><td>APIのエンドポイントURLを設定します。ここでは「USDを基準にした最新の為替レート」を取得しています。</td></tr><tr><td>7行目</td><td><code>requests.get()</code> で指定したURLにアクセスし、Webからデータを取得します。</td></tr><tr><td>10行目</td><td><code>response.json()</code> で、取得したデータを<strong>Pythonの辞書（dict）型</strong>に変換します。</td></tr><tr><td>13行目</td><td><code>print()</code>で、実際に取得できたデータを確認しています。</td></tr></tbody></table></figure>



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



<h3 class="wp-block-heading"><span id="toc23">💡 JSON形式のデータとは？</span></h3>



<p>APIから取得できるデータは、基本的に**「JSON形式」**です。<br>これは「キー（名前）と値（データ）」がセットになった、<strong>人間にも読めるシンプルな形式</strong>です。</p>



<p>例として、こんな形で表示されるはずです：</p>



<pre class="wp-block-preformatted"><code>{<br>  "base": "USD",<br>  "date": "2025-06-18",<br>  "rates": {<br>    "JPY": 157.35,<br>    "EUR": 0.91,<br>    "GBP": 0.78,<br>    ...<br>  }<br>}<br></code></pre>



<p>この中の <code>"rates"</code> の部分が重要で、ここに各通貨のレートが格納されています。</p>



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



<h3 class="wp-block-heading"><span id="toc24">✅ 必要な情報だけ取り出すには？</span></h3>



<p>JSONデータは辞書型なので、<strong>Pythonの辞書のようにキー指定で中身を取り出せます</strong>。</p>



<p>たとえば、すべての通貨レートを取得したい場合は次のように書きます：</p>



<pre class="wp-block-preformatted"><code>for currency, rate in data["rates"].items():<br>    print(f"{currency}: {rate}")<br></code></pre>



<p>このコードを実行すると、次のような出力になります：</p>



<pre class="wp-block-preformatted"><code>JPY: 157.35<br>EUR: 0.91<br>GBP: 0.78<br>...<br></code></pre>



<p>これで、<strong>APIから取得した為替データをPythonで自由に扱える</strong>ようになりました！</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>次はいよいよ、取得した為替レートを<strong>Excelファイルに書き込む</strong>手順を解説していきます！</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="toc25">5. 取得したデータをExcelに書き込む</span></h2>



<p>APIから取得した為替レートのデータを、次は<strong>Excelファイルに書き込んで保存</strong>してみましょう。</p>



<p>ここでは <code>openpyxl</code> ライブラリを使って、以下のような作業を行います：</p>



<ul class="wp-block-list">
<li>新しいExcelファイルを作成</li>



<li>ワークシートを準備</li>



<li>為替レートのデータを1行ずつ書き込む</li>



<li>ファイルとして保存</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc26">📘 Excelファイルを作るには？（Workbook）</span></h3>



<p>まずはExcelファイルの「本体」となる**ワークブック（Workbook）**を作ります。以下のコードを追記してみましょう：</p>



<pre class="wp-block-preformatted"><code>from openpyxl import Workbook<br><br># 新しいExcelファイルを作成<br>wb = Workbook()<br><br># アクティブなシートを取得<br>ws = wb.active<br><br># シートの名前を変更（任意）<br>ws.title = "Exchange Rates"<br></code></pre>



<p>ここまでで、空っぽのExcelファイルとシートが1枚できた状態です。</p>



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



<h3 class="wp-block-heading"><span id="toc27">🏷️ ヘッダーを追加する（append）</span></h3>



<p>次に、**列のタイトル（ヘッダー）**を書き込みます。</p>



<pre class="wp-block-preformatted"><code># ヘッダーを追加<br>ws.append(["通貨コード", "為替レート"])<br></code></pre>



<p>これで、1行目に「通貨コード」「為替レート」という見出しが入りました。</p>



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



<h3 class="wp-block-heading"><span id="toc28">🔄 通貨とレートを1行ずつ追加（forループ＋append）</span></h3>



<p>ここからは、前のステップで取得した <code>data["rates"]</code> を<strong>for文でループ</strong>して、1行ずつExcelに追加していきます：</p>



<pre class="wp-block-preformatted"><code># 取得したレート情報を書き込む<br>for currency, rate in data["rates"].items():<br>    ws.append([currency, rate])<br></code></pre>



<p>これで、各通貨コード（例: USD, JPY, EUR）と、その為替レートが<strong>行ごとにExcelファイルに追加</strong>されていきます。</p>



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



<h3 class="wp-block-heading"><span id="toc29">✅ append()とは？</span></h3>



<p><code>append()</code> は、Excelファイルに<strong>行単位でデータを追加する</strong>ためのメソッドです。</p>



<pre class="wp-block-preformatted"><code>ws.append(["USD", 1.00])  # 「USD | 1.00」という行が追加される<br></code></pre>



<p>リストの形で渡すと、そのまま左から右に順番に書き込まれます。</p>



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



<h3 class="wp-block-heading"><span id="toc30">💡 補足：複数回appendすれば、表形式になる</span></h3>



<pre class="wp-block-preformatted"><code>ws.append(["通貨", "レート"])<br>ws.append(["USD", 1.00])<br>ws.append(["JPY", 157.35])<br>ws.append(["EUR", 0.91])<br></code></pre>



<p>こんな感じで書き込むと、Excelでは以下のように見えます：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>通貨</th><th>レート</th></tr></thead><tbody><tr><td>USD</td><td>1.00</td></tr><tr><td>JPY</td><td>157.35</td></tr><tr><td>EUR</td><td>0.91</td></tr></tbody></table></figure>



<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>為替レートデータをExcelに整然と出力する準備</strong>が整いました！</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="toc31">6. Excelファイルの保存と出力の確認</span></h2>



<p>ここまでで、為替レートのデータを<strong>Excelのワークブック（Workbook）に書き込む処理</strong>が完成しました。<br>最後の仕上げは、作成したExcelファイルを<strong>保存して、ユーザーに完了を伝える出力メッセージ</strong>を表示することです。</p>



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



<h3 class="wp-block-heading"><span id="toc32">💾 Excelファイルを保存する（.save()）</span></h3>



<p>Excelファイルを保存するには、以下のように <code>.save()</code> メソッドを使います。</p>



<pre class="wp-block-preformatted"><code># ファイル名を指定して保存<br>wb.save("exchange_rates.xlsx")<br></code></pre>



<p>このコードを実行すると、<strong>スクリプトを実行したフォルダに「exchange_rates.xlsx」ファイルが生成</strong>されます。</p>



<p>✅ ファイル名は自由に変えてOKですが、拡張子 <code>.xlsx</code> を忘れずにつけましょう！</p>



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



<h3 class="wp-block-heading"><span id="toc33">✅ 保存できたかどうかを知らせるメッセージ</span></h3>



<p>プログラムの最後に、<strong>処理が正常に終わったことをユーザーに知らせる</strong>出力メッセージを加えておくと、親切で実務的です。</p>



<pre class="wp-block-preformatted"><code>print("為替レートのExcelファイルが保存されました！")<br></code></pre>



<p>さらに、ファイル名や日付を表示しておくと、ログとしても便利です。</p>



<pre class="wp-block-preformatted"><code>from datetime import datetime<br><br>today = datetime.now().strftime("%Y-%m-%d")<br>print(f"[{today}] exchange_rates.xlsx に書き出しが完了しました。")<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc34">🔁 全体の流れをまとめると…</span></h3>



<p>これで、次のような流れが完成しました：</p>



<ol class="wp-block-list">
<li>APIで為替レートを取得</li>



<li>データをExcelに書き込み</li>



<li><code>.xlsx</code>ファイルとして保存</li>



<li>ユーザーにメッセージで通知</li>
</ol>



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



<h3 class="wp-block-heading"><span id="toc35">📂 実行後の確認方法</span></h3>



<p>スクリプトを実行した後は、次の点を確認してみてください：</p>



<ul class="wp-block-list">
<li>フォルダ内に <code>exchange_rates.xlsx</code> ファイルがあるか？</li>



<li>開いてみると、通貨コードとレートの一覧が正しく書かれているか？</li>



<li>保存メッセージがターミナルに表示されたか？</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>問題がなければ、<strong>Pythonでの為替レート取得＆Excel出力スクリプトが無事完成</strong>です！</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="toc36">7. おまけ：日付や時間も一緒に書き込む（発展応用）</span></h2>



<p>ここまでで、為替レートの一覧をExcelに書き込む基本的なスクリプトは完成しました。<br>でも、**「このレート、いつ取得したデータだろう？」**と後から見返すこともありますよね。</p>



<p>そこでおすすめなのが、<strong>日付や時刻も一緒にExcelに記録しておく方法</strong>です。<br>Pythonの <code>datetime</code> モジュールを使えば、とても簡単に追加できます。</p>



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



<h3 class="wp-block-heading"><span id="toc37">🕒 現在の日付・時刻を取得するには？</span></h3>



<p>以下のように、<code>datetime.now()</code> を使って、今の日時を取得できます。</p>



<pre class="wp-block-preformatted"><code>from datetime import datetime<br><br># 現在日時を取得（例：2025-06-18 15:42:00）<br>now = datetime.now()<br><br># 日付のみ取り出す（例：2025-06-18）<br>date_str = now.strftime("%Y-%m-%d")<br><br># 日時付き（例：2025-06-18 15:42:00）<br>datetime_str = now.strftime("%Y-%m-%d %H:%M:%S")<br></code></pre>



<p><code>strftime()</code> を使うことで、<strong>表示フォーマットを好きな形に変換</strong>できます。</p>



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



<h3 class="wp-block-heading"><span id="toc38">📝 Excelの表に日付列を追加するには？</span></h3>



<p>「通貨コード」「レート」だけでなく、「取得日付」も一緒に書き込めるようにしてみましょう。</p>



<h4 class="wp-block-heading"><span id="toc39">✅ ヘッダーを修正：</span></h4>



<pre class="wp-block-preformatted"><code>ws.append(["通貨コード", "為替レート", "取得日"])<br></code></pre>



<h4 class="wp-block-heading"><span id="toc40">✅ データの書き込み部分を変更：</span></h4>



<pre class="wp-block-preformatted"><code>for currency, rate in data["rates"].items():<br>    ws.append([currency, rate, date_str])<br></code></pre>



<p>これで、次のような表がExcelに記録されます：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>通貨コード</th><th>為替レート</th><th>取得日</th></tr></thead><tbody><tr><td>USD</td><td>1.00</td><td>2025-06-18</td></tr><tr><td>JPY</td><td>157.35</td><td>2025-06-18</td></tr><tr><td>EUR</td><td>0.91</td><td>2025-06-18</td></tr></tbody></table></figure>



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



<h3 class="wp-block-heading"><span id="toc41">📈 毎日データを記録するログとしても使える！</span></h3>



<p>この書き方は、<strong>毎日為替レートを記録するような自動スクリプト</strong>にも応用できます。<br>日付を残しておけば、あとで時系列でグラフを作ることもできますし、データの変化を追うのにも便利です！</p>



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



<h3 class="wp-block-heading"><span id="toc42">✅ 補足：時間まで記録したい場合は？</span></h3>



<p>日付だけでなく、時間も記録したいなら <code>datetime_str</code> を使えばOKです：</p>



<pre class="wp-block-preformatted"><code>ws.append(["通貨コード", "為替レート", "取得日時"])<br><br>for currency, rate in data["rates"].items():<br>    ws.append([currency, rate, datetime_str])<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>が完成しました！</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="toc43">8. まとめ</span></h2>



<p>今回は、<strong>Pythonを使ってWebから為替レートを自動取得し、Excelに書き込む方法</strong>を解説してきました。</p>



<p>実際にやってみると、たった数十行のコードで、</p>



<ul class="wp-block-list">
<li>最新の為替レートを無料APIから取得</li>



<li>Excelファイルに整形して出力</li>



<li>日付付きの記録も可能</li>
</ul>



<p>といった、<strong>実務でも使える便利なツール</strong>が作れてしまいます。</p>



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



<h3 class="wp-block-heading"><span id="toc44">💡 この記事で学べたこと</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>ステップ</th><th>内容</th></tr></thead><tbody><tr><td>環境構築</td><td>仮想環境の作成とライブラリのインストール（requests / openpyxl）</td></tr><tr><td>API活用</td><td>為替API（exchangerate.host）からのデータ取得方法</td></tr><tr><td>Excel操作</td><td>openpyxlによるワークブック生成・データ書き込み</td></tr><tr><td>応用</td><td>日付や時間の記録でログ管理にも対応可能</td></tr></tbody></table></figure>



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



<h3 class="wp-block-heading"><span id="toc45">📌 自動化の一歩として最適なテーマ！</span></h3>



<p>「手作業でやっていた作業をPythonで効率化したい」<br>「APIの扱い方を基礎から学びたい」<br>「Excelとの連携方法を実践したい」</p>



<p>そんな方にとって、今回の内容はまさに<strong>初めの一歩</strong>にピッタリのテーマだったのではないでしょうか？</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はデータの取得や加工、出力に強く、業務の自動化にも非常に向いています。<br>ぜひこの記事を参考に、あなた自身のアイデアでいろいろな自動ツールを作ってみてくださいね！</p>
</div></div>



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



<h2 class="wp-block-heading"><span id="toc46">🔗 あわせて読みたい</span></h2>



<h3 class="wp-block-heading"><span id="toc47">🧮 データの扱いに強くなろう！</span></h3>



<ul class="wp-block-list">
<li><a target="_blank" href="https://python.cbagames.jp/2025/06/16/python-yaml-file-basic/">【Python入門】YAMLファイルの書き方と使い方｜設定ファイルの操作をわかりやすく解説！</a><br>API連携やツール構築でよく使われるYAML形式について、基本から応用までを解説しています。</li>



<li><a target="_blank" href="https://python.cbagames.jp/2025/06/15/python-matplotlib-graph-beginner/">Pythonでグラフを描く！Matplotlibの使い方を初心者向けにやさしく解説</a><br>取得した為替データをグラフで可視化したい人におすすめです。</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc48">🧰 API・ファイル操作の基礎固めに！</span></h3>



<ul class="wp-block-list">
<li><a target="_blank" href="https://python.cbagames.jp/2025/06/16/python-gmail-api-send-receive/">【Python入門】Gmail APIでメール送受信＆添付ファイルを操作する方法をやさしく解説！</a><br>APIの扱いをもっと深く理解したい人向けに、Gmail APIの使い方も学べます。</li>



<li><a target="_blank" href="https://python.cbagames.jp/2025/06/16/python-pyinstaller-exe-guide/">【Win/Mac対応】Pythonスクリプトをexe化！PyInstallerで実行ファイルを作る方法をやさしく解説</a><br>今回の為替ツールを配布用のアプリにしたい場合に便利です。</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc49">💡 自動化スキルをレベルアップ！</span></h3>



<p><a target="_blank" href="https://python.cbagames.jp/2025/06/16/python-requirements-txt-install/">Pythonでライブラリを一括インストールする方法｜requirements.txtの使い方をやさしく解説！</a><br>仮想環境の再現や配布時に欠かせない設定ファイルの使い方をマスターできます。</p>



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



<h2 class="wp-block-heading"><span id="toc50">よくある質問（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">為替レートのAPIは無料で使えるの？</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>はい、無料で使えるAPIもあります。たとえば <a rel="noopener" target="_blank" class="" href="https://exchangerate.host/">exchangerate.host</a> はAPIキー不要で利用可能です。商用利用や高頻度アクセスには有料プランが必要な場合もあります。</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">どの通貨の為替レートが取得できますか？</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>APIによりますが、主要な通貨（USD、EUR、JPY、GBPなど）に加えて、100種類以上の通貨をサポートしていることが多いです。<code>symbols</code>パラメータで指定することで特定の通貨だけを取得することもできます。</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">データ取得のタイミングを自動化できますか？</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>可能です。Windowsの「タスクスケジューラ」や、Mac/Linuxの「cron」を使えば、毎日決まった時間にスクリプトを実行して最新の為替レートを取得できます。</p>
</div></dd></dl></div>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/18/python-exchange-rate-to-excel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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-6"><label class="toc-title" for="toc-checkbox-6">目次</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>
		<item>
		<title>【中級者向け】PythonでChatGPT APIを使う完全ガイド｜OpenAIの力を自在に使おう</title>
		<link>https://python.cbagames.jp/2025/06/04/python-chatgpt-api-guide/</link>
					<comments>https://python.cbagames.jp/2025/06/04/python-chatgpt-api-guide/#respond</comments>
		
		<dc:creator><![CDATA[asukapy]]></dc:creator>
		<pubDate>Wed, 04 Jun 2025 04:04:40 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<category><![CDATA[AI開発]]></category>
		<category><![CDATA[API連携]]></category>
		<category><![CDATA[ChatGPT API]]></category>
		<category><![CDATA[OpenAI]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[自動化スクリプト]]></category>
		<category><![CDATA[自然言語処理]]></category>
		<guid isPermaLink="false">https://python.cbagames.jp/?p=85</guid>

					<description><![CDATA[目次 1. はじめに｜ChatGPT APIをPythonで使いこなそう2. OpenAI APIの準備✅ ステップ1：OpenAIのアカウントを作成しよう✅ ステップ2：APIキーを取得する✅ ステップ3：無料プランと [&#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-8"><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1. はじめに｜ChatGPT APIをPythonで使いこなそう</a></li><li><a href="#toc2" tabindex="0">2. OpenAI APIの準備</a><ol><li><a href="#toc3" tabindex="0">✅ ステップ1：OpenAIのアカウントを作成しよう</a></li><li><a href="#toc4" tabindex="0">✅ ステップ2：APIキーを取得する</a></li><li><a href="#toc5" tabindex="0">✅ ステップ3：無料プランと有料プランの違いを理解しよう</a><ol><li><a href="#toc6" tabindex="0">💸 主なプランの違い</a></li></ol></li><li><a href="#toc7" tabindex="0">✅ ステップ4：Python開発環境を整えよう</a></li></ol></li><li><a href="#toc8" tabindex="0">3. PythonからChatGPT APIを呼び出す基本コード</a><ol><li><a href="#toc9" tabindex="0">✅ 必要なライブラリをインストールしよう</a></li><li><a href="#toc10" tabindex="0">✅ APIキーを安全に管理する</a></li><li><a href="#toc11" tabindex="0">✅ ChatGPT APIを呼び出す最小構成コード</a></li><li><a href="#toc12" tabindex="0">✅ コードのポイント解説</a></li><li><a href="#toc13" tabindex="0">✅ よくあるエラーとその対策</a></li><li><a href="#toc14" tabindex="0">✅ 出力例</a></li></ol></li><li><a href="#toc15" tabindex="0">4. ChatGPT APIの高度な使い方</a><ol><li><a href="#toc16" tabindex="0">✅ messages の構造を理解しよう</a></li><li><a href="#toc17" tabindex="0">✅ 会話を記憶させる方法（セッション管理）</a></li><li><a href="#toc18" tabindex="0">✅ モデルを切り替える（gpt-3.5とgpt-4）</a></li><li><a href="#toc19" tabindex="0">✅ プロンプト（命令文）の工夫</a><ol><li><a href="#toc20" tabindex="0">例1：フォーマットを指定する</a></li><li><a href="#toc21" tabindex="0">例2：目的をはっきり伝える</a></li><li><a href="#toc22" tabindex="0">例3：JSON形式で出力してもらう</a></li></ol></li></ol></li><li><a href="#toc23" tabindex="0">5. 実用例①：質問応答ボットを作ってみよう</a><ol><li><a href="#toc24" tabindex="0">✅ 必要なライブラリをインストールしよう</a></li><li><a href="#toc25" tabindex="0">✅ ディレクトリ構成（例）</a></li><li><a href="#toc26" tabindex="0">✅ .env にAPIキーを保存</a></li><li><a href="#toc27" tabindex="0">✅ app.py（Flaskアプリのメインファイル）</a></li><li><a href="#toc28" tabindex="0">✅ templates/index.html（HTMLテンプレート）</a></li><li><a href="#toc29" tabindex="0">✅ 実行方法</a></li><li><a href="#toc30" tabindex="0">✅ 発展のヒント</a></li></ol></li><li><a href="#toc31" tabindex="0">6. 実用例②：テキスト要約・分類・翻訳などの自動処理</a><ol><li><a href="#toc32" tabindex="0">✅ ① 長文の要約を自動化する</a></li><li><a href="#toc33" tabindex="0">✅ ② テキストをカテゴリに分類する</a></li><li><a href="#toc34" tabindex="0">✅ ③ 多言語翻訳を行う（日本語→英語など）</a></li><li><a href="#toc35" tabindex="0">✅ ④ JSON形式での出力整形（アプリ連携向け）</a></li><li><a href="#toc36" tabindex="0">✅ 実用アイデア集</a></li></ol></li><li><a href="#toc37" tabindex="0">7. よくあるエラーとその対処法</a><ol><li><a href="#toc38" tabindex="0">✅ AuthenticationError（認証エラー）</a></li><li><a href="#toc39" tabindex="0">✅ RateLimitError（レート制限エラー）</a></li><li><a href="#toc40" tabindex="0">✅ InvalidRequestError（無効なリクエスト）</a></li><li><a href="#toc41" tabindex="0">✅ APIConnectionError（接続エラー）</a></li><li><a href="#toc42" tabindex="0">✅ その他のヒント</a></li><li><a href="#toc43" tabindex="0">✅ エラーを防ぐためのベストプラクティス</a></li></ol></li><li><a href="#toc44" tabindex="0">8. まとめ｜APIでChatGPTの力を引き出そう</a></li><li><a href="#toc45" tabindex="0">よくある質問（Q&amp;A）</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">1. はじめに｜ChatGPT APIをPythonで使いこなそう</span></h2>



<p>こんにちは！この記事では「PythonでChatGPT APIを使いたいけど、どこから手をつければいいかわからない…」という中級者の方に向けて、実践的な使い方をステップごとにやさしく解説していきます。</p>



<p>みなさんもご存知のとおり、OpenAIが提供するChatGPTは、自然な対話や文章生成ができるAIとして世界中で注目を集めています。そんなChatGPTの機能を、PythonからAPIを使って直接呼び出すことができるのが「ChatGPT API」です。</p>



<p>これを使えば、次のようなことができるようになります：</p>



<ul class="wp-block-list">
<li>会話型のチャットボットを自作する</li>



<li>テキストの要約や翻訳、分類を自動化する</li>



<li>LINEやSlack、Flaskアプリなどと連携してAI機能を追加する</li>



<li>仕事の自動化（メール文生成やQA対応）にも応用できる</li>
</ul>



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



<p>本記事では、<strong>Pythonの基本文法やAPI通信にある程度慣れている方向け</strong>に、以下の内容をじっくり解説していきます。</p>



<ul class="wp-block-list">
<li>ChatGPT APIを使うための準備（APIキーの取得方法など）</li>



<li>PythonでAPIにリクエストを送る基本コード</li>



<li>会話を記憶させる方法やプロンプトの工夫</li>



<li>簡単なチャットボットや要約アプリの作成例</li>



<li>よくあるエラーとその対処法</li>
</ul>



<p>読み終えるころには、ChatGPT APIを自信をもって扱えるようになっているはずです。</p>



<p>では、さっそく始めましょう！</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="toc2">2. OpenAI APIの準備</span></h2>



<p>ChatGPT APIを使い始めるには、まず <strong>OpenAIのAPIキーを取得</strong>する必要があります。ここでは、はじめての方でも迷わないように、準備のステップを丁寧に解説します。</p>



<h3 class="wp-block-heading"><span id="toc3">✅ ステップ1：OpenAIのアカウントを作成しよう</span></h3>



<p>まずは以下のリンクから、OpenAIの公式サイトにアクセスします：</p>



<p>👉 <a rel="noopener" target="_blank" class=" broken_link" href="https://platform.openai.com/">https://platform.openai.com/</a></p>



<p>右上の「Sign Up」ボタンをクリックして、メールアドレスやGoogleアカウント、Microsoftアカウントなどで新規登録を行いましょう。</p>



<p>💡 登録時に電話番号認証があります。SMSが受け取れる番号を用意しておくとスムーズです。</p>



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



<h3 class="wp-block-heading"><span id="toc4">✅ ステップ2：APIキーを取得する</span></h3>



<p>アカウント作成後、OpenAIのダッシュボードに移動します。</p>



<ol class="wp-block-list">
<li>右上のアカウントアイコンをクリック</li>



<li>「View API keys」を選択</li>



<li>「Create new secret key」ボタンをクリック</li>



<li>表示された文字列をコピー（このキーは一度しか表示されません！）</li>
</ol>



<p>この文字列が、PythonからAPIを使うときに必要な「秘密鍵（APIキー）」になります。</p>



<p>🔐 重要：このキーは他人と絶対に共有しないようにしてください。不正利用される恐れがあります。</p>



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



<h3 class="wp-block-heading"><span id="toc5">✅ ステップ3：無料プランと有料プランの違いを理解しよう</span></h3>



<p>OpenAIは、新規ユーザー向けに「無料クレジット（例：5ドル分）」を提供しています。<br>ただし、使用量が増えるとクレジットを使い果たし、有料課金が発生します。</p>



<h4 class="wp-block-heading"><span id="toc6">💸 主なプランの違い</span></h4>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>プラン</th><th>内容</th></tr></thead><tbody><tr><td>無料プラン</td><td>gpt-3.5-turbo が使用可能。5ドル分の無料枠あり。</td></tr><tr><td>有料プラン</td><td>gpt-4が使える。使用量に応じて課金（Token課金）</td></tr><tr><td>ChatGPT Plus</td><td>月額制（例：20ドル）でChatGPT GPT-4も使用可能（※APIは別課金）</td></tr></tbody></table></figure>



<p>📘 APIでGPT-4を使いたい場合は、事前に有料アカウントの設定が必要になります。</p>



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



<h3 class="wp-block-heading"><span id="toc7">✅ ステップ4：Python開発環境を整えよう</span></h3>



<p>APIキーを取得したら、Python側でも準備をしておきましょう。</p>



<pre class="wp-block-preformatted"><code>pip install openai<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>これでOpenAIの公式ライブラリがインストールできます。<br>次は、このライブラリを使って実際にChatGPT APIを呼び出してみましょう！</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. PythonからChatGPT APIを呼び出す基本コード</span></h2>



<p>ここからはいよいよ、Pythonを使ってChatGPT APIに実際にアクセスしてみましょう。<br>まずは、<strong>シンプルな文章生成</strong>を行う基本的なコードから解説していきます。</p>



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



<h3 class="wp-block-heading"><span id="toc9">✅ 必要なライブラリをインストールしよう</span></h3>



<p>まず、OpenAIの公式ライブラリをインストールしておきましょう。</p>



<pre class="wp-block-preformatted"><code>pip install openai<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc10">✅ APIキーを安全に管理する</span></h3>



<p>APIキーはコードに直接書くのではなく、環境変数で管理すると安心です。</p>



<pre class="wp-block-preformatted"><code># .env ファイル（または環境変数）に保存する場合<br>OPENAI_API_KEY=sk-xxxxxx（←自分のAPIキーをここに）<br></code></pre>



<p>Pythonコード内では以下のように読み込めます：</p>



<pre class="wp-block-preformatted"><code>import os<br>import openai<br>from dotenv import load_dotenv<br><br>load_dotenv()  # .envファイルを読み込む<br>openai.api_key = os.getenv("OPENAI_API_KEY")<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc11">✅ ChatGPT APIを呼び出す最小構成コード</span></h3>



<pre class="wp-block-preformatted"><code>import openai<br>import os<br>from dotenv import load_dotenv<br><br>load_dotenv()<br>openai.api_key = os.getenv("OPENAI_API_KEY")<br><br>response = openai.ChatCompletion.create(<br>    model="gpt-3.5-turbo",  # または "gpt-4"<br>    messages=[<br>        {"role": "system", "content": "あなたは親切なアシスタントです。"},<br>        {"role": "user", "content": "Pythonでできる面白いプロジェクトを教えてください。"}<br>    ]<br>)<br><br>print(response['choices'][0]['message']['content'])<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc12">✅ コードのポイント解説</span></h3>



<ul class="wp-block-list">
<li><code>model</code>: 使用するモデル（例：<code>gpt-3.5-turbo</code>）</li>



<li><code>messages</code>: 会話の履歴（ロールは <code>system</code>, <code>user</code>, <code>assistant</code> の3種類）</li>



<li><code>response['choices'][0]['message']['content']</code>: AIからの回答テキスト</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc13">✅ よくあるエラーとその対策</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><code>AuthenticationError</code></td><td>APIキーが間違っている</td><td><code>.env</code>ファイルや環境変数を再確認</td></tr><tr><td><code>RateLimitError</code></td><td>リクエストが多すぎる</td><td>時間をあけて再試行、プランを見直す</td></tr><tr><td><code>InvalidRequestError</code></td><td>messagesの構造ミスなど</td><td>ロールや構文を再確認</td></tr></tbody></table></figure>



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



<h3 class="wp-block-heading"><span id="toc14">✅ 出力例</span></h3>



<pre class="wp-block-preformatted"><code>もちろんです！以下はPythonでできる面白いプロジェクトの例です：<br><br>1. 天気予報を表示するLINEボット<br>2. PDFを要約してくれる自動ツール<br>3. 音声認識でToDoリストを作るアプリ<br><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>このように、ChatGPT APIはわずか数行のコードで自然な対話を生成してくれます。</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="toc15">4. ChatGPT APIの高度な使い方</span></h2>



<p>ここからは、ChatGPT APIをより賢く、より実用的に使うための「中級テクニック」を紹介していきます。<br>特に重要なのは、<strong>会話の文脈保持</strong>や<strong>プロンプトの工夫</strong>です。これらを理解すれば、ChatGPTをまるで「自分専用アシスタント」のように動かせるようになります！</p>



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



<h3 class="wp-block-heading"><span id="toc16">✅ messages の構造を理解しよう</span></h3>



<p>ChatGPT APIでは、「メッセージの履歴」を送ることで文脈を理解させることができます。<br>これが <code>messages</code> パラメータの中身です。</p>



<pre class="wp-block-preformatted"><code>messages = [<br>    {"role": "system", "content": "あなたは親切で詳しいPythonの先生です。"},<br>    {"role": "user", "content": "リストの使い方を教えてください。"},<br>    {"role": "assistant", "content": "リストは複数の値をまとめて扱える便利な構造です。"},<br>    {"role": "user", "content": "じゃあ、辞書との違いは？"}<br>]<br></code></pre>



<p>このように、過去のやりとりを含めて送ることで、「会話の文脈」が保たれるのです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>💡 <code>system</code> ロールは、AIの性格や役割を設定する重要な要素です。<br>例：「あなたはユーモアのある科学の先生です」「あなたは厳しいコードレビュー担当者です」など。</p>
</blockquote>



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



<h3 class="wp-block-heading"><span id="toc17">✅ 会話を記憶させる方法（セッション管理）</span></h3>



<p>実際にチャットアプリなどを作る場合は、ユーザーごとにこの <code>messages</code> を保存しておくと会話の流れが自然になります。</p>



<pre class="wp-block-preformatted"><code># ユーザーごとの会話履歴を記録する例<br>conversation = []<br><br>conversation.append({"role": "user", "content": "こんにちは"})<br>response = openai.ChatCompletion.create(<br>    model="gpt-3.5-turbo",<br>    messages=conversation<br>)<br>reply = response['choices'][0]['message']['content']<br>conversation.append({"role": "assistant", "content": reply})<br></code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>💡 注意点：無料プランでは1回のリクエストに送れるトークン（単語数）に制限があります。gpt-3.5-turboで<strong>最大約4,000トークン</strong>です。</p>
</blockquote>



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



<h3 class="wp-block-heading"><span id="toc18">✅ モデルを切り替える（gpt-3.5とgpt-4）</span></h3>



<p>必要に応じてモデルを切り替えることもできます。</p>



<pre class="wp-block-preformatted"><code># gpt-4を使いたい場合（有料アカウントが必要）<br>response = openai.ChatCompletion.create(<br>    model="gpt-4",<br>    messages=messages<br>)<br></code></pre>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>モデル</th><th>特徴</th></tr></thead><tbody><tr><td>gpt-3.5-turbo</td><td>軽くて安い。レスポンスも速い。無料枠でも使える。</td></tr><tr><td>gpt-4</td><td>より精度が高く、長い文脈にも強い。コストは高め。</td></tr></tbody></table></figure>



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



<h3 class="wp-block-heading"><span id="toc19">✅ プロンプト（命令文）の工夫</span></h3>



<p>AIの応答は「プロンプト」に大きく左右されます。以下のように具体的であればあるほど、期待通りの結果が得られやすいです。</p>



<h4 class="wp-block-heading"><span id="toc20">例1：フォーマットを指定する</span></h4>



<pre class="wp-block-preformatted"><code>{"role": "user", "content": "Pythonで九九を出力するコードを教えて。コードだけ返して。"}<br></code></pre>



<h4 class="wp-block-heading"><span id="toc21">例2：目的をはっきり伝える</span></h4>



<pre class="wp-block-preformatted"><code>{"role": "system", "content": "あなたは教育者です。小学生にもわかるようにやさしく説明してください。"}<br></code></pre>



<h4 class="wp-block-heading"><span id="toc22">例3：JSON形式で出力してもらう</span></h4>



<pre class="wp-block-preformatted"><code>{"role": "user", "content": "以下の文章を要約して、タイトルと本文に分けてJSONで出力して"}<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>このように、ちょっとした工夫でChatGPT APIはグンと使いやすくなります。<br>次は、<strong>実際にChatGPT APIを使った「質問応答ボット」や「文章要約ツール」の作成例</strong>を紹介していきます！</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="toc23">5. 実用例①：質問応答ボットを作ってみよう</span></h2>



<p>ここでは、ChatGPT APIを使って <strong>シンプルな質問応答ボット</strong> を作ってみましょう！<br>PythonとFlask（軽量なWebフレームワーク）を使えば、ローカル環境で簡単にWebチャットボットを動かすことができます。</p>



<p>💡 実際のチャットUIまでは作らず、「フォームで質問 → ChatGPTが答える」流れを作ってみます！</p>



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



<h3 class="wp-block-heading"><span id="toc24">✅ 必要なライブラリをインストールしよう</span></h3>



<p>まずはFlaskとOpenAIライブラリをインストールします。</p>



<pre class="wp-block-preformatted"><code>pip install flask openai python-dotenv<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc25">✅ ディレクトリ構成（例）</span></h3>



<pre class="wp-block-preformatted"><code>chatbot-app/<br>├── app.py<br>├── .env<br>└── templates/<br>    └── index.html<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc26">✅ .env にAPIキーを保存</span></h3>



<p><code>.env</code> ファイルを作成して、OpenAIのAPIキーを記述します。</p>



<pre class="wp-block-preformatted"><code>OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc27">✅ app.py（Flaskアプリのメインファイル）</span></h3>



<pre class="wp-block-preformatted"><code>from flask import Flask, request, render_template<br>import openai<br>import os<br>from dotenv import load_dotenv<br><br>load_dotenv()<br>openai.api_key = os.getenv("OPENAI_API_KEY")<br><br>app = Flask(__name__)<br><br>@app.route("/", methods=["GET", "POST"])<br>def index():<br>    answer = ""<br>    if request.method == "POST":<br>        user_input = request.form["question"]<br>        response = openai.ChatCompletion.create(<br>            model="gpt-3.5-turbo",<br>            messages=[<br>                {"role": "system", "content": "あなたは親切な質問応答ボットです。"},<br>                {"role": "user", "content": user_input}<br>            ]<br>        )<br>        answer = response["choices"][0]["message"]["content"]<br>    return render_template("index.html", answer=answer)<br><br>if __name__ == "__main__":<br>    app.run(debug=True)<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc28">✅ templates/index.html（HTMLテンプレート）</span></h3>



<pre class="wp-block-preformatted"><code>&lt;!doctype html><br>&lt;html><br>&lt;head><br>  &lt;title>質問応答ボット&lt;/title><br>&lt;/head><br>&lt;body><br>  &lt;h1>ChatGPT 質問応答ボット&lt;/h1><br>  &lt;form method="POST"><br>    &lt;label>質問を入力してください：&lt;/label>&lt;br><br>    &lt;input type="text" name="question" size="50"><br>    &lt;button type="submit">送信&lt;/button><br>  &lt;/form><br>  {% if answer %}<br>    &lt;h2>AIの回答：&lt;/h2><br>    &lt;p>{{ answer }}&lt;/p><br>  {% endif %}<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="toc29">✅ 実行方法</span></h3>



<pre class="wp-block-preformatted"><code>python app.py<br></code></pre>



<p>表示されたURL（通常は <code>http://127.0.0.1:5000/</code>）を開くと、質問フォームが出現します。<br>「Pythonの関数ってなに？」などと入力して送信すれば、ChatGPTが答えてくれます！</p>



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



<h3 class="wp-block-heading"><span id="toc30">✅ 発展のヒント</span></h3>



<ul class="wp-block-list">
<li><strong>セッション管理</strong>で会話の履歴を保持する</li>



<li>フロントエンドに <strong>チャットUI（StreamlitやReactなど）</strong> を導入する</li>



<li>回答を <strong>ログに保存</strong>して、分析に活用する</li>
</ul>



<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="toc31">6. 実用例②：テキスト要約・分類・翻訳などの自動処理</span></h2>



<p>ChatGPT APIは、質問応答だけでなく、<strong>文章の要約、分類、翻訳、キーワード抽出</strong>などさまざまな自然言語処理タスクにも活用できます。<br>ここでは、それぞれの実用例をPythonコード付きで紹介していきます。</p>



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



<h3 class="wp-block-heading"><span id="toc32">✅ ① 長文の要約を自動化する</span></h3>



<p>大量の文章を読みたくないとき、ChatGPTに要約してもらえば時短にもなります！</p>



<pre class="wp-block-preformatted"><code>import openai<br><br>def summarize_text(text):<br>    response = openai.ChatCompletion.create(<br>        model="gpt-3.5-turbo",<br>        messages=[<br>            {"role": "system", "content": "あなたはプロの要約ライターです。"},<br>            {"role": "user", "content": f"以下の文章をわかりやすく3行で要約してください：\n{text}"}<br>        ]<br>    )<br>    return response["choices"][0]["message"]["content"]<br><br>sample_text = """<br>Pythonは、可読性が高く、豊富なライブラリが揃っているため、初心者からプロまで幅広く使われているプログラミング言語です。<br>Web開発やデータ分析、AI開発など、多岐にわたる分野で活躍しています。<br>特に最近では、機械学習や自然言語処理の分野で注目を集めています。<br>"""<br><br>print(summarize_text(sample_text))<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc33">✅ ② テキストをカテゴリに分類する</span></h3>



<p>たとえば、問い合わせメールを「要望」「クレーム」「質問」などに分類したいときに便利です。</p>



<pre class="wp-block-preformatted"><code>def classify_text(text):<br>    response = openai.ChatCompletion.create(<br>        model="gpt-3.5-turbo",<br>        messages=[<br>            {"role": "system", "content": "あなたは文章をカテゴリに分類するAIです。"},<br>            {"role": "user", "content": f"次の文章を分類してください：{text}\nカテゴリ候補：要望, クレーム, 質問"}<br>        ]<br>    )<br>    return response["choices"][0]["message"]["content"]<br><br>print(classify_text("アプリの動作が遅いので改善してほしいです。"))<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc34">✅ ③ 多言語翻訳を行う（日本語→英語など）</span></h3>



<pre class="wp-block-preformatted"><code>def translate_text(text, to_lang="English"):<br>    response = openai.ChatCompletion.create(<br>        model="gpt-3.5-turbo",<br>        messages=[<br>            {"role": "system", "content": f"あなたは優秀な翻訳家です。"},<br>            {"role": "user", "content": f"次の文章を{to_lang}に翻訳してください：{text}"}<br>        ]<br>    )<br>    return response["choices"][0]["message"]["content"]<br><br>print(translate_text("今日はとても良い天気ですね。"))<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc35">✅ ④ JSON形式での出力整形（アプリ連携向け）</span></h3>



<p>APIの返答をそのままUIに使うときは、**構造化出力（JSON形式）**が便利です。</p>



<pre class="wp-block-preformatted"><code>def extract_info_json(text):<br>    response = openai.ChatCompletion.create(<br>        model="gpt-3.5-turbo",<br>        messages=[<br>            {"role": "system", "content": "以下の文章から「名前」「メールアドレス」「要望内容」をJSONで抽出してください。"},<br>            {"role": "user", "content": f"{text}"}<br>        ]<br>    )<br>    return response["choices"][0]["message"]["content"]<br><br>sample = "こんにちは、私は田中一郎です。tanaka@example.com に連絡をください。機能追加の要望があります。"<br>print(extract_info_json(sample))<br></code></pre>



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



<h3 class="wp-block-heading"><span id="toc36">✅ 実用アイデア集</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>機能</th><th>活用例</th></tr></thead><tbody><tr><td>要約</td><td>ニュース記事、議事録の要約</td></tr><tr><td>分類</td><td>お問い合わせ対応、SNS投稿の感情分析</td></tr><tr><td>翻訳</td><td>グローバル対応のWebサービス</td></tr><tr><td>JSON出力</td><td>Slack botやLINE botとの連携データ</td></tr></tbody></table></figure>



<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="toc37">7. よくあるエラーとその対処法</span></h2>



<p>ChatGPT APIを使っていると、<strong>予期せぬエラー</strong>に遭遇することがあります。<br>エラーメッセージは英語で表示されることが多く、初めてだとちょっと焦りますよね。</p>



<p>ここでは、<strong>よくあるエラーとその原因・対処法</strong>をわかりやすくまとめました。</p>



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



<h3 class="wp-block-heading"><span id="toc38">✅ AuthenticationError（認証エラー）</span></h3>



<p><strong>エラーメッセージ例：</strong></p>



<pre class="wp-block-preformatted"><code>openai.error.AuthenticationError: No API key provided<br></code></pre>



<p><strong>原因：</strong><br>APIキーが設定されていない、または間違っている。</p>



<p><strong>対処法：</strong></p>



<ul class="wp-block-list">
<li><code>.env</code> ファイルで <code>OPENAI_API_KEY</code> が正しく設定されているか確認</li>



<li><code>openai.api_key = os.getenv("OPENAI_API_KEY")</code> の記述を見直す</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc39">✅ RateLimitError（レート制限エラー）</span></h3>



<p><strong>エラーメッセージ例：</strong></p>



<pre class="wp-block-preformatted"><code>openai.error.RateLimitError: You exceeded your current quota<br></code></pre>



<p><strong>原因：</strong><br>一定時間内に送信できるリクエスト数を超えた、または無料枠を使い切った。</p>



<p><strong>対処法：</strong></p>



<ul class="wp-block-list">
<li>時間を置いて再試行する（数分〜数時間）</li>



<li>OpenAIのダッシュボードで利用状況を確認する</li>



<li>有料プランにアップグレードすることを検討</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc40">✅ InvalidRequestError（無効なリクエスト）</span></h3>



<p><strong>エラーメッセージ例：</strong></p>



<pre class="wp-block-preformatted"><code>openai.error.InvalidRequestError: This model's maximum context length is 4097 tokens<br></code></pre>



<p><strong>原因：</strong><br>1リクエストのトークン数（文字数）がモデルの上限を超えている。</p>



<p><strong>対処法：</strong></p>



<ul class="wp-block-list">
<li><code>messages</code>の内容を削る</li>



<li>会話履歴を適宜リセット・要約する</li>



<li>より長文対応のモデル（gpt-4-32kなど）に変更する</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc41">✅ APIConnectionError（接続エラー）</span></h3>



<p><strong>エラーメッセージ例：</strong></p>



<pre class="wp-block-preformatted"><code>openai.error.APIConnectionError: Error communicating with OpenAI<br></code></pre>



<p><strong>原因：</strong><br>ネットワーク障害やOpenAIサーバーの一時的な不具合。</p>



<p><strong>対処法：</strong></p>



<ul class="wp-block-list">
<li>インターネット接続を確認する</li>



<li>数分後に再試行する</li>



<li><a rel="noopener" target="_blank" class="" href="https://status.openai.com/">OpenAIのステータスページ</a>で障害情報を確認</li>
</ul>



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



<h3 class="wp-block-heading"><span id="toc42">✅ その他のヒント</span></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>状況</th><th>対処法</th></tr></thead><tbody><tr><td>複数回エラーが続く</td><td>リクエストを一度に大量に送っていないか確認</td></tr><tr><td>無反応になる</td><td>タイムアウト設定を確認する（例：<code>timeout=30</code>）</td></tr><tr><td>JSON解析に失敗</td><td>ChatGPTの出力が完全なJSONでない場合は正規表現などで補正</td></tr></tbody></table></figure>



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



<h3 class="wp-block-heading"><span id="toc43">✅ エラーを防ぐためのベストプラクティス</span></h3>



<ul class="wp-block-list">
<li><strong>try-except構文</strong>で例外処理を入れておく</li>



<li><strong>ログ出力</strong>でエラー原因を特定しやすくする</li>



<li><strong>利用制限・料金管理</strong>のためにOpenAIの管理画面を定期的に確認</li>
</ul>



<pre class="wp-block-preformatted"><code>try:<br>    response = openai.ChatCompletion.create( ... )<br>except openai.error.OpenAIError as e:<br>    print(f"エラーが発生しました: {e}")</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>これで、ChatGPT APIをより安心して使いこなせるようになりますね！</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="toc44">8. まとめ｜APIでChatGPTの力を引き出そう</span></h2>



<p>この記事では、<strong>PythonでChatGPT APIを活用するための基本から応用まで</strong>をステップバイステップで紹介してきました。</p>



<p>おさらいすると、次のようなことができるようになったはずです：</p>



<p>✅ OpenAI APIキーの取得方法と基本の準備<br>✅ PythonでChatGPT APIを呼び出すコードの書き方<br>✅ <code>messages</code>構造を使った会話の文脈保持<br>✅ 質問応答ボットやテキスト自動処理（要約・分類・翻訳）の実装例<br>✅ よくあるエラーとその対処方法</p>



<p>ChatGPT APIは、<strong>工夫次第で業務効率化からアプリ開発まで活用の幅が広がる万能ツール</strong>です。<br>中級者であれば、FlaskやFastAPIと組み合わせて<strong>LINE連携ボット</strong>や<strong>Slack自動返信システム</strong>なども作れるようになります。</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 × ChatGPT API」の世界は本当に奥が深く、楽しいですよ！</p>



<p>今後はさらに、<strong>データベースとの連携</strong>や<strong>ユーザーごとのパーソナライズ</strong>なども視野に入れてみましょう。</p>
</div></div>



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



<h2 class="wp-block-heading"><span id="toc45">よくある質問（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">ChatGPT APIの利用にお金はかかりますか？</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>初回登録時に無料クレジット（例：5ドル分）が付与されるので、まずは無料で試せます。それ以降は使用したトークン数に応じて課金されます。gpt-3.5-turboは比較的安価ですが、gpt-4を使う場合は有料アカウントが必要です。</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">ChatGPT APIとブラウザ版のChatGPT（chat.openai.com）の違いは？</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>ブラウザ版はUI付きで手軽に使えるのに対し、APIは<strong>自作アプリやスクリプトに組み込んで使える自由度の高い手段</strong>です。LINEやSlackのボット、自動応答システムなどを構築するならAPIが向いています。</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">GPT-4はどうすれば使えますか？</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>GPT-4をAPIで利用するには、有料プラン（ChatGPT Plusとは別）に申し込む必要があります。OpenAIのダッシュボードで有効化されているかを確認し、<code>model="gpt-4"</code> と指定することで使用できます。</p>
</div></dd></dl></div>
]]></content:encoded>
					
					<wfw:commentRss>https://python.cbagames.jp/2025/06/04/python-chatgpt-api-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
