2026年、AIコーディングツールの世界は新たな局面を迎えている。AnthropicのClaude Code(Opus 4.6)とOpenAIのCodex CLI(GPT-5.3)——両者はいずれもターミナルから直接コードを生成・編集できるAIエージェントだが、その設計思想は根本的に異なる。
スペック表やベンチマークだけでは見えない「本当の実力差」を明らかにするため、筆者はある実験を行った。まったく同じプロンプトを両ツールに投げて、AIチャットボットを作らせる——いわば「チャットボットバトル」だ。
プロンプトは一字一句同じ。環境も同じMacBook Pro。しかし、出来上がったコードには明確なアプローチの違いが生まれた。計画を立ててから動くClaude Codeと、即座にファイルを生成するCodex。Vercel AI SDKを活用する15行のAPIルートと、Raw SDKで堅牢なバリデーション付き91行のAPIルート。同じ要件に対して、まったく異なる設計哲学が浮き彫りになった。
本記事では、ターミナルログ・生成コード・動作デモ動画のすべてを公開し、両ツールの真の実力を徹底解剖する。
記事の前半ではスペック比較と実験設計を、中盤では開発プロセスとコード品質の詳細分析を、後半ではベンチマーク・DX評価・料金比較を行い、最後にユースケース別のおすすめを提示する。すべてのセクションに具体的なデータとコードを含んでいるため、気になるセクションから読み始めてほしい。
先に結論
筆者の結論:どちらか一方を選ぶことはできなかった。
両方を日常的に使い分けているが、「勝者」を決めるなら両方使っているユーザーが勝者だ。設計・実装にClaude Code、プロトタイプ・CI/CDにCodex——補完的に使うのがベストだと感じている。
Claude Code(Opus 4.6)の自己評価
自分のコード: 53/80
Codexのコード: 65/80
→ Claude Code自身が「Codexの勝ち」と判定
Codex(GPT-5.3)の自己評価
Claude Codeのコード: 76/100
自分のコード: 82/100
→ Codex自身も「自分の勝ち」と判定
DX(開発体験)総合スコア
Claude Code: 21.0/25(セットアップ・エラー修正・透明性で優位)
Codex: 19.0/25(コード品質・拡張性で優位)
→ 得意分野が異なり、総合力はほぼ互角
目次
- Claude CodeとCodexの基本スペック
- 実験設計 — 同一プロンプトで挑むチャットボットバトル
- 開発プロセス比較 — ターミナルログから見る”思考の差”
- コード品質分析 — APIルート実装の比較
- フロントエンド比較 — UI実装アプローチの違い
- デモ動画 — 実際に動かしてみた
- 技術スタック比較 — フレームワーク選定の差
- ベンチマーク比較 — 数字で見る実力差
- 開発体験(DX)比較 — 使い勝手の本音
- 料金・プラン比較
- どちらを選ぶべきか — ユースケース別おすすめ
- よくある質問(FAQ)
- まとめ — 競争が生む進化
Claude CodeとCodexの基本スペック
まず両ツールの基本情報を整理しよう。
| 項目 | Claude Code | Codex CLI |
|---|---|---|
| 開発元 | Anthropic | OpenAI |
| 使用モデル | Claude Opus 4.6 | GPT-5.3-Codex |
| バージョン(検証時) | v2.1.59 | v0.105.0 |
| 実行環境 | ローカル(ターミナルネイティブ) | ローカル + クラウドサンドボックス |
| ソースコード | クローズドソース | オープンソース(Rust製) |
| コンテキスト | 200Kトークン | コンパクション機能で長大セッション対応 |
| サンドボックス | なし(ローカル直接実行) | macOS Seatbelt / Linux Landlock |
| 対応OS | macOS / Linux | macOS / Linux / Windows |
| 料金(最安) | API従量課金 or Max $20/月 | ChatGPT Plus $20/月 |
設計思想の根本的な違い
Claude Codeは「対話型のシニアエンジニア」として設計されている。ローカル環境でプロジェクト全体を読み込み、計画(Plan Mode)を立て、サブエージェントを活用して作業を分担する。作業の各ステップが可視化され、なぜその判断をしたかを説明してくれる。200Kトークンという巨大なコンテキストウィンドウにより、大規模なコードベースでも全体像を把握した上で的確な修正を行える。
一方、Codexは「タスクを任せられるクラウドワーカー」だ。サンドボックス環境(macOSではSeatbelt、LinuxではLandlock)で安全にコードを実行し、複数タスクの並列処理に強い。オープンソース(Rust製)であるため内部動作の確認やカスタマイズも自由だ。また、codex execによる非対話モードはCI/CDパイプラインへの組み込みに最適で、GitHub ActionsやJenkinsなどと連携して自動化ワークフローを構築できる。Claude Codeの高度な活用テクニックについて詳しくはこちらの記事も参考にしてほしい。
MCP(Model Context Protocol)は両ツールとも対応しており、外部ツールとの連携面では互角と言える。
主要機能の比較
| 機能 | Claude Code | Codex CLI |
|---|---|---|
| Plan Mode(計画モード) | ◎ | — |
| Subagents(サブエージェント) | ◎ | — |
| Hooks(自動化トリガー) | ◎ 8種のイベントフック | — |
| サンドボックス実行 | — | ◎ |
| Cloud Tasks(クラウド並列実行) | Web版で対応 | ◎ |
| 非対話モード(CI/CD統合) | -p フラグ | ◎ codex exec |
| MCP対応 | ◎ | ◎ |
| Agent Teams | ◎ | — |
| Session Resume | ◎ | ◎ |
| ビルド検証 | ◎ 自動実行 | ユーザー指示で実行 |
実験設計 — 同一プロンプトで挑むチャットボットバトル
スペック表だけでは実力はわからない。そこで、同一条件での実機検証を行った。
実験条件
| 項目 | 詳細 |
|---|---|
| マシン | MacBook Pro(M4 Max) |
| Node.js | v22.x |
| プロジェクト | ~/Projects/chatbot-battle/ 配下に各ツール用ディレクトリ |
| Claude Code | v2.1.59 / Opus 4.6 / Claude Max |
| Codex CLI | v0.105.0 / GPT-5.3-Codex / xhigh モード |
| 評価軸 | 開発時間、コード品質、UI/UX、エラーハンドリング |
使用プロンプト(両ツール共通)
以下のプロンプトを、一字一句まったく同じ内容で両ツールに投入した。
cd ~/Projects/chatbot-battle/[ツール名]のファイル作ってNext.jsでAIチャットボットを作って。
- App Router使用
- OpenAI API連携(GPT-4o)
- チャットUI(メッセージ履歴、入力欄、送信ボタン)
- ストリーミングレスポンス
- レスポンシブデザイン
- ダークモード対応
6つの要件を日本語で簡潔に指示。フレームワークの指定やライブラリの制約は一切つけていない。ツール自身が最適な技術選定を行えるかも評価ポイントだ。
なぜ「チャットボット」なのか
チャットボットを課題に選んだ理由は3つある。第一に、フルスタックの技術力が問われること。バックエンドのAPI設計、フロントエンドのUI実装、ストリーミング処理、状態管理、スタイリングとすべてのレイヤーにわたる実装が必要になる。
第二に、技術選定の自由度が高いこと。同じ「チャットボット」でも、使用するSDK、CSS手法、コンポーネント設計はツールによって大きく異なり得る。この自由度こそが、AIエージェントの「判断力」を測る最良の指標になる。
第三に、結果の検証が容易であること。チャットボットは動作するかしないかが明確であり、UIの完成度やコードの品質を客観的に評価しやすい。動画で動作を記録すれば、読者自身が判断できる。
開発プロセス比較 — ターミナルログから見る”思考の差”
両ツールのターミナルログを詳細に分析すると、AIエージェントとしての「思考プロセス」に根本的な違いがあることがわかる。
Claude Code:計画→実行→検証の反復
Claude CodeはまずPlan Modeで詳細な実装計画を提示した。
╭──────────────────────────────────────────────╮
│ Plan to implement │
│ │
│ Next.js AIチャットボット作成計画 │
│ │
│ 技術スタック │
│ - Next.js 15 (App Router) │
│ - Vercel AI SDK (ai + @ai-sdk/openai) │
│ - Tailwind CSS v4 │
│ - TypeScript (strict) │
│ │
│ ファイル構成 │
│ claude-code/ │
│ ├── src/app/api/chat/route.ts │
│ ├── src/components/Chat.tsx │
│ ├── src/app/page.tsx │
│ └── ... │
╰──────────────────────────────────────────────╯
計画が承認されると、以下のステップで実装を進めた。
- プロジェクト初期化:
npx create-next-app@latestでスキャフォールド生成(Tailwind, TypeScript, App Router, src/有効) - 依存関係追加:
npm install ai @ai-sdk/openaiを実行 - ファイル作成:APIルート、チャットコンポーネント、ページ、スタイルを一括作成
- ビルド検証:
npm run buildを自動実行 → エラー検出 - 自己修正 #1:
@ai-sdk/reactパッケージの追加インストール - 自己修正 #2:AI SDK v6のAPI変更に対応(
toDataStreamResponse→toUIMessageStreamResponse) - 自己修正 #3:
useChatのAPI変更に対応(input/handleInputChange→sendMessage/status) - 最終ビルド成功:すべてのエラーを解決してビルド完了
注目すべきは、3回のビルドエラーをすべて自力で修正した点だ。AI SDK v6ではAPIが大幅に変更されており、Claude Codeはnode_modulesの型定義ファイルを読み込んで新しいAPIを特定し、コードを書き直している。
Claude Codeの自己修正プロセス(ターミナルログより)
「AI SDK v6でuseChatのAPIが大幅に変わっています。input/handleInputChange/handleSubmitは無くなり、sendMessageとstatusに変更。Chat.tsxを書き直します。」
——エラーの原因を日本語で説明した上で、自動的に修正コードを生成。この透明性の高い作業プロセスがClaude Codeの最大の特徴だ。
Codex:即座にファイルを生成する「ゼロから構築」スタイル
一方、Codexのアプローチはまったく異なる。
• Updated Plan
└ □ Inspect target directory and existing project files
□ Implement Next.js App Router chat UI and API route
□ Run basic checks and summarize setup instructions
✔ You approved codex to run mkdir -p ~/Projects/chatbot-battle/codex/app/api/chat
✔ You approved codex to run cat <<'EOF' > package.json ...
✔ You approved codex to run cat <<'EOF' > tsconfig.json ...
✔ You approved codex to run cat <<'EOF' > app/layout.tsx ...
✔ You approved codex to run cat <<'EOF' > app/page.tsx ...
✔ You approved codex to run cat <<'EOF' > app/api/chat/route.ts ...
✔ You approved codex to run cat <<'EOF' > app/globals.css ...
Codexはcat <<'EOF'(ヒアドキュメント)でファイルを直接書き込む方式を採用。create-next-appのようなスキャフォールドツールは使わず、すべてのファイルをゼロから生成した。
注目すべきは、Codexがファイル生成後にnpm run lintを試みている点だ。結果は依存関係が未インストールのためコマンドが見つからず失敗。これはCodexのサンドボックス環境の制約であり、Codex自身が検証を怠ったわけではない。サンドボックス内ではnpm installの実行が制限されているため、ビルド検証ができない構造的な制約がある。
• Ran npm run lint
└ sh: next: command not found
• Updated Plan
└ ✔ Run basic checks and summarize setup instructions
─ Worked for 3m 43s ──────────────────────
• 完了しました。
ビルド検証なしで「完了」——これはCodexのサンドボックス環境に起因する制約だ。ただし、Codexが生成したコードは実際にnpm install → npm run buildで問題なくビルドが通る品質であり、「検証できなかった」ことと「コードが壊れていた」ことは区別する必要がある。
開発時間の比較
| 項目 | Claude Code | Codex CLI |
|---|---|---|
| 総所要時間 | 3分59秒 | 3分43秒 |
| 計画立案 | 約30秒 | 約10秒 |
| ファイル生成 | 約60秒 | 約150秒(承認待ち含む) |
| ビルド検証・修正 | 約150秒(3回の修正サイクル) | 約20秒(lint失敗で終了) |
| ビルド検証 | ビルド成功(4回目) | lint試行→環境制約で未完了 |
| 生成後のコード確認 | ファイル構成を確認 | route.ts, page.tsx, globals.cssを再読して品質確認 |
表面上の所要時間はほぼ同じ(16秒差)。ただし、両者の時間の使い方はまったく異なる。Claude Codeはビルド成功を確認した状態で完了しているが、その過程で3回のビルドエラーと修正に約150秒を費やしている。Codexはlint検証を試みたものの環境制約で完了できなかったが、生成したコードを自ら再読して品質を確認している。なお、Codexのコードは実際にビルドが通る品質だった。
Claude Codeの強みは、3つのビルドエラー(すべてAI SDK v6の破壊的変更に起因)をnode_modulesの型定義を読み込んで自力で修正した「リアルタイムの自己学習能力」だ。一方Codexは、Vercel AI SDKを使わない設計を選択したことでこの問題自体を回避している。SDKの最新変更に追従する能力ではClaude Codeが上だが、そもそも壊れるリスクのないコードを書くという点ではCodexのアプローチも合理的だ。
コード品質分析 — APIルート実装の比較
生成されたコードの品質を、最も重要なファイルであるAPIルート(route.ts)から比較する。
Claude Codeの実装(15行)
import { openai } from "@ai-sdk/openai";
import { streamText, type UIMessage, convertToModelMessages } from "ai";
export async function POST(req: Request) {
const { messages }: { messages: UIMessage[] } = await req.json();
const result = streamText({
model: openai("gpt-4o"),
system:
"あなたは親切で知識豊富なAIアシスタントです。日本語で簡潔かつ正確に回答してください。",
messages: await convertToModelMessages(messages),
});
return result.toUIMessageStreamResponse();
}
Codexの実装(91行)
import OpenAI from "openai";
import { NextResponse } from "next/server";
type InputMessage = {
role: "system" | "user" | "assistant";
content: string;
};
export const runtime = "nodejs";
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: process.env.OPENAI_BASE_URL || "https://api.openai.com/v1",
});
export async function POST(request: Request) {
if (!process.env.OPENAI_API_KEY) {
return NextResponse.json(
{ error: "OPENAI_API_KEY is not configured." },
{ status: 500 }
);
}
try {
const body = (await request.json()) as { messages?: InputMessage[] };
if (!Array.isArray(body.messages)) {
return NextResponse.json(
{ error: "messages must be an array." },
{ status: 400 }
);
}
// ... バリデーション、フィルタリング ...
const stream = await openai.chat.completions.create({
model: "gpt-4o",
stream: true,
messages
});
const encoder = new TextEncoder();
const readableStream = new ReadableStream({
async start(controller) {
try {
for await (const chunk of stream) {
const token = chunk.choices[0]?.delta?.content;
if (token) {
controller.enqueue(encoder.encode(token));
}
}
} catch (error) {
controller.error(error);
} finally {
controller.close();
}
}
});
return new Response(readableStream, {
headers: {
"Content-Type": "text/plain; charset=utf-8",
"Cache-Control": "no-cache, no-transform"
}
});
} catch (error) {
const message = error instanceof Error
? error.message : "Unknown error";
return NextResponse.json(
{ error: message }, { status: 500 }
);
}
}
APIルート比較分析
| 観点 | Claude Code | Codex |
|---|---|---|
| コード行数 | 15行 | 91行 |
| SDK | Vercel AI SDK(streamText) | Raw OpenAI SDK |
| ストリーミング方式 | SDK内蔵(toUIMessageStreamResponse) | 手動ReadableStream実装 |
| エラーハンドリング | SDK任せ(内部で処理) | 3段階バリデーション |
| 型安全性 | UIMessage型を使用 | 独自InputMessage型を定義 |
| 保守性 | SDKに依存(SDK更新で自動改善、ただし破壊的変更リスクあり) | 自己完結(手動メンテだが外部依存が少ない) |
Claude CodeはVercel AI SDKという抽象化レイヤーを選択した。これはNext.jsの開発元であるVercelが公式に提供するAI統合ライブラリであり、OpenAI・Anthropic・Googleなど複数のAIプロバイダーを統一的なインターフェースで扱える。ストリーミング処理、エラーハンドリング、レスポンス形式の管理がすべてSDK側に委譲されるため、コードは15行と極めてシンプル。SDKのアップデートによる恩恵(パフォーマンス改善、新機能追加)も自動的に受けられる。さらに、プロバイダーを切り替えるだけで別のAIモデルを使えるため、将来的な柔軟性も高い。
一方、CodexはRaw OpenAI SDKを使い、ReadableStreamを手動で構築している。具体的には、TextEncoderでチャンクをエンコードし、ReadableStreamのコントローラに手動でenqueueする実装だ。エラーハンドリングは3段階(APIキー確認→配列バリデーション→メッセージ数チェック)と手厚いが、91行のコードを保守し続ける必要がある。また、ストリーミングの形式がtext/plainであるため、フロントエンド側でもReadableStreamのリーダーを手動で回し、TextDecoderでチャンクをデコードする処理が必要になる。
この「全部自分で書く」アプローチには大きなメリットがある。SDKへの依存が最小限であるため、SDKの破壊的変更の影響を受けにくい。実際、今回Claude Codeが遭遇したAI SDK v6の変更はまさにこのリスクの表れだ。Claude Codeはそのエラーを自己修正できたが、そもそもCodexのようにRaw SDKを使っていればこのエラー自体が発生しなかった。どちらのアプローチが「正解」かは、プロジェクトの規模や保守体制によって変わる。
Codexのエラーハンドリング:ディフェンシブプログラミングの好例
APIキーの存在チェック、配列バリデーション、メッセージ数チェック——CodexはVercel AI SDKを使わない設計を選択しているため、これらの明示的なバリデーションは正当なディフェンシブプログラミングだ。SDKの抽象化に頼らず、すべてのエッジケースを自前で処理するこのアプローチは、外部依存を最小限に抑えたい場面や、SDKの内部動作をブラックボックスにしたくない場面では合理的な選択と言える。
フロントエンド比較 — UI実装アプローチの違い
フロントエンドの実装にも、両ツールの設計哲学が如実に表れている。
Claude Code:コンポーネント分離 + useChat Hook(112行)
"use client";
import { useChat } from "@ai-sdk/react";
import { useState, useEffect, useRef, type FormEvent } from "react";
export default function Chat() {
const { messages, sendMessage, status, error } = useChat();
const [input, setInput] = useState("");
const messagesEndRef = useRef<HTMLDivElement>(null);
const isLoading = status === "submitted" || status === "streaming";
// useChat Hook が状態管理・ストリーミングをすべて自動化
const handleSubmit = (e: FormEvent) => {
e.preventDefault();
const trimmed = input.trim();
if (!trimmed || isLoading) return;
sendMessage({ text: trimmed });
setInput("");
};
return (
<div className="flex h-dvh flex-col bg-white dark:bg-zinc-950">
{/* Header, Messages, Input... */}
</div>
);
}
Codex:モノリシック page.tsx(194行)
"use client";
import { FormEvent, useEffect, useRef, useState } from "react";
type Message = { id: string; role: "user" | "assistant"; content: string };
export default function Home() {
const [messages, setMessages] = useState<Message[]>([...]);
const [input, setInput] = useState("");
const [isLoading, setIsLoading] = useState(false);
const [theme, setTheme] = useState<"light" | "dark">("light");
// fetch + ReadableStream + TextDecoder で手動ストリーミング
const handleSubmit = async (event: FormEvent) => {
const response = await fetch("/api/chat", { ... });
const reader = response.body.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) break;
// チャンクを手動でデコード・メッセージ更新
}
};
return (<main className="page">...</main>);
}
フロントエンド実装の比較
| 観点 | Claude Code | Codex |
|---|---|---|
| ファイル構成 | page.tsx(5行)+ Chat.tsx(112行) | page.tsx(194行)にすべて集約 |
| 状態管理 | useChat Hook(SDK提供) | useState x 5 + 手動fetch |
| ストリーミング処理 | SDK内蔵(自動処理) | ReadableStream + TextDecoder 手動実装 |
| スタイリング | Tailwind CSS v4 | カスタムCSS 216行(globals.css) |
| ダークモード | prefers-color-scheme(システム自動連動) | 手動トグル + localStorage永続化 |
| Server Components活用 | page.tsxはServer Component | page.tsx全体が”use client” |
| アクセシビリティ | aria属性なし | aria-live, aria-label対応 |
| 初期メッセージ | プレースホルダーテキスト | ウェルカムメッセージ |
| オンボーディング | .env.local のみ | .env.example + README.md |
Claude Codeはpage.tsxをServer Componentとして残し、Chat.tsxだけをClient Componentにする適切なコンポーネント分離を実現。Vercel AI SDKのuseChatフックにより、メッセージ履歴・送信・ストリーミング受信がすべて自動化される。
対してCodexは、page.tsx一つにすべてをまとめたシングルファイル構成。外部SDKに頼らずストリーミング受信をReadableStream + TextDecoderで自前実装しており、コードを読むだけでストリーミングの仕組みが理解できる教育的な実装だ。ダークモードはdata-theme属性 + localStorageで管理し、ユーザーが手動で切り替えられる設計。さらに、Codex独自の判断でglassmorphism(すりガラス効果)やグラデーション背景を採用した視覚的にリッチなUIを実現している。
CSSアプローチの違い
スタイリングの違いは特に顕著だ。Claude CodeはTailwind CSS v4をユーティリティクラスで使い、追加のCSSファイルは不要。一方Codexは、216行のカスタムCSSでbackdrop-filter: blur(14px)(glassmorphism)やradial-gradient(放射グラデーション)など、視覚的にリッチなデザインを実装している。
好みの問題ではあるが、本番運用の観点ではTailwindの方が一貫性の維持とチーム開発での扱いやすさで優れている。Tailwindはユーティリティクラスによる一貫したデザインシステムを提供し、新しいメンバーがプロジェクトに参加しても即座にスタイルを理解・修正できる。カスタムCSSの場合、命名規則やクラス構造を把握するまでに時間がかかり、スタイルの衝突リスクも高い。
ダークモード実装の哲学
ダークモードの実装方法にも両ツールの哲学が表れている。Claude Codeはprefers-color-schemeメディアクエリ + Tailwindのdark:プレフィックスにより、OSの設定に自動連動するゼロコンフィグのダークモードを実現。ユーザーがmacOSやiOSの設定でダークモードを有効にしていれば、チャットボットも自動的にダークテーマに切り替わる。
Codexはdata-theme属性 + localStorageによるユーザー選択型を採用。トグルボタンでLight/Darkを切り替えられ、選択はブラウザに永続化される。初期値はOS設定を参照するが、以降はユーザーの手動設定が優先される。このアプローチは「ユーザーに最終的な選択権を与える」という点で実用的であり、「OSの設定はダークだけどこのアプリだけはライトで使いたい」といったニーズに応えられる。実装コストは高くなるが、UXの柔軟性は上だ。
アクセシビリティへの配慮
アクセシビリティの面ではCodexが明確に優れている。メッセージリストにaria-live="polite"を設定してスクリーンリーダーに新着メッセージを自動通知し、入力欄にはaria-label="メッセージ入力"で明示的なラベルを付与。さらに、送信ボタンのdisabled状態管理も適切だ。Claude Codeの実装にはこれらのaria属性が一切含まれておらず、アクセシビリティの観点ではCodexに軍配が上がる。Webアプリケーションにおけるアクセシビリティは法的要件にもなりつつあり、この差は無視できない。
デモ動画 — 実際に動かしてみた
百聞は一見にしかず。両ツールが生成したチャットボットの実動作を動画で確認しよう。
Claude Code製チャットボット
Claude Code製のチャットボットは、Tailwind CSS v4によるクリーンなUIが特徴。ダークモードはシステム設定に自動連動し、ストリーミングレスポンスはVercel AI SDKが処理するためチャンクの到着が非常にスムーズだ。ローディング中はバウンスアニメーションのドットが表示される。
Codex製チャットボット
Codex製のチャットボットは、glassmorphism(すりガラス効果)を使った洗練されたデザインが印象的。放射グラデーションの背景にボーダーのぼかし効果が美しい。ダークモードは手動トグルで切り替え可能で、localStorageに設定が永続化される。ウェルカムメッセージ付きで、初期状態でもUIが寂しくならない工夫がある。
デザインの好みは分かれるが…
UIデザインの「見た目の良さ」ではCodexに軍配が上がるかもしれない。glassmorphismの背景やカードUIは確かに美しい。しかし、保守性と拡張性を考えると、Tailwindベースのコンポーネント設計の方がチーム開発やスケーリングに適している。
技術スタック比較 — フレームワーク選定の差
両ツールが選んだ技術スタックを比較すると、AIエージェントの「知識の鮮度」が如実に表れる。
| レイヤー | Claude Code | Codex |
|---|---|---|
| フレームワーク | Next.js 16.1.6(最新) | Next.js 14.2.35(旧世代) |
| React | React 19 | React 18 |
| CSS | Tailwind CSS v4 | カスタムCSS 216行 |
| 状態管理 | Vercel AI SDK useChat | 手動 useState x 5 |
| API連携 | Vercel AI SDK streamText | Raw OpenAI SDK |
| TypeScript | strict mode | standard |
| ビルドツール | Turbopack(Next.js内蔵) | Webpack(Next.js 14デフォルト) |
| プロジェクト初期化 | create-next-app | 手動スキャフォールド |
Claude CodeはNext.js 16(最新)+ React 19 + Tailwind v4という2026年最新の組み合わせを選択。create-next-appを使うことで、公式推奨の設定が自動で適用される。Next.js 16はTurbopackをデフォルトのビルドツールとして採用しており、ビルド速度がWebpack比で最大10倍高速。React 19のServer Components最適化と合わせて、パフォーマンス面でも最適な選択と言える。
一方CodexはNext.js 14(旧世代)+ React 18を選択。package.jsonを手書きしているため、依存バージョンがCodexの学習データ時点のものになっている。Tailwind CSSすら採用せず、216行のカスタムCSSを記述。これは「最新のエコシステムへの追従」という観点では明確な差がある。ただし、Next.js 14は安定性が高く実績のあるバージョンであるため、「枯れた技術」を好むプロジェクトでは合理的な選択とも言える。
Vercel AI SDK vs Raw OpenAI SDKの違いも注目に値する。Vercel AI SDKはフロントエンド(useChat)とバックエンド(streamText)を統一的なインターフェースで接続し、ストリーミングのプロトコルも自動管理する。これに対してRaw OpenAI SDKでは、バックエンドのReadableStreamとフロントエンドのfetch + reader.read()を手動で接続する必要があり、実装量とバグの混入リスクが格段に高くなる。
ローカルAI環境の構築方法も含め、Claude Codeは常に最新のツールチェーンを活用する傾向がある。
ベンチマーク比較 — 数字で見る実力差
今回のチャットボットバトルの定性評価に加え、主要ベンチマークの定量データも確認しておこう。
SWE-bench Verified(実世界のGitHub Issue解決 500問)
| エージェントシステム | スコア | 正解数 |
|---|---|---|
| Claude Code(Opus 4.6) | 82.6% | 500問中413問 |
| Codex(GPT-5.3) | 81.8% | 500問中409問 |
Terminal-Bench(DevOps・インフラ系タスク)
| ツール | スコア | 差 |
|---|---|---|
| Claude Code | 61.2% | 12.4pt差 |
| Codex | 48.8% |
Aider Polyglot(多言語コード生成)
| ツール | スコア |
|---|---|
| Claude Code(Opus 4.6) | 75.4% |
| Codex(GPT-5.3) | 72.1% |
3つのベンチマークすべてでClaude Codeがリードしているが、SWE-benchの差は小さくコーディング能力自体はほぼ互角。最大の差が出るのはTerminal-Bench(12.4ポイント差)で、DevOps・サーバー管理タスクではClaude Codeが明確に優位だ。
SWE-benchのスコアはモデル単体ではなく、エージェントシステム全体(プロンプト設計・ツール連携・メモリ管理等を含む)の性能を反映している点に留意が必要だ。つまり、Claude CodeとCodexのスコア差は「モデルの優劣」だけでなく、「ツールの設計思想の違い」も反映している。
Terminal-Benchでの大差(12.4ポイント)は、Claude Codeがローカルファイルシステムへの直接アクセスとBashコマンドの自律的な実行に最適化されていることを示唆している。サーバー管理、ログ分析、設定ファイルの編集といった実務タスクでは、この差が実感として表れるだろう。
ベンチマークと実践の関係
今回のチャットボットバトルの結果は、ベンチマーク以上の差を示している。数値では見えない「計画力」「自己修正能力」「最新SDK追従力」がClaude Codeの真の強みだ。ベンチマークはあくまで参考指標であり、実際の開発体験と必ずしも一致しない。AIエージェントフレームワークの比較も合わせて参照してほしい。
開発体験(DX)比較 — 使い勝手の本音
今回の検証を通じて感じた開発体験(Developer Experience)を5項目で評価する。
1. セットアップ容易性
Claude Code: 4.5/5 | Codex: 3.5/5
Claude Codeはcreate-next-appを使って公式推奨の構成を自動生成。ESLint、TypeScript、Tailwind CSSの設定がすべて最新の推奨値で初期化される。Codexはすべてのファイルを手動生成(cat heredoc方式)するため、設定ファイルの内容がCodexの学習データに依存し、初期設定の正確性にばらつきが出る。例えば今回のケースでは、next.config.mjs(旧形式)が生成されたが、Next.js 16ではnext.config.tsが推奨されている。
2. エラー修正力
Claude Code: 4.5/5 | Codex: 3.0/5
Claude Codeは3回のビルドエラーをすべて自力で修正し、node_modulesの型定義まで読み込んで新しいAPIを特定した。この自己修正能力は高く評価できるが、そもそも3回もエラーを出したこと自体は減点材料だ。一方、Codexはnpm run lintを試みたが、サンドボックスの制約で依存パッケージが未インストールのため失敗。検証を怠ったのではなく、環境の制約により検証できなかったという点は区別すべきだ。なお、Codexが生成したコードは実際にはビルドが通る品質だった。
3. コード品質
Claude Code: 3.5/5 | Codex: 4.5/5
興味深いことに、両ツール自身に生成コードを相互評価させたところ、どちらもCodexのコード品質を上と判定した。Claude Code(Opus 4.6)は53/80 vs 65/80でCodexの勝ちと評価し、Codex(GPT-5.3)も76/100 vs 82/100で自身のコードを上と評価。両者が共通して挙げた根拠は、Codexの入力バリデーション・エラーハンドリングの手厚さ、明示的な型定義(InputMessage)、アクセシビリティ対応だ。Claude Codeの15行はVercel AI SDKに複雑性を委譲した結果であり、「シンプル=高品質」とは言えない。
Claude Code(Opus 4.6)による相互評価
Codex(GPT-5.3)による相互評価
4. 透明性(プロセスの可視化)
Claude Code: 4.5/5 | Codex: 3.5/5
Claude Codeは計画立案から実行、エラー修正まですべてのステップを詳細に説明。「AI SDK v6でuseChatのAPIが大幅に変わっています。input/handleInputChange/handleSubmitは無くなり、sendMessageとstatusに変更」など、具体的な技術的理由まで示してくれる。開発者はAIが何をしているかをリアルタイムで把握でき、学習効果も高い。一方Codexも、各ファイル生成を逐次ユーザーに承認させる「You approved codex to run …」方式で透明性を確保している。ファイルの中身もターミナルに表示されるため、何が書き込まれるかは把握できる。ただし、なぜその技術選定をしたかの判断理由の説明はClaude Codeの方が詳しい。
5. 拡張性
Claude Code: 4.0/5 | Codex: 4.5/5
Codexはオープンソース(Rust製、GitHub公開)であるため、内部動作のカスタマイズが自由。プロンプトの修正、新しいツールの追加、サンドボックスの設定変更などをソースレベルで行える。クラウドサンドボックスでの並列実行は、「10個のファイルのリファクタリングを同時に走らせる」といったスケールアウトが可能。codex execによる非対話モードは、GitHub Actionsのステップとして組み込めばPRごとにAIレビューを自動実行できる。Claude CodeはAgent TeamsやHooksで拡張できるが、ソースコードは非公開。ただし、HooksのイベントフックとMCP統合により、多くのカスタマイズは設定レベルで実現可能だ。
DX総合スコア
| 項目 | Claude Code | Codex |
|---|---|---|
| セットアップ容易性 | 4.5 | 3.5 |
| エラー修正力 | 4.5 | 3.0 |
| コード品質 | 3.5 | 4.5 |
| 透明性 | 4.5 | 3.5 |
| 拡張性 | 4.0 | 4.5 |
| 合計 | 21.0 / 25 | 19.0 / 25 |
料金・プラン比較
ツール選定で避けては通れない料金の話。両ツールの料金体系はかなり異なる。
| プラン | Claude Code | Codex CLI |
|---|---|---|
| 最安プラン | API従量課金(Sonnet: $3/$15 per M tokens) | ChatGPT Plus $20/月 |
| 推奨プラン | Claude Max $100/月(Opus制限付き) | ChatGPT Pro $200/月(無制限) |
| 最上位プラン | Claude Max $200/月(Opus大容量) | ChatGPT Pro $200/月 |
| チーム向け | Claude for Teams $30/ユーザー/月 | ChatGPT Team $30/ユーザー/月 |
| API従量課金 | 対応 | 対応 |
| 無料枠 | なし(API最小利用分のみ) | ChatGPT Plus契約者は利用可 |
コスパ分析
ライトユーザー(月数十回の使用):API従量課金のClaude CodeまたはChatGPT Plus内のCodexが最もコスパが高い。特にChatGPT Plus($20/月)にはCodex利用分が含まれるため、すでに契約中なら追加コストゼロでCodexを使える。
ヘビーユーザー(毎日開発に使用):Claude Max $100プランが最もバランスが良い。Opus 4.6モデルの高品質な出力を、月額固定で利用できる。ChatGPT Pro($200/月)は無制限だが価格が2倍。
チーム利用:両者とも$30/ユーザー/月で横並び。Claude CodeにはAgent Teams機能があるため、複数のAIエージェントを協調させるワークフローが可能。一方、Codexのクラウドタスク機能は、チームメンバーが非同期でタスクを投げて結果を確認する使い方に適している。
API従量課金で使う場合:Claude CodeをSonnetモデル($3/$15 per M tokens)で使うと、一般的なコーディングセッション(数千トークン)で1回あたり数セント程度のコスト。Opusモデル($15/$75 per M tokens)は5倍高いが、今回のチャットボットバトルのような複雑なタスクではOpusの品質が活きる。月の使用量が不規則な場合は、固定月額よりもAPI従量課金の方が合理的だ。
どちらを選ぶべきか — ユースケース別おすすめ
ここまでの分析を踏まえ、ユースケース別の推奨ツールをまとめる。
Claude Codeを選ぶべきケース
- 本番品質のコードが必要:最新SDK・フレームワーク追従、ビルドエラー自動修正
- 大規模プロジェクト:200Kトークンのコンテキスト、サブエージェント分担
- チーム開発:Agent Teamsで複数AIエージェント協調
- DevOps・インフラ管理:Terminal-Benchで12.4ポイントの優位
- プロセスの透明性を重視:計画から実行まで詳細に説明、学習効果が高い
- 自己修正能力を重視:ビルドエラーを自力で検出・修正
Codexを選ぶべきケース
- プロトタイプの高速作成:ファイル即時生成、UIデザインがリッチ
- CI/CDパイプライン統合:
codex execの非対話モードが強力 - コスパ重視:ChatGPT Plusの$20/月に含まれる
- 並列タスク処理:クラウドサンドボックスで複数タスク同時実行
- カスタマイズしたい:オープンソースで内部動作を自由に変更可能
- 初心者・学習目的:生成コードが教科書的で理解しやすい
- アクセシビリティ重視:aria属性を自発的に付与、UX配慮が手厚い
両方使うという選択肢
実はもっとも賢い選択は「両方使い分ける」ことだ。
- 設計・実装フェーズ → Claude Code(計画力、コード品質、自己修正)
- CI/CDパイプライン → Codex(非対話モード、サンドボックス)
- プロトタイプ作成 → Codex(高速生成、リッチUI)
- コードレビュー・リファクタリング → Claude Code(透明性、説明力)
よくある質問(FAQ)
Q. Claude CodeとCodex、初心者にはどちらがおすすめ?
用途による。Claude Codeは作業プロセスを詳細に説明してくれるため学習効果が高く、ビルドエラーの自動修正で行き詰まりにくい。Codexは生成コードが教科書的で読みやすく、外部SDKに頼らない実装のためストリーミングやAPIの仕組みを直接学べる。ChatGPT Plusをすでに契約しているなら追加コストゼロのCodexから始めるのが合理的。深い理解を求めるならClaude Codeが向いている。
Q. 日本語でのやり取りはどちらが自然?
どちらも日本語対応は優秀。Claude Codeは計画立案から完了報告まで終始日本語で対話し、プロセスの説明が詳細。Codexも日本語での対話は自然で、生成コード内のコメントやメッセージも適切な日本語を使用する(ウェルカムメッセージ「こんにちは。質問をどうぞ。」やエラーメッセージの日本語化など)。日本語能力に関しては両者に大きな差はない。
Q. 生成されたコードはそのまま本番環境で使える?
Claude Code製のコードはビルド検証済みのため、APIキー設定後にすぐデプロイ可能。Codex製のコードはnpm install → ビルド確認 → エラー修正の手順が必要になる場合がある。いずれの場合も、セキュリティレビューと自動テストの追加は本番利用前に必ず行うべきだ。
Q. 両ツールを併用することはできる?
もちろん可能。同じプロジェクトに対して、設計・実装にClaude Code、CI/CDにCodexという使い分けが効果的。両者はローカルのファイルシステムを通じて作業するため、競合は発生しない。ただし、同じファイルに同時に変更を加えるのは避けた方が安全だ。ブランチを分けて使うのが理想的。
Q. VSCodeやCursorとの連携はどちらが優れている?
Claude CodeはVSCode拡張機能とCursorの両方に対応しており、IDE内で直接利用できる。CodexもVSCodeとCursorに対応。IDE連携の機能面では大差ないが、Claude Codeはサブエージェントやplan modeといったターミナル版の強力な機能をIDE内でも活用でき、エディタから離れずに高度なタスクを実行できるのが利点だ。
Q. セキュリティ面での違いは?
Codexはサンドボックス環境(macOS Seatbelt / Linux Landlock)でコード実行するため、ファイルシステムへの不正アクセスリスクが低い。Claude Codeはローカルで直接実行するため、権限設定を適切に管理する必要がある。ただしClaude Codeは各操作前にユーザーへの確認を行う設計で、意図しない破壊的操作のリスクは低く抑えられている。
まとめ — 競争が生む進化
同一プロンプトによるチャットボットバトルを通じて見えてきたのは、「どちらか一方が圧勝」ではなく、両ツールが異なる強みを持つ補完的な存在だということだ。
6つのキーテイクアウェイ
- コード品質はCodexが上:両ツール自身に相互評価させた結果、Claude Code(53 vs 65/80)もCodex(76 vs 82/100)も「Codexのコードが上」と判定。入力バリデーション、エラーハンドリング、型安全性、アクセシビリティでCodexが明確に優れていた。
- 開発プロセスはClaude Codeが上:計画立案、ビルドエラーの自己修正、作業プロセスの詳細な説明——開発ツールとしてのDXではClaude Codeに軍配。
- 技術選定の鮮度:Claude CodeはNext.js 16 + React 19 + Tailwind v4の最新スタック。CodexはNext.js 14 + React 18の旧世代。AIの「知識の鮮度」に明確な差。
- UIデザインとUX配慮はCodex:glassmorphismデザイン、アクセシビリティ対応、ウェルカムメッセージ、ダークモードの手動切替——ユーザー目線の配慮はCodexが充実。
- エコシステムの違い:Claude CodeはSubagents/Agent Teams/Hooks/MCPで拡張し、エンタープライズ向けの統合ワークフローに強い。Codexはオープンソース + クラウドサンドボックス + 非対話モード(codex exec)で拡張し、CI/CDパイプラインやオープンソースコミュニティでの活用に強い。
- 「どちらか一方」ではなく「両方」:両ツールは競合というより補完関係。設計・実装フェーズにClaude Code、プロトタイプやCI/CDにCodex、といった使い分けがもっとも賢い選択だ。
Codexの強み:UIデザインとUX配慮
Codexが今回のバトルで見せた強みは無視できない。まずUIデザイン——Codexが生成したチャットボットは、率直に言ってClaude Code製よりも美しかった。glassmorphism効果(すりガラス)、放射グラデーション背景、box-shadow: 0 24px 70px rgba(2,6,23,0.2)による深い影。これらは216行のカスタムCSSで実現されており、デザインセンスの高さがうかがえる。
さらにUX面でも、ウェルカムメッセージ(「こんにちは。質問をどうぞ。」)で初期状態のUIを親切にし、aria-live/aria-labelによるアクセシビリティ対応、ダークモードの手動切替+永続化、baseURL環境変数によるカスタムエンドポイント対応、.env.exampleとREADME.mdによるオンボーディング配慮——これらはClaude Codeの実装には含まれていない要素であり、Codexの「ユーザー目線の配慮」が光る部分だ。
最終的な勝者は——ユーザーだ
AnthropicとOpenAIの競争は、AIコーディングツールの進化を加速させている。2025年初頭にはClaude Codeが「唯一のターミナルAIエージェント」だったが、Codexの登場で競争が激化し、両者は急速に機能を拡充している。
この競争の恩恵を受けるのはわれわれ開発者だ。1年前には不可能だった「チャットボットを丸ごとAIに作らせる」ことが、今や4分弱で実現する。アクセシビリティ対応やストリーミング実装まで含めた実用的なコードが自動生成される。コードの品質もプロの開発者が書いたものと遜色ないレベルに達しており、AIコーディングツールは「おもちゃ」から「本番で使える実用ツール」へと明確にフェーズが移行した。2026年は間違いなくAIコーディングツール元年と呼べる年になるだろう。
どちらのツールを選んでも、あなたの開発生産性は確実に上がる。大切なのは自分のワークフローに合ったツールを選ぶこと。まずは無料枠やトライアルで両方を試し、自分のプロジェクトに合うかどうかを体感してほしい。本記事で紹介したターミナルログやコード、デモ動画がその判断の一助になれば幸いだ。
最後に筆者の個人的な見解を述べておくと、正直に言ってどちらか一方を選ぶことはできなかった。Claude Codeの自己修正能力と最新SDK追従力はフロントエンド開発で心強いし、Codexのコード品質の高さとリッチなUI生成力も捨てがたい。日常的に両方を使い分けているが、どちらが「勝者」かと聞かれれば、答えは「両方使っているユーザーが勝者」だ。
2026年の後半にはさらに新しいバージョンがリリースされることが予想される。Claude CodeはSubagentsやAgent Teamsの進化、CodexはCloud TasksやMCP統合の強化が見込まれる。両ツールが互いの強みを取り込みながら進化していく様子は、ブラウザ戦争やIDE競争と同じく、技術の発展を促すポジティブな競争だ。今後もこの2大ツールの動向をウォッチし、最新の比較情報をお届けしていく。