Valumigo

Claude Code vs Codex 第2回:複数ファイルの実務型課題3つを各3回試しました

第1回の実測は小さな単一ファイルの課題だったため、両ツールとも満点でした。今回は実際のサービスコードに近い小さなECサイトのプロジェクト(価格計算・在庫・注文・ストア、6ファイル)を作り、顧客からの報告のように症状だけを伝えるバグ、仕様書で提示する機能、同時注文時にだけ発生するバグを課題にしました。

実行日 2026-10-04

ひと目でわかる結果

  • 正答率:今回も両ツールがそれぞれ全9回の実行で、すべての隠しテストに合格しました。並行処理の課題にはランダムな遅延があるため、各実行を3回ずつ採点しましたが、一度も失敗しませんでした。
  • 速度:課題ごとの中央値では、Codex(GPT-6.1 Sol)がClaude Code(Claude Opus 5)より約1.3~1.9倍速く、差は課題ごとに24~42秒でした。
  • トークン:課題ごとの中央値では、Claude Codeの入力トークン(キャッシュ再利用を含む)はCodexの約4~6倍、出力トークンは約2.5~3.7倍でした。
  • 作業の傾向:Codexはバグ課題(T4)と並行処理課題(T6)の全6回で回帰テストファイルを新規追加し、1回はREADMEとストアのコード(store.js)も変更しました。Claude Codeは全9回でテストを追加せず、ソースファイルのみ修正しました。
  • 設計の選択:並行処理課題では、両ツールとも全6回で'注文処理を一列に並べる'グローバルロックを使って解決しました。結果は正確ですが、異なる商品の注文も順番を待つことになります。

結果

時間は3回の中央値、括弧内は最速~最遅の値です。

課題ツール合格(3回すべて)所要時間入力トークン出力トークン変更行数(+/−)
T4 複数ファイルのバグ修正 · Claude CodeT4 複数ファイルのバグ修正Claude Code3/360.6s (59.7–75.2)564,6184,495+6 / −5
T4 複数ファイルのバグ修正 · Codex CLICodex CLI3/336.3s (31.9–44.2)94,1601,363+4 / −4
T5 仕様に基づく機能追加 · Claude CodeT5 仕様に基づく機能追加Claude Code3/390.1s (89.8–110.6)592,4857,366+42 / −2
T5 仕様に基づく機能追加 · Codex CLICodex CLI3/347.8s (47–49.3)95,7452,002+41 / −2
T6 並行処理のバグ + API移行 · Claude CodeT6 並行処理のバグ + API移行Claude Code3/3111.9s (104.4–147.4)660,1079,554+87 / −16
T6 並行処理のバグ + API移行 · Codex CLICodex CLI3/385s (79–93.1)162,1933,818+49 / −18

入力トークンには、前の段階の会話を再読する際のキャッシュ再利用分が多く含まれます。2つのCLIではトークンの数え方が異なるため、おおよその規模の比較としてご覧ください。

Claude Codeが報告した'API定価換算の費用'は、今回の課題あたり約0.78~1.25ドルでした。サブスクリプションアカウントではこの金額を別途支払うことはなく、プランの使用上限から差し引かれます。Codexは同じ値を報告しないため、比較していません。

3つの課題

T4 複数ファイルのバグ修正

顧客からの報告4件(円に小数点が付く、ちょうど10個買うと大量購入割引が適用されない、15%クーポンで1セントの差が出る、クーポンで合計が負になる)だけをISSUES.mdで渡し、正しいルールはREADMEから探させました。原因はmoney.jsとcart.jsの2ファイルに分散しています。

T5 仕様に基づく機能追加

READMEの仕様どおりに部分返金(refundOrder)を実装する課題です。返品によって大量購入割引の条件を満たさなくなると返金額が減るルール、クーポンの再計算、在庫の復元、複数回に分けた返金、過剰返金の拒否、失敗時に何も変更されない条件を隠しテストで確認します。

T6 並行処理のバグ + API移行

最後の在庫を複数人が同時に購入すると全員が成功して在庫が負になるバグを修正し、既存のコールバック方式の呼び出しを維持しながらawaitでも使えるようにする課題です。隠しテストでは、20人の同時注文、複数商品の注文でのデッドロック、全成功か全失敗かの原子性、エラーの伝達方法を確認します。

すべての実行で使った指示文

以下の文章では、'Task:'の後の1文だけが課題ごとに変わります。第1回の実測と異なり、'README.mdと他の文書'を読むよう指示しました。

This folder is a small Node.js project (ES modules, no dependencies). Read the code, README.md and any other docs, and the tests. Task: {task} Do not modify existing test files. When you are done, make sure `node --test` passes.
  • T4 複数ファイルのバグ修正 — Fix the bugs reported in ISSUES.md. README.md describes the correct pricing rules.
  • T5 仕様に基づく機能追加 — Implement refundOrder in src/orders.js according to the Refunds section of README.md.
  • T6 並行処理のバグ + API移行 — Fix the problems described in the Orders section of README.md (overselling, and supporting both the Promise and the callback style).

測定方法

  • 実行日2026-10-04 (韓国時間の夜)、Apple M1 Pro · macOS 26.6 · Node.js 22。第1回の実測と同じコンピューター・同じバージョン・同じ設定です。
  • Claude Code 2.1.250 — 既定モデルClaude Opus 5 (短い補助作業ではClaude Haiku 4.5も呼び出されました)。Codex CLI 0.159.2 — モデルGPT-6.1 Sol、推論の強度medium。
  • 両ツールとも運営者の個人サブスクリプションアカウントで非対話モード(claude -p、codex exec)で実行し、ファイル修正とnodeの実行は自動許可しました。追加料金なしで既存のサブスクリプション内で実行しました。
  • 課題ごとに実行順序を変えました(1回目はClaude Codeが先、2回目はCodexが先、3回目はClaude Codeが先)。実行中は同じコンピューターでビルドなどの重い作業を行いませんでした。

採点方法

  • 課題ごとに、エージェントが閲覧できるテスト3つと、採点時だけ追加する隠しテスト(9~12個)を用意しました。隠しテストは運営者が書いた正解コードで事前に検証し、並行処理課題の正解コードは10回繰り返し実行して、毎回同じ結果になることを確認しました。
  • 採点前にtestフォルダーを元の状態に戻しました。エージェントが新規追加したテストファイルは採点に使用していません。
  • 並行処理のバグはまれにしか現れない場合があるため、すべての結果を時間帯を変えて3回ずつ採点し、最低点を記録しました。

2つのツールが書いたコードはどう違ったか

  • T4:両ツールともmoney.js(円の小数桁数、丸め)とcart.js(10個の基準、クーポンの上限)のバグ4つをすべて発見しました。変更したソース行数はClaude Codeが5~9行、Codexが4~5行で、ほぼ同程度でした。Codexは全3回で、報告内容を再現する回帰テストファイルを別途作成しました。
  • T5:両ツールとも'残った商品の価格を当初のルールで再計算して差し引く'という仕様どおりに実装し、追加したソース行数も40~47行で、ほぼ同程度でした。
  • T6:両ツールとも全6回で、注文処理全体を1つのキュー(グローバルロック)で直列化しました。Codexは2・3回目で、同じストアを使う複数の注文サービスがキューを共有するよう、ストア単位でロックをまとめました。1回目ではストアにtransaction機能を新規追加し、READMEに説明を追加しました。Claude Codeはorders.jsの1ファイル内だけを修正しました。商品ごとにロックを分ける方式は、どちらも使いませんでした。

この実測の限界

  • プロジェクトは約200行、6ファイルの小さなコードです。第1回より実務に近いものの、実際のサービスのリポジトリよりはるかに小規模です。
  • 両ツールとも満点だったため、正確性の差を示せませんでした。より大きなリポジトリや要件が曖昧な課題では、結果が変わる可能性があります。
  • 所要時間はサーバーの状態・ネットワークによって変わります。同じ夜に交互に実行して影響を抑えましたが、なくすことはできませんでした。
  • Codexは推論の強度medium、Claude Codeは既定の設定です。サブスクリプションの使用上限がどれだけ減ったかは測定していません。

では、何を使うか

以下は、この実測結果に基づく運営者の意見です。

  • 今回の規模の実務型課題でも、成果物の正確性に差は現れませんでした。すでに支払っているサブスクリプションに含まれるツールを先に使うのが合理的です。
  • 素早く試したいなら、今回もCodexが1.3~1.9倍速く実行できました。
  • 変更範囲を狭く保ちたいなら、Claude Codeが有利でした(ソースファイルのみ修正)。Codexは回帰テストを自発的に追加しますが、依頼していないREADME・ストアのコードまで変更したケースがあり、レビューが必要です。
  • 並行処理・性能など、設計判断が必要な問題では、両ツールとも最も単純な正解を選びました。スループットなどの条件が重要なら、指示文に明記してください。

ClaudeChatGPT (Codex)エージェント

全18回の実行記録

課題ツール実行回秒合格したテスト入力トークン出力トークン変更行数(+/−)
T4 · Claude Code · 実行回 1T4Claude Code159.715/15567,6944,495+9 / −5
T4 · Claude Code · 実行回 2T4Claude Code275.215/15496,1744,638+5 / −5
T4 · Claude Code · 実行回 3T4Claude Code360.615/15564,6184,458+6 / −5
T4 · Codex CLI · 実行回 1T4Codex CLI144.215/1595,6061,850+5 / −5
T4 · Codex CLI · 実行回 2T4Codex CLI236.315/1594,1601,363+4 / −4
T4 · Codex CLI · 実行回 3T4Codex CLI331.915/1589,4211,168+4 / −4
T5 · Claude Code · 実行回 1T5Claude Code189.812/12654,7177,366+42 / −2
T5 · Claude Code · 実行回 2T5Claude Code290.112/12585,0627,327+47 / −2
T5 · Claude Code · 実行回 3T5Claude Code3110.612/12592,4859,232+40 / −2
T5 · Codex CLI · 実行回 1T5Codex CLI149.312/1295,7452,054+40 / −2
T5 · Codex CLI · 実行回 2T5Codex CLI24712/1295,6831,989+41 / −2
T5 · Codex CLI · 実行回 3T5Codex CLI347.812/12116,2032,002+43 / −2
T6 · Claude Code · 実行回 1T6Claude Code1147.412/121,100,25910,403+105 / −16
T6 · Claude Code · 実行回 2T6Claude Code2111.912/12660,1079,554+87 / −16
T6 · Claude Code · 実行回 3T6Claude Code3104.412/12646,6518,335+63 / −16
T6 · Codex CLI · 実行回 1T6Codex CLI18512/12173,3813,818+64 / −25
T6 · Codex CLI · 実行回 2T6Codex CLI293.112/12162,1934,385+49 / −18
T6 · Codex CLI · 実行回 3T6Codex CLI37912/12157,8013,694+44 / −17

課題・採点ファイルのダウンロード

課題の原本(ECサイトのコード)、隠しテスト、正解コード、実行スクリプト、18回の結果要約(JSON)、実行ごとのdiffをまとめました。

coding-agents-round2-2026-10.zipをダウンロード