Py初めてのPython

Day 5ファイル・API連携(外の世界とつながる)

APIキーの扱い(.env/環境変数、コードに直書きしない)

APIキーを環境変数や.envで管理し、コードやGitに漏らさない。

APIキーは「あなた専用のパスワード」

多くのAPI、特に有料のAIサービスは、利用時にAPIキーという文字列を要求します。これは「誰が使ったか」を識別し、料金を請求するための、あなた専用のパスワードのようなものです。キーが他人に漏れると、あなたのアカウントで勝手にAPIを使われ、高額な請求が来る可能性があります。だからこそ、扱いには十分な注意が必要です。

やってはいけないこと: コードに直書き

初心者が最もやりがちで、最も危険なのが、APIキーをコードに直接書いてしまうことです。動くには動きますが、そのコードをGitHubなどに公開した瞬間、世界中からキーが見えてしまいます。実際、公開リポジトリに紛れ込んだキーは、自動巡回プログラムに数分で発見・悪用されることがあります。

絶対NG: 直書き

キーがコードに残り、共有・公開した瞬間に漏れる。

PYTHON
import requests
api_key = "sk-abc123realkey..."  # コードに直書き
headers = {"Authorization": "Bearer " + api_key}

OK: 環境変数から読む

キーはコードの外(環境変数)に置き、コードは名前で参照するだけ。

PYTHON
import os
api_key = os.environ["API_KEY"]  # 環境から取得
headers = {"Authorization": "Bearer " + api_key}

環境変数と .env ファイル

環境変数とは、OSが持っている「名前と値のペア」の入れ物で、プログラムの外側から値を渡す仕組みです。キーを環境変数に入れておけば、コード本体にはキーそのものが登場せず、名前(例: API_KEY)で参照するだけで済みます。開発中は、キーを書いた .env というファイルを用意し、python-dotenv というライブラリで読み込む方法がよく使われます。

PYTHON
# .env ファイル(コードとは別ファイル)の中身の例:
# API_KEY=sk-abc123realkey...

# pip install python-dotenv しておく
import os
from dotenv import load_dotenv

load_dotenv()  # .env の中身を環境変数として読み込む

api_key = os.environ.get("API_KEY")  # get なら未設定でも例外にならず None
if not api_key:
    raise SystemExit("API_KEY が設定されていません。.env を確認してください")

print("キーの先頭:", api_key[:6], "...")  # 全体は絶対に表示しない
.env を使ってキーを読み込む

.env は必ず .gitignore に入れる

.env をうっかりGitで共有すると、直書きと同じくキーが漏れます。プロジェクトには .gitignore というファイルを置き、そこに .env と1行書いて、Gitの追跡対象から外してください。チーム共有用には、値を伏せた .env.example を代わりに置くのが定番です。

なぜキーをコードの外に出すのか

キーは「秘密」で、コードは「共有するもの」です。性質が違うものを混ぜると事故が起きます。外に出しておけば、コードはそのまま公開でき、環境ごと(自分のPC、本番サーバーなど)に違うキーを差し替えるのも簡単です。秘密と設定はコードから分離する、というのは全言語共通の基本原則です。

AIにはこう聞く

AIにコードを書いてもらうときは「APIキーは直書きせず、os.environ から読む形にして」と最初に指定しましょう。逆に、AIが生成したコードにキーらしき文字列が直書きされていたら、必ず環境変数に置き換えてから使います。生成コードのレビューでまず見るべき箇所の一つです。

漏れたら「無効化して再発行」

もしキーを漏らしてしまったら、コードから消すだけでは不十分です。一度公開された情報は取り消せません。そのキーをサービス側の管理画面で無効化(revoke)し、新しいキーを再発行してください。これが唯一の確実な対処です。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

APIキーの扱いとして最も適切なものはどれですか。

Q2

.env ファイルを使うとき、必ず一緒に行うべきことはどれですか。

Q3

もし誤ってAPIキーを公開リポジトリに載せてしまった場合、どう対処すべきか説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。