CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/API & SDK
API & SDK/2026-03-14初級

Claude Haiku 3 廃止(2026年4月19日)完全移行ガイド——Claude Haiku 4.5 へのアップグレード手順

Claude Haiku 3(claude-3-haiku-20240307)は2026年4月19日に廃止されます。廃止の背景・影響範囲・Claude Haiku 4.5 への移行手順をコード例付きで詳しく解説します。

deprecation2migration7haiku3api38model2

Claude Haiku 3 廃止(2026年4月19日)完全移行ガイド——Claude Haiku 4.5 へのアップグレード手順

Anthropic は、Claude Haiku 3(モデルID: claude-3-haiku-20240307)を2026年4月19日に廃止することを発表しました。現在このモデルを本番環境で利用しているチームや開発者は、それまでに Claude Haiku 4.5(claude-haiku-4-5-20251001 へ移行する必要があります。


なぜ廃止されるのか

Anthropic はモデルのライフサイクル管理の一環として、旧バージョンのモデルを定期的に廃止し、より新しく高性能なモデルへの移行を促しています。Claude Haiku 3 は2024年3月にリリースされて以来、高速・低コストな軽量モデルとして多くのアプリケーションで採用されてきました。

しかし、後継の Claude Haiku 4.5 はすべての面でHaiku 3を大幅に上回っており、Anthropic は廃止予告の少なくとも60日前に通知するというポリシーに従って、このタイミングでアナウンスを行いました。


廃止スケジュール

マイルストーン日付
廃止アナウンス2026年2月中旬〜3月
廃止日(リタイアメント)2026年4月19日
廃止後の動作APIリクエストがエラーを返す

廃止日以降に claude-3-haiku-20240307 を指定してAPIを呼び出すと、リクエストは失敗します。移行は早めに完了させることを強く推奨します。


Claude Haiku 3 vs Claude Haiku 4.5 — 性能比較

Claude Haiku 4.5 は、Haiku 3 と比較してほぼすべての指標で優れています。

指標Claude Haiku 3Claude Haiku 4.5
コンテキストウィンドウ200K トークン200K トークン
応答速度高速同等以上(フロンティア近辺)
コーディング性能標準大幅改善
推論・分析標準大幅改善
ツール使用(Function Calling)対応より正確
ビジョン(画像入力)対応対応
価格(入力/出力)競争力あり同等水準

Haiku 4.5 は「ニアフロンティア」と表現されるほど高性能で、特にコーディング支援・エージェント用途・リアルタイムアプリケーションでの改善が顕著です。


移行手順

ステップ 1: 使用箇所の特定

まず、コードベース内で claude-3-haiku-20240307 を参照しているすべての箇所を洗い出します。

# プロジェクト内の全参照箇所を検索
grep -r "claude-3-haiku-20240307" ./src --include="*.py" --include="*.ts" --include="*.js"
 
# 出力例:
# ./src/api/chat.py:12:    model="claude-3-haiku-20240307",
# ./src/workers/summarizer.ts:8:  model: 'claude-3-haiku-20240307',
# ./config/defaults.json:5:  "model": "claude-3-haiku-20240307"

ステップ 2: モデルIDを更新する

見つかった箇所を claude-haiku-4-5-20251001 に置き換えます。

Python(Anthropic SDK):

import anthropic
 
client = anthropic.Anthropic()
 
# ❌ 旧: 廃止されるモデル
# model = "claude-3-haiku-20240307"
 
# ✅ 新: Claude Haiku 4.5
message = client.messages.create(
    model="claude-haiku-4-5-20251001",  # ← ここを変更
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "日本語で「こんにちは」と言ってください。"}
    ]
)
 
print(message.content[0].text)
# 出力例: こんにちは

TypeScript / Node.js(Anthropic SDK):

import Anthropic from "@anthropic-ai/sdk";
 
const client = new Anthropic();
 
async function main() {
  // ❌ 旧: 廃止されるモデル
  // const model = "claude-3-haiku-20240307";
 
  // ✅ 新: Claude Haiku 4.5
  const message = await client.messages.create({
    model: "claude-haiku-4-5-20251001", // ← ここを変更
    max_tokens: 1024,
    messages: [{ role: "user", content: "Say hello in Japanese." }],
  });
 
  console.log(message.content[0].text);
  // 出力例: こんにちは (Konnichiwa) — Hello in Japanese
}
 
main();

環境変数・設定ファイルで管理している場合:

# .env ファイル
# ❌ 旧
# MODEL_ID=claude-3-haiku-20240307
 
# ✅ 新
MODEL_ID=claude-haiku-4-5-20251001
# Python での環境変数読み込み例
import os
import anthropic
 
client = anthropic.Anthropic()
 
# 環境変数からモデルIDを取得(設定ファイルで一元管理)
model_id = os.environ.get("MODEL_ID", "claude-haiku-4-5-20251001")
 
message = client.messages.create(
    model=model_id,
    max_tokens=512,
    messages=[{"role": "user", "content": "Summarize this in one sentence: AI is transforming software development."}]
)
 
print(message.content[0].text)
# 出力例: AI is revolutionizing software development by automating coding tasks and enhancing developer productivity.

ステップ 3: 本番前にテストを実施する

モデルIDを変更したら、必ずステージング環境で動作確認を行いましょう。

import anthropic
import pytest
 
client = anthropic.Anthropic()
 
def test_haiku_45_basic_response():
    """Claude Haiku 4.5 が正常にレスポンスを返すか確認"""
    message = client.messages.create(
        model="claude-haiku-4-5-20251001",
        max_tokens=100,
        messages=[{"role": "user", "content": "What is 2 + 2?"}]
    )
 
    assert message.stop_reason == "end_turn"
    assert len(message.content) > 0
    assert "4" in message.content[0].text
 
def test_haiku_45_tool_use():
    """ツール使用(Function Calling)が機能するか確認"""
    tools = [
        {
            "name": "get_weather",
            "description": "Get weather for a location",
            "input_schema": {
                "type": "object",
                "properties": {
                    "location": {"type": "string", "description": "City name"}
                },
                "required": ["location"]
            }
        }
    ]
 
    message = client.messages.create(
        model="claude-haiku-4-5-20251001",
        max_tokens=200,
        tools=tools,
        messages=[{"role": "user", "content": "What's the weather in Tokyo?"}]
    )
 
    # ツールが呼び出されたことを確認
    tool_uses = [block for block in message.content if block.type == "tool_use"]
    assert len(tool_uses) > 0
    assert tool_uses[0].name == "get_weather"
    print(f"Tool called with input: {tool_uses[0].input}")
    # 出力例: Tool called with input: {'location': 'Tokyo'}
 
if __name__ == "__main__":
    test_haiku_45_basic_response()
    print("✅ Basic response test passed")
    test_haiku_45_tool_use()
    print("✅ Tool use test passed")

ステップ 4: コスト・レイテンシを計測して比較する

Haiku 4.5 は Haiku 3 と同等水準の価格帯に設計されていますが、実際のユースケースで計測することをお勧めします。

import anthropic
import time
 
client = anthropic.Anthropic()
 
def benchmark_model(model_id: str, prompt: str, runs: int = 5) -> dict:
    """モデルのレイテンシとトークン使用量を計測"""
    latencies = []
    input_tokens_list = []
    output_tokens_list = []
 
    for i in range(runs):
        start = time.time()
        message = client.messages.create(
            model=model_id,
            max_tokens=256,
            messages=[{"role": "user", "content": prompt}]
        )
        elapsed = time.time() - start
 
        latencies.append(elapsed)
        input_tokens_list.append(message.usage.input_tokens)
        output_tokens_list.append(message.usage.output_tokens)
 
    return {
        "model": model_id,
        "avg_latency": sum(latencies) / runs,
        "avg_input_tokens": sum(input_tokens_list) / runs,
        "avg_output_tokens": sum(output_tokens_list) / runs,
    }
 
prompt = "Explain the concept of machine learning in 3 sentences."
 
# Claude Haiku 4.5 のベンチマーク
result_45 = benchmark_model("claude-haiku-4-5-20251001", prompt)
print(f"Claude Haiku 4.5:")
print(f"  平均レイテンシ: {result_45['avg_latency']:.2f}秒")
print(f"  平均入力トークン: {result_45['avg_input_tokens']:.0f}")
print(f"  平均出力トークン: {result_45['avg_output_tokens']:.0f}")
 
# 出力例:
# Claude Haiku 4.5:
#   平均レイテンシ: 0.84秒
#   平均入力トークン: 18
#   平均出力トークン: 72

よくある移行パターン

パターン A: 定数・設定の一元管理(推奨)

モデルIDを定数として定義しておくと、将来の変更が容易になります。

# models.py
class ClaudeModels:
    """Claude モデルID の定数定義"""
    # Haiku シリーズ(高速・低コスト)
    HAIKU_LATEST = "claude-haiku-4-5-20251001"
 
    # Sonnet シリーズ(バランス)
    SONNET_LATEST = "claude-sonnet-4-6"
 
    # Opus シリーズ(最高性能)
    OPUS_LATEST = "claude-opus-4-6"
 
# 使用例
from models import ClaudeModels
import anthropic
 
client = anthropic.Anthropic()
 
message = client.messages.create(
    model=ClaudeModels.HAIKU_LATEST,
    max_tokens=1024,
    messages=[{"role": "user", "content": "こんにちは!"}]
)
print(message.content[0].text)
# 出力例: こんにちは!お気軽にご質問ください。

パターン B: バッチ処理での移行

大量リクエストをバッチで処理している場合も、モデルIDを変更するだけで対応できます。

import anthropic
 
client = anthropic.Anthropic()
 
# バッチ処理の例
requests = [
    {"custom_id": "req-001", "text": "Summarize AI trends in 2026."},
    {"custom_id": "req-002", "text": "What is prompt engineering?"},
    {"custom_id": "req-003", "text": "Explain Claude's context window."},
]
 
# メッセージバッチを作成
batch = client.messages.batches.create(
    requests=[
        {
            "custom_id": req["custom_id"],
            "params": {
                "model": "claude-haiku-4-5-20251001",  # Haiku 4.5 を指定
                "max_tokens": 256,
                "messages": [{"role": "user", "content": req["text"]}]
            }
        }
        for req in requests
    ]
)
 
print(f"バッチID: {batch.id}")
print(f"ステータス: {batch.processing_status}")
# 出力例:
# バッチID: msgbatch_01XFDUDYJgAACzvnptvVoYEL
# ステータス: in_progress

全体を振り返って

Claude Haiku 3 の廃止(2026年4月19日)は、すでにカウントダウンが始まっています。移行自体はモデルIDを1行変更するだけという非常にシンプルな作業ですが、本番環境への影響を避けるためには早めの対応が重要です。

移行のポイントをまとめます:

  • 廃止日: 2026年4月19日
  • 移行先: claude-haiku-4-5-20251001
  • 作業内容: コードベース内のモデルIDを検索・置換
  • 推奨: ステージング環境でテスト後、本番デプロイ

Claude Haiku 4.5 はパフォーマンスが大幅に向上しており、移行することでアプリケーションの品質も向上します。ぜひ早めに移行を進めてください。

Claude API 全般の使い方については Claude API クイックスタートガイド も合わせてご覧ください。ツール使用(Function Calling)の詳細については ツール使用ガイド をご参照ください。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

API & SDK2026-04-07
Claude Sonnet 4.5 1Mトークン コンテキスト廃止ガイド — 4月30日前に行う移行手順
Claude Sonnet 4.5 の1Mトークン コンテキストベータが2026年4月30日に廃止されます。context-1m ベータヘッダーの影響、Sonnet 4.6への移行ステップ、コード例付きで分かりやすく解説します。
API & SDK2026-06-27
Claude API のストリーミングが「エラーも出さずに」止まるとき — 沈黙する停止を検知して途中から続ける運用メモ
Claude API のストリーミングが例外も出さずに無言で止まる「沈黙停止」を、トークン間隔のウォッチドッグで検知し、受信済みテキストを引き継いで途中から再開する実装と、長時間の自動運用で崩れないためのタイムアウト予算の設計をまとめます。
API & SDK2026-06-23
思考が常時オンのモデルに移すと、プレフィルが静かに効かなくなる — Fable 5 でストリーミングとトークン予算を直した記録
Fable 5 は思考が常時オンです。プレフィルが使えない・ストリーミングの先頭ブロックがテキストではない・max_tokens に思考分の余白が要る、という三つの前提崩れを、自分の自動投稿パイプラインで直した実装メモです。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →