読み込み中...

ふわふわコード
APIキー.envセキュリティバイブコーディング初心者向け

APIキーを安全に管理しよう!.envファイル入門

ふわふわコード
25分
初心者向け
2026年2月22日更新

APIキーを安全に管理しよう!.envファイル入門

はじめに

バイブコーディングでAIにコードを書いてもらっていると、こんな場面に出くわしませんか?

  • ChatGPTのAPIを使ってチャットボットを作りたい
  • Google Maps APIで地図を表示したい
  • OpenAI APIで画像を生成したい
  • これらのサービスを利用するには、APIキーというものが必要です。そしてこの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キーを持っていると、以下のようなことができます:

  • OpenAI API:ChatGPTと同じAIをプログラムから呼び出す
  • Google Maps API:地図の表示や経路検索をプログラムで行う
  • Stripe API:クレジットカード決済をプログラムに組み込む
  • Twitter(X) API:ツイートの投稿や取得を自動化する
  • つまり、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は「動くコード」を書くことを優先するため、セキュリティの配慮が十分でないことがあるのです。


    絶対にやってはいけないこと:APIキーの直書き

    悪い例

    以下は、絶対にやってはいけないコードの書き方です:

    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)

    変数に入れたとしても、ソースコードにキーの文字列が含まれていることに変わりはありません。ファイルを共有すればキーも一緒に漏れます。


    .envファイルとは?

    一言でいうと

    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行に1つの設定を書く
  • キー名=値 の形式で書く
  • クォーテーション(引用符)は不要(付けても動きますが、付けないのが一般的)
  • スペースを入れない(= の前後にスペースを入れない)
  • コメントは `#` で書ける
  • 1# OpenAI APIの設定
    2OPENAI_API_KEY=sk-proj-abc123def456ghi789...
    3
    4# データベースの設定
    5DATABASE_URL=postgresql://user:password@localhost:5432/mydb
    6
    7# デバッグモード(開発中はTrueにする)
    8DEBUG=True

    なぜ.envファイルを使うのか

    ポイントは、ソースコードと秘密情報を分離することです。

    1プロジェクトフォルダ/
    2├── .env              ← 秘密情報(Gitに含めない)
    3├── .gitignore        ← .envをGitから除外する設定
    4├── main.py           ← ソースコード(Gitに含める)
    5└── requirements.txt  ← パッケージ一覧(Gitに含める)

    こうすることで:

  • ソースコードを安全に共有できる — .envファイルはGitに含めないので、キーが漏れない
  • キーの変更が簡単 — .envファイルを書き換えるだけで、コードの修正は不要
  • 環境ごとに設定を変えられる — 開発用と本番用で異なるキーを使い分けられる

  • python-dotenvのセットアップ

    ステップ1:python-dotenvをインストールする

    Pythonで .env ファイルを読み込むには、python-dotenv というライブラリを使います。

    まず、仮想環境を有効にした状態で、以下を実行します:

    1pip install python-dotenv

    仮想環境(venv)についてよくわからない方は、「バイブコーディングの前に知っておきたい!Python仮想環境(venv)超入門」の記事を先にご覧ください。

    ステップ2:.envファイルを作成する

    プロジェクトのルートフォルダ(main.py と同じ場所)に、.env という名前のファイルを作成します。

    Macの場合:

    1touch .env

    Windowsの場合:

    エクスプローラーでは .env というファイル名を作りにくいため、ターミナル(コマンドプロンプトやPowerShell)で作成するのがおすすめです:

    1echo. > .env

    または、VSCodeなどのエディタで新しいファイルを作成し、ファイル名を .env にして保存してください。

    作成した .env ファイルに、APIキーを記入します:

    1OPENAI_API_KEY=sk-proj-ここにあなたのAPIキーを貼り付ける

    ステップ3:Pythonコードから.envファイルを読み込む

    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() で取得できるようになります。

    補足: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:.envファイルをGitに含めない

    .gitignoreとは

    .gitignore は、Gitに「このファイルは追跡しないでください」と伝えるための設定ファイルです。

    .envを.gitignoreに追加する

    プロジェクトのルートにある .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は最初に設定する

    .gitignore はプロジェクトの一番最初に設定してください。

    なぜなら、一度でも .env をGitにコミットしてしまうと、.gitignore に追加しても過去のコミット履歴に残ったままだからです。GitHubにプッシュした後に .gitignore を追加しても、すでに公開されたキーは取り消せません。

    もし既にコミットしてしまった場合の対処法は、この記事の最後で説明します。

    確認方法

    .gitignore が正しく機能しているか確認するには:

    1git status

    このコマンドの結果に .env が表示されていなければ、正しく除外されています。もし .env が表示されている場合は、.gitignore の記述を確認してください。


    .env.example:チームへの共有テンプレート

    問題点

    .env ファイルをGitに含めないということは、チームメンバーがプロジェクトをクローンしたとき、どんな環境変数が必要なのかわからないということです。

    解決策:.env.exampleを作る

    .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を.envで安全に使う

    ここまで学んだことを組み合わせて、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に含めない)

    .envファイル

    1OPENAI_API_KEY=sk-proj-ここにあなたのAPIキーを貼り付ける
    2MODEL_NAME=gpt-4o

    .env.exampleファイル

    1# OpenAI APIキー(https://platform.openai.com/api-keys で取得)
    2OPENAI_API_KEY=
    3# 使用するモデル名
    4MODEL_NAME=gpt-4o

    .gitignoreファイル

    1.env
    2venv/
    3__pycache__/
    4*.pyc

    requirements.txt

    1openai==1.82.0
    2python-dotenv==1.1.0

    main.py

    1import 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キーは漏洩しません。


    Node.js/JavaScriptでの.env管理

    Pythonだけでなく、Node.js(JavaScript/TypeScript)でも .env ファイルは広く使われています。簡単に紹介しておきます。

    Node.js 20.6以降(組み込みサポート)

    Node.js 20.6以降では、追加のパッケージなしで .env ファイルを読み込めるようになりました:

    1node --env-file=.env app.js
    1// app.js
    2const apiKey = process.env.OPENAI_API_KEY;
    3console.log("APIキーが設定されています:", !!apiKey);

    dotenvパッケージを使う方法

    Node.js 20.6より前のバージョンや、より細かい制御が必要な場合は、dotenv パッケージを使います:

    1npm install dotenv
    1// 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の場合

    Next.jsでは、.env.local ファイルが自動的に読み込まれます。追加のパッケージは不要です:

    1# .env.local
    2OPENAI_API_KEY=sk-proj-...
    3NEXT_PUBLIC_SITE_URL=https://example.com

    NEXT_PUBLIC_ で始まる環境変数はブラウザ側(クライアントサイド)でも参照できます。APIキーには絶対に `NEXT_PUBLIC_` を付けないでください。 ブラウザから誰でも読み取れてしまいます。


    ベストプラクティス チェックリスト

    以下のリストを、プロジェクトを始めるたびに確認してください。

    プロジェクト開始時

  • [ ] .gitignore ファイルを作成し、.env を追加した
  • [ ] .env ファイルを作成し、APIキーを記入した
  • [ ] .env.example ファイルを作成し、キー名のみ記載した
  • [ ] 最初のコミット前に git status で .env が含まれていないことを確認した
  • コーディング中

  • [ ] APIキーをソースコードに直接書いていない
  • [ ] os.getenv() で環境変数から取得している
  • [ ] APIキーが未設定の場合のエラーハンドリングを実装した
  • [ ] デバッグ用の print(api_key) をコードに残していない
  • AIにコードを書いてもらうとき

  • [ ] AIが生成したコードに、APIキーが直接書かれていないか確認した
  • [ ] .env から読み込む方式に修正した
  • [ ] AIに「.envファイルからAPIキーを読み込む形で書いてください」と指示した
  • GitHubにプッシュする前

  • [ ] git diff --staged で、コミットする内容にAPIキーが含まれていないか確認した
  • [ ] .env ファイルがコミット対象に含まれていないか確認した
  • サービスごとのAPIキーに関する注意

  • OpenAI:利用量に応じた従量課金。上限設定(Usage limits)を必ず設定しておくこと
  • Google Cloud:APIごとに料金が異なる。予算アラートを設定しておくこと
  • AWS:高額になりやすい。IAMユーザーの権限を最小限にすること
  • Stripe:テスト用キー(sk_test_)と本番用キー(sk_live_)を間違えないこと

  • APIキーを漏洩してしまったら

    万が一、APIキーを公開してしまった場合は、すぐに行動してください。時間が経つほど被害が拡大します。

    即座にやるべきこと(5分以内)

    1. APIキーを無効化(失効)させる

    各サービスの管理画面にログインし、漏洩したキーを無効化します:

  • OpenAI:https://platform.openai.com/api-keys にアクセスし、該当するキーを「Revoke(失効)」する
  • Google Cloud:Google Cloud Consoleの「認証情報」ページで、該当するキーを削除する
  • AWS:IAMコンソールで該当するアクセスキーを無効化する
  • 2. 新しいAPIキーを発行する

    同じ管理画面で、新しいキーを発行し、.env ファイルに記入します。

    3. 利用履歴を確認する

    各サービスの利用状況ダッシュボードで、不正利用がないか確認します。身に覚えのない利用があった場合は、サービス提供元に問い合わせてください。

    Gitの履歴からキーを削除する

    .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に含める
    利用上限を設定する各サービスの管理画面で月間上限を設定する
    漏洩したらすぐ無効化管理画面でキーを失効させ、新しいキーを発行する

    APIキー管理の基本コマンド一覧

    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 --staged

    バイブコーディングでAIに伝えるべきこと

    AIにコードを書いてもらうときは、最初にこう伝えてください:

    「APIキーは.envファイルから読み込む形にしてください。python-dotenvを使います。コード内にAPIキーを直接書かないでください。」

    この一言を添えるだけで、AIはセキュリティを考慮したコードを生成してくれるようになります。


    APIキーの管理は、プログラミングを始めたばかりの段階で身につけておきたい基本中の基本です。面倒に感じるかもしれませんが、一度習慣にしてしまえば、数分の手間で大きなリスクを回避できます。

    さあ、.envファイルを使って、安全にAPIを活用してみましょう!

    次のステップ

    ロードマップのステップ 4/8 完了!次は「エラーメッセージを読めるようになる」です。

    次へ: もう怖くない!エラーメッセージの読み方入門

    おすすめのコース

    AIでWebアプリを開発して公開するまでの全体像

    AIでWebアプリを開発して公開するまでの全体像

    AIを使ってWebアプリを作り、実際にインターネットに公開するまでの全体像をわかりやすく解説します。企画→開発→デプロイの流れ、使うツールや技術の選び方、初心者が陥りやすい落とし穴まで、バイブコーディング時代の開発プロセスを俯瞰できるコラムです。

    無料
    Claude Codeってなに?導入から使い方まで完全ガイド

    Claude Codeってなに?導入から使い方まで完全ガイド

    AIがコードを書いてくれる「Claude Code」を徹底解説。Claude Codeとは何か、何ができるのか、インストール方法から基本的な使い方まで、初心者にもわかりやすくステップバイステップで紹介します。バイブコーディングを始めたい方の最初の一歩に最適な無料講座です。

    無料
    もう怖くない!エラーメッセージの読み方入門

    もう怖くない!エラーメッセージの読み方入門

    プログラミング初心者が最もつまずく「エラーメッセージ」を徹底攻略します。赤い文字や英語の羅列に怯える必要はもうありません。この無料講座では、Pythonのエラーメッセージの読み方を「下から上へ」のシンプルなルールで解説し、よく出る10大エラーの原因と対処法を具体的なコード例とともに紹介します。エラーを「敵」から「味方」に変えて、バイブコーディングをもっとスムーズに進めましょう。

    無料
    バイブコーディング時代のGit/GitHub入門

    バイブコーディング時代のGit/GitHub入門

    AIにコードを書かせる「バイブコーディング」では、AIが大量のコードを一気に変更します。そのとき、変更履歴を記録し、いつでも前の状態に戻せるGitの知識は必須です。この無料講座では、Gitの基本操作からGitHubへの公開、AIが壊したコードを元に戻す実践テクニックまで、初心者にもわかりやすく解説します。

    無料
    ふわふわコード
    プライバシーポリシー免責事項特定商取引法に基づく表記FAQサポートチャットお問い合わせ運営会社
    © 2026 Shizukuya inc. All rights reserved.