◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/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 への移行手順をコード例付きで詳しく解説します。

deprecationmigration7haiku3api39model

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-05-25
二段構えのモデル構成 — Haiku 4.5 オーケストレーター × Opus 4.6 ワーカーで保つコストと品質の均衡
オーケストレーションをHaiku 4.5に、専門タスクをOpus 4.6に任せる二段構えの構成を、公表単価に当てた月次試算つきで書き残します。ワーカーに任せる5つの判定基準、ストリーミングの使い分け、詰まった落とし穴、そして来なかった値上げに備えて設計を動かしてしまった失敗まで。
⬡ API & SDK2026-05-16
Claude API で多言語レビュー返信を自動化した実装ログ — App Store 非公式制限との付き合い方
壁紙・ヒーリング系アプリを複数運営する個人開発者が、Claude APIで多言語レビュー返信を自動化した実装ログ。App Storeの8秒待機ルールや1セッション30件制限など、公式ドキュメントには書かれていない落とし穴と解決策を詳解します。
⬡ API & SDK2026-04-26
Claude API × WebSocket × Redis Pub/Sub でスケーラブルなリアルタイム AI チャットサーバーを構築する — Node.js 本番設計・マルチユーザー対応・コスト制御の実装
Claude API × WebSocket × Redis Pub/Sub でリアルタイム AI チャットサーバーを本番運用する設計と実装。SSE との判断基準、マルチインスタンス対応、停止遅延がユーザーごとの予算精度をどう崩すかまで、計測コードつきで扱います。