第3章 · Claude API Basics

APIキーの取得とSDKセットアップ

API Key Setup
→ で次のスライド · F でフルスクリーン · N で講師ノート · Esc で終了

重要キーワード

API Key
APIキー
Anthropic API への認証情報。`sk-ant-api03-...` 形式
SDK
ソフトウェア開発キット
Python / TypeScript の公式ライブラリ
dotenv
ドットエンブ
環境変数を `.env` ファイルから読み込むツール
Secret Manager
秘密管理
本番環境で API キーなどを安全に保管する仕組み

API キーの取得

  1. https://console.anthropic.com にサインアップ。
  2. API Keys メニューから新規キーを発行。
  3. キーは sk-ant-api03-... で始まる文字列。絶対にコミットしない

キーは 2 種類

  • Workspace key: 個人や小規模チーム向けの汎用キー。
  • Service key (Admin/Billing): 組織管理用、プログラムから使うべきは Workspace key。

環境変数に保存

# macOS / Linux
export ANTHROPIC_API_KEY="sk-ant-api03-xxxxxx"

# Windows PowerShell
$env:ANTHROPIC_API_KEY = "sk-ant-api03-xxxxxx"

または .env ファイル + python-dotenv を使うと安全です。

# .env
ANTHROPIC_API_KEY=sk-ant-api03-xxxxxx
from dotenv import load_dotenv
load_dotenv()  # 自動で os.environ に読み込まれる

SDK のインストール

# Python
pip install anthropic

# Node.js / TypeScript
npm install @anthropic-ai/sdk

Hello, Claude

from anthropic import Anthropic

client = Anthropic()  # 環境変数から自動で読み込み

msg = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=512,
    messages=[
        {"role": "user", "content": "Hello, Claude!"}
    ],
)

print(msg.content[0].text)

TypeScript 版

import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();

const msg = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 512,
  messages: [{ role: "user", content: "Hello, Claude!" }],
});
console.log(msg.content[0].text);

キー漏洩を防ぐ

  • .gitignore.env を追加
  • GitHub の secret scanning を有効化。
  • 漏洩したらすぐ Console から revoke (失効) する。
  • フロントエンドに API キーを置かない (バックエンドプロキシを通す)。
  • 本番では AWS Secrets Manager / GCP Secret Manager / Vault などのシークレット管理を使う。

接続テスト

短い往復で動作を確認しましょう。

▶ Claude が動くか試す
「pong」とだけ返してください。
Hands-on Exercise

演習: Hello, Claude を Python で書く

ローカル環境で anthropic SDK を使い、次の最小コードを動かしてみてください。

from anthropic import Anthropic
from dotenv import load_dotenv
load_dotenv()

client = Anthropic()
msg = client.messages.create(
    model="claude-haiku-4-5",
    max_tokens=128,
    messages=[{"role": "user", "content": "こんにちは"}],
)
print(msg.content[0].text)
print("usage:", msg.usage)

確認ポイント: - 応答テキストが出るか - usage の input/output トークン数 - model パラメータを変えて違いを観察

▶ Playground を開いて実行

理解度チェック

3 問のクイズで理解度を確認しましょう。

クイズを開く
🎉

まとめ

お疲れ様でした!