読み込み中...
バイブコーディングでAIにコードを書いてもらっていると、こんな場面に出くわしませんか?
これらのサービスを利用するには、APIキーというものが必要です。そしてこのAPIキーの扱いを間違えると、数万円〜数十万円の請求が届くという恐ろしい事態になることがあります。
この記事では、APIキーとは何か、なぜ危険なのか、そしてどうやって安全に管理するのかを、初心者の方にもわかりやすく解説します。
あなた専用の「サービス利用パスワード」 です。
OpenAI、Google、Amazon、Stripeなど、多くのWebサービスは「API(Application Programming Interface)」という仕組みを通じて、プログラムから利用できるようになっています。
このAPIを利用するためには、「あなたが誰なのか」をサービス側に証明する必要があります。その証明に使うのがAPIキーです。
APIキーは、こんな見た目をしています:
1OpenAI: sk-proj-abc123def456ghi789jkl012mno345...
2Google: AIzaSyD-abcdefghijklmnopqrstuvwxyz12345
3Stripe: sk_live_51abc2def3ghi4jkl5mno6pqr7stu8vwxランダムな英数字の文字列で、サービスによって形式は異なりますが、役割は同じです。
APIキーを持っていると、以下のようなことができます:
つまり、APIキーはあなたのアカウントでサービスを使う権限そのものです。
APIキーの漏洩は、決して他人事ではありません。世界中で毎日のように起きています。
事例1:GitHubに公開してしまい、数時間で100万円の請求
ある開発者がAWS(Amazon Web Services)のAPIキーをソースコードに直書きしたまま、GitHubにプッシュしました。数時間後、そのキーを悪用され、暗号通貨のマイニングに使われた結果、約100万円の請求が届きました。
事例2:OpenAI APIキーの漏洩で高額請求
バイブコーディングでOpenAI APIを使ったアプリを作り、そのコードをGitHubに公開した初心者が、APIキーを含めたままプッシュ。第三者に大量リクエストを送られ、数万円の利用料が発生しました。
事例3:GitHubの自動スキャン
実は、GitHubにはシークレットスキャンという機能があり、公開リポジトリにAPIキーが含まれていないかを自動的にチェックしています。それほど、キーの漏洩は頻繁に起きているということです。
逆に言えば、悪意のある第三者も同じようにGitHubを自動スキャンして、漏洩したAPIキーを探し回っています。公開した瞬間に見つけられると思ってください。
多くの場合、原因は「APIキーをソースコードに直接書いてしまうこと」です。ソースコードをGitHubなどに公開すると、キーも一緒に公開されてしまいます。
特にバイブコーディングでは、AIが生成したコードの中にAPIキーを直接埋め込んでしまうケースが少なくありません。AIは「動くコード」を書くことを優先するため、セキュリティの配慮が十分でないことがあるのです。
以下は、絶対にやってはいけないコードの書き方です:
1import openai
2
3# 危険!APIキーを直接書いている
4client = openai.OpenAI(api_key="sk-proj-abc123def456ghi789...")
5
6response = client.chat.completions.create(
7 model="gpt-4o",
8 messages=[{"role": "user", "content": "こんにちは"}]
9)
10print(response.choices[0].message.content)このコードには2つの問題があります:
1. ソースコードを共有できない — GitHubにアップロードした瞬間、キーが世界中に公開される
2. キーの変更が面倒 — キーを更新するたびに、ソースコードのすべての箇所を書き換える必要がある
AIが生成するコードでは、こういった直書きパターンがよく出てきます。AIにコードを書いてもらったら、APIキーが直接書かれていないか必ずチェックする習慣をつけましょう。
1# これもダメ!変数に入れても同じこと
2API_KEY = "sk-proj-abc123def456ghi789..."
3client = openai.OpenAI(api_key=API_KEY)変数に入れたとしても、ソースコードにキーの文字列が含まれていることに変わりはありません。ファイルを共有すればキーも一緒に漏れます。
APIキーなどの秘密情報を、ソースコードとは別のファイルに保存する仕組みです。
.env ファイルは、「環境変数(environment variables)」を定義するためのテキストファイルです。名前の .env は「environment(環境)」の略です。
.env ファイルの中身はとてもシンプルです:
1OPENAI_API_KEY=sk-proj-abc123def456ghi789...
2GOOGLE_MAPS_API_KEY=AIzaSyD-abcdefghijklmnopqrstuvwxyz12345
3DATABASE_URL=postgresql://user:password@localhost:5432/mydbルールは簡単です:
= の前後にスペースを入れない)1# OpenAI APIの設定
2OPENAI_API_KEY=sk-proj-abc123def456ghi789...
3
4# データベースの設定
5DATABASE_URL=postgresql://user:password@localhost:5432/mydb
6
7# デバッグモード(開発中はTrueにする)
8DEBUG=Trueポイントは、ソースコードと秘密情報を分離することです。
1プロジェクトフォルダ/
2├── .env ← 秘密情報(Gitに含めない)
3├── .gitignore ← .envをGitから除外する設定
4├── main.py ← ソースコード(Gitに含める)
5└── requirements.txt ← パッケージ一覧(Gitに含める)こうすることで:
Pythonで .env ファイルを読み込むには、python-dotenv というライブラリを使います。
まず、仮想環境を有効にした状態で、以下を実行します:
1pip install python-dotenv仮想環境(venv)についてよくわからない方は、「バイブコーディングの前に知っておきたい!Python仮想環境(venv)超入門」の記事を先にご覧ください。
プロジェクトのルートフォルダ(main.py と同じ場所)に、.env という名前のファイルを作成します。
Macの場合:
1touch .envWindowsの場合:
エクスプローラーでは .env というファイル名を作りにくいため、ターミナル(コマンドプロンプトやPowerShell)で作成するのがおすすめです:
1echo. > .envまたは、VSCodeなどのエディタで新しいファイルを作成し、ファイル名を .env にして保存してください。
作成した .env ファイルに、APIキーを記入します:
1OPENAI_API_KEY=sk-proj-ここにあなたのAPIキーを貼り付ける1import os
2from dotenv import load_dotenv
3
4# .envファイルを読み込む
5load_dotenv()
6
7# 環境変数からAPIキーを取得する
8api_key = os.getenv("OPENAI_API_KEY")
9
10# 確認(本番コードではこのprintは削除すること!)
11print(f"APIキーの先頭5文字: {api_key[:5]}...")このコードの流れを説明します:
1. load_dotenv() — .env ファイルの中身を読み込んで、環境変数として設定する
2. os.getenv("OPENAI_API_KEY") — 環境変数 OPENAI_API_KEY の値を取得する
load_dotenv() を呼んだ後は、.env に書いた値を os.getenv() で取得できるようになります。
1# キーが見つからない場合にデフォルト値を設定できる
2debug_mode = os.getenv("DEBUG", "False")
3
4# キーが存在するかチェックする
5api_key = os.getenv("OPENAI_API_KEY")
6if api_key is None:
7 print("エラー: OPENAI_API_KEYが設定されていません。")
8 print(".envファイルにAPIキーを記入してください。")
9 exit(1)キーが見つからない場合にわかりやすいエラーメッセージを出すようにしておくと、デバッグが楽になります。
.gitignore は、Gitに「このファイルは追跡しないでください」と伝えるための設定ファイルです。
プロジェクトのルートにある .gitignore ファイルを開き(なければ作成し)、以下を追加します:
1# 環境変数ファイル(APIキーなどの秘密情報)
2.env
3.env.local
4.env.production
5
6# Python関連
7venv/
8__pycache__/
9*.pycこれで、git add . や git commit をしても、.env ファイルはGitに含まれなくなります。
.gitignore はプロジェクトの一番最初に設定してください。
なぜなら、一度でも .env をGitにコミットしてしまうと、.gitignore に追加しても過去のコミット履歴に残ったままだからです。GitHubにプッシュした後に .gitignore を追加しても、すでに公開されたキーは取り消せません。
もし既にコミットしてしまった場合の対処法は、この記事の最後で説明します。
.gitignore が正しく機能しているか確認するには:
1git statusこのコマンドの結果に .env が表示されていなければ、正しく除外されています。もし .env が表示されている場合は、.gitignore の記述を確認してください。
.env ファイルをGitに含めないということは、チームメンバーがプロジェクトをクローンしたとき、どんな環境変数が必要なのかわからないということです。
.env.example(または .env.sample)という名前のファイルを作り、キー名だけを記載して、値は空にするファイルをGitに含めます。
1# .env.example(このファイルはGitに含める)
2
3# OpenAI APIキー(https://platform.openai.com/api-keys で取得)
4OPENAI_API_KEY=
5
6# Google Maps APIキー(必要に応じて)
7GOOGLE_MAPS_API_KEY=
8
9# デバッグモード(開発時はTrue、本番はFalse)
10DEBUG=Falseこのファイルには秘密情報が含まれていないので、安全にGitにコミットできます。
新しいメンバーがプロジェクトに参加したときの手順は:
1# 1. プロジェクトをクローン
2git clone https://github.com/your-name/your-project.git
3cd your-project
4
5# 2. .env.exampleをコピーして.envを作成
6cp .env.example .env
7
8# 3. .envファイルを開いて、自分のAPIキーを記入
9# (エディタで.envを開き、各キーの値を入力する)
10
11# 4. 仮想環境を作成してパッケージをインストール
12python -m venv venv
13source venv/bin/activate # Mac
14# venv\Scripts\activate # Windows
15pip install -r requirements.txt.env.example があることで、「どんな環境変数が必要で、どこで取得するのか」が一目瞭然になります。コメントで取得先のURLを書いておくと、さらに親切です。
ここまで学んだことを組み合わせて、OpenAI APIを安全に使う実践例を見てみましょう。
1my-ai-app/
2├── .env ← APIキー(Gitに含めない)
3├── .env.example ← テンプレート(Gitに含める)
4├── .gitignore ← Git除外設定(Gitに含める)
5├── main.py ← メインコード(Gitに含める)
6├── requirements.txt ← パッケージ一覧(Gitに含める)
7└── venv/ ← 仮想環境(Gitに含めない)1OPENAI_API_KEY=sk-proj-ここにあなたのAPIキーを貼り付ける
2MODEL_NAME=gpt-4o1# OpenAI APIキー(https://platform.openai.com/api-keys で取得)
2OPENAI_API_KEY=
3# 使用するモデル名
4MODEL_NAME=gpt-4o1.env
2venv/
3__pycache__/
4*.pyc1openai==1.82.0
2python-dotenv==1.1.01import os
2import sys
3from dotenv import load_dotenv
4from openai import OpenAI
5
6# .envファイルを読み込む
7load_dotenv()
8
9# APIキーを環境変数から取得
10api_key = os.getenv("OPENAI_API_KEY")
11model_name = os.getenv("MODEL_NAME", "gpt-4o")
12
13# APIキーが設定されているか確認
14if not api_key:
15 print("エラー: OPENAI_API_KEYが設定されていません。")
16 print("")
17 print("以下の手順で設定してください:")
18 print("1. .env.example をコピーして .env を作成")
19 print(" cp .env.example .env")
20 print("2. .env ファイルを開いてAPIキーを記入")
21 print("")
22 print("APIキーは https://platform.openai.com/api-keys で取得できます。")
23 sys.exit(1)
24
25# OpenAIクライアントを作成
26client = OpenAI(api_key=api_key)
27
28def chat(user_message):
29 """ユーザーのメッセージをOpenAI APIに送信し、回答を返す"""
30 response = client.chat.completions.create(
31 model=model_name,
32 messages=[
33 {"role": "system", "content": "あなたは親切で丁寧なアシスタントです。"},
34 {"role": "user", "content": user_message}
35 ]
36 )
37 return response.choices[0].message.content
38
39# 実行
40if __name__ == "__main__":
41 question = "Pythonの.envファイルについて、一言で教えてください。"
42 answer = chat(question)
43 print(f"質問: {question}")
44 print(f"回答: {answer}")このコードのポイントをまとめます:
1. `load_dotenv()` で .env ファイルからAPIキーを読み込む
2. `os.getenv()` で環境変数を取得する
3. APIキーが未設定の場合は、わかりやすいエラーメッセージを表示して終了する
4. ソースコード内にAPIキーの文字列が一切含まれていない
このコードをGitHubにそのまま公開しても、APIキーは漏洩しません。
Pythonだけでなく、Node.js(JavaScript/TypeScript)でも .env ファイルは広く使われています。簡単に紹介しておきます。
Node.js 20.6以降では、追加のパッケージなしで .env ファイルを読み込めるようになりました:
1node --env-file=.env app.js1// app.js
2const apiKey = process.env.OPENAI_API_KEY;
3console.log("APIキーが設定されています:", !!apiKey);Node.js 20.6より前のバージョンや、より細かい制御が必要な場合は、dotenv パッケージを使います:
1npm install dotenv1// app.js
2require('dotenv').config();
3
4const apiKey = process.env.OPENAI_API_KEY;
5
6if (!apiKey) {
7 console.error("エラー: OPENAI_API_KEYが設定されていません。");
8 process.exit(1);
9}
10
11console.log("APIキーが設定されています:", !!apiKey);Next.jsでは、.env.local ファイルが自動的に読み込まれます。追加のパッケージは不要です:
1# .env.local
2OPENAI_API_KEY=sk-proj-...
3NEXT_PUBLIC_SITE_URL=https://example.comNEXT_PUBLIC_ で始まる環境変数はブラウザ側(クライアントサイド)でも参照できます。APIキーには絶対に `NEXT_PUBLIC_` を付けないでください。 ブラウザから誰でも読み取れてしまいます。
以下のリストを、プロジェクトを始めるたびに確認してください。
.gitignore ファイルを作成し、.env を追加した.env ファイルを作成し、APIキーを記入した.env.example ファイルを作成し、キー名のみ記載したgit status で .env が含まれていないことを確認したos.getenv() で環境変数から取得しているprint(api_key) をコードに残していない.env から読み込む方式に修正したgit diff --staged で、コミットする内容にAPIキーが含まれていないか確認した.env ファイルがコミット対象に含まれていないか確認したsk_test_)と本番用キー(sk_live_)を間違えないこと万が一、APIキーを公開してしまった場合は、すぐに行動してください。時間が経つほど被害が拡大します。
1. APIキーを無効化(失効)させる
各サービスの管理画面にログインし、漏洩したキーを無効化します:
2. 新しいAPIキーを発行する
同じ管理画面で、新しいキーを発行し、.env ファイルに記入します。
3. 利用履歴を確認する
各サービスの利用状況ダッシュボードで、不正利用がないか確認します。身に覚えのない利用があった場合は、サービス提供元に問い合わせてください。
.env をGitにコミットしてしまった場合、.gitignore に追加しただけでは、過去のコミット履歴にキーが残ったままです。
まだGitHubにプッシュしていない場合:
直前のコミットに .env が含まれていた場合は、以下で対処できます:
1# .envをGitの追跡対象から外す
2git rm --cached .env
3
4# .gitignoreに.envを追加(まだの場合)
5echo ".env" >> .gitignore
6
7# 修正をコミット
8git add .gitignore
9git commit -m "Remove .env from tracking and update .gitignore"ただし、これは最新のコミットから .env を削除するだけです。過去のコミット履歴にはまだ残っている可能性があります。
既にGitHubにプッシュしてしまった場合:
1. まず、上記の「即座にやるべきこと」を実行し、キーを無効化する(これが最優先)
2. GitHubリポジトリがプライベートであれば、履歴の削除は必須ではないが、念のため行うことを推奨
3. パブリックリポジトリの場合、既に第三者に読まれている可能性が高いので、キーの無効化が最も重要
履歴から完全に削除するには git filter-branch や BFG Repo-Cleaner といったツールを使いますが、これは上級者向けの操作です。まずはキーの無効化を最優先にしてください。
多くのAPIサービスでは、利用量の上限(リミット)を設定できます。万が一キーが漏洩しても、被害を最小限に抑えられます。
OpenAIの場合:
1. https://platform.openai.com/settings/organization/limits にアクセス
2. 「Monthly budget」で月間の利用上限を設定
3. 例:月5ドル(約750円)に設定しておけば、それ以上は課金されない
Googleの場合:
1. Google Cloud Consoleの「請求」 > 「予算とアラート」
2. 予算を設定し、閾値を超えたら通知が届くようにする
APIキーの管理と同じくらい、利用上限の設定は重要です。キーを発行したら、必ずセットで上限も設定する習慣をつけてください。
| やること | 具体的な方法 |
|---|---|
| APIキーをコードに直書きしない | .env ファイルに記載し、os.getenv() で読み込む |
.env をGitに含めない | .gitignore に .env を追加する |
| テンプレートを共有する | .env.example にキー名のみ記載してGitに含める |
| 利用上限を設定する | 各サービスの管理画面で月間上限を設定する |
| 漏洩したらすぐ無効化 | 管理画面でキーを失効させ、新しいキーを発行する |
1# python-dotenvのインストール
2pip install python-dotenv
3
4# .envファイルの作成
5touch .env # Mac
6echo. > .env # Windows
7
8# .gitignoreへの追加
9echo ".env" >> .gitignore
10
11# .env.exampleの作成(.envからコピーして値を削除)
12cp .env .env.example
13# その後、.env.exampleの値を手動で削除する
14
15# Gitで.envが追跡されていないか確認
16git status
17
18# コミット内容にAPIキーが含まれていないか確認
19git diff --stagedAIにコードを書いてもらうときは、最初にこう伝えてください:
「APIキーは.envファイルから読み込む形にしてください。python-dotenvを使います。コード内にAPIキーを直接書かないでください。」
この一言を添えるだけで、AIはセキュリティを考慮したコードを生成してくれるようになります。
APIキーの管理は、プログラミングを始めたばかりの段階で身につけておきたい基本中の基本です。面倒に感じるかもしれませんが、一度習慣にしてしまえば、数分の手間で大きなリスクを回避できます。
さあ、.envファイルを使って、安全にAPIを活用してみましょう!

AIを使ってWebアプリを作り、実際にインターネットに公開するまでの全体像をわかりやすく解説します。企画→開発→デプロイの流れ、使うツールや技術の選び方、初心者が陥りやすい落とし穴まで、バイブコーディング時代の開発プロセスを俯瞰できるコラムです。
無料
AIがコードを書いてくれる「Claude Code」を徹底解説。Claude Codeとは何か、何ができるのか、インストール方法から基本的な使い方まで、初心者にもわかりやすくステップバイステップで紹介します。バイブコーディングを始めたい方の最初の一歩に最適な無料講座です。
無料
プログラミング初心者が最もつまずく「エラーメッセージ」を徹底攻略します。赤い文字や英語の羅列に怯える必要はもうありません。この無料講座では、Pythonのエラーメッセージの読み方を「下から上へ」のシンプルなルールで解説し、よく出る10大エラーの原因と対処法を具体的なコード例とともに紹介します。エラーを「敵」から「味方」に変えて、バイブコーディングをもっとスムーズに進めましょう。
無料
AIにコードを書かせる「バイブコーディング」では、AIが大量のコードを一気に変更します。そのとき、変更履歴を記録し、いつでも前の状態に戻せるGitの知識は必須です。この無料講座では、Gitの基本操作からGitHubへの公開、AIが壊したコードを元に戻す実践テクニックまで、初心者にもわかりやすく解説します。
無料