Claude Code と OpenAI Codex を、同じリポジトリで17日間、毎日自動で動かしました。2026年8月16日から9月1日までの27ラン分の実行ログが残っています。

先に結論を書きます。この記事は「どちらが優秀か」には答えません。当メディアの2体は担当している工程が違い、同じ仕事をさせた比較ではないからです。完走率77%対57%、所要時間の中央値32.3分対11.3分という差は出ましたが、工程数が違うので優劣の根拠にはなりません。

答えられるのはこちらです。併用は成立します。そして工程で分けたほうが、両方の弱点が消えます。落ちて困る工程を完走率の高いほうへ、数を当てにいく工程を速いほうへ寄せる、という分け方です。

そして併用で実際に壊れたのは、事前に警戒していた「同じファイルを2体が同時に書く」ではありません。一度も起きませんでした。問題になったのは生成処理ではなく公開処理という共有工程の奪い合いで、17日間で1回でした。

この記事は、その1回が何だったのか、なぜ生成処理では衝突しなかったのか、そして併用を始める人が最初に何をすべきかを、実行ログと実装コードを添えて書いたものです。うまくいった話だけではありません。Codexの原稿は4割を没にしていますし、Claudeは3日連続で落ちた週があります。

クイック比較:17日間の実測でどう違ったか

上段と下段にそれぞれ2本の横棒が並び、上下で長短が入れ替わって見える対比図

同じ仕事をさせた比較ではありません。Claude Code は公開まで通す工程、Codex は生成と検証までを担当しているので、工程数が違います。「どちらが優秀か」ではなく「どちらにどの工程を任せるか」の材料として見てください。

Claude Code Codex
ジョブ完走率 77%(13ラン中10) 57%(14ラン中8)
1ランの所要時間(中央値) 32.3分 11.3分
所要時間(最長) 59.2分 57.3分
17日間の合計稼働 6.9時間 4.6時間
成果物の採用率 公開判断側なので該当なし 57%(8本採用 / 6本却下)
当メディアでの担当 公開・デプロイ・採否 生成・検証・別視点レビュー
権限 公開・FTP・外部送信あり すべて無し(意図的に外している)
落ちた回数 3回(8/18・19・20の3日連続) 6回(うち1回はロック衝突)

片方に寄せるなら Claude Code、速さが要るなら Codex、両方あるなら工程で分ける。 その分け方を以下で書きます。

結論:衝突するのは公開処理だけ。だから分ける順番が決まる

分ける順番は 「書いてよいディレクトリ → 実行時間 → ロック」 です。この順でなければいけない理由があります。

1番目を飛ばして時間だけずらしても、ジョブが長引いた日に重なれば壊れます。1番目を飛ばしてロックだけ掛けても、生成処理までロックの対象になり、遅いほうが速いほうを止めます。領域を分けてしまえば、生成処理は互いを見なくて済む。 そのうえで残る共有部分だけにロックを掛けるので、ロックの範囲が最小になります。

当メディアの分け方はこうです。

同一リポジトリを2体で編集するときのterritoryと共有ロックの図解。左がClaudeで毎朝7時3分に実行し、content配下、content_queueのtoolsとhowto、templates、assets、cronへ書き込んでよい。担当は公開判断、一次ソースの再確認、FTP、Codex原稿のレビューと採否。右がCodexで毎日12時3分に実行し、automation配下、content_queueのcodex配下のreview_required、実行ごとのworkspaceランディレクトリへ書き込んでよい。Codexには公開、FTP、外部送信の権限を与えていない。検証に通った原稿を置くところまでが担当。中央のオレンジが共有ロックで、公開時だけ取得する。共有するのはeditorial.lockひとつだけで、生成処理は互いの領域だけを触るので衝突しない。取り合いが起きるのは公開とレビューキューの移送だけ。ロックが取れなければ終了コード75を返してその回はスキップし、待たせない

Codex には公開・FTP・外部送信の権限を与えていません。検証に通った原稿を content_queue/codex/review_required/ に置くところまでが担当で、そこから先は翌朝の Claude が一次ソースを再確認したうえで採否を決めます。権限を絞ったのは安全のためだけではなく、共有部分を減らせばロックの範囲が小さくなるからです。

17日間、実際に何が起きたか

automation/runs/ に残った27ラン分を集計しました。

17日間の実測結果の図解

17日間の実測(2026-08-16 〜 09-01・全27ラン)

ジョブ成功率

1ランの所要時間(中央値)

Claude 77%(13ラン中10)
Codex 57%(14ラン中8)
Claude 32.3分(最長 59.2分)
Codex 11.3分(最長 57.3分)
Codexの原稿は4割が没 失敗の中身
レビューへ送った 8 本 / 却下 6 本 Claude 3回:8/18・19・20 の3日連続
採用率 57%。落ちた理由の大半は Codex 6回:うち1回は 8/24 の
「その語を誰も検索していない」だった。 終了コード75 = ロックの取り合い
ラン数 成功率 所要中央値 所要最長 合計稼働
Claude(毎朝07:03) 13 77% 32.3分 59.2分 6.9時間
Codex(毎日12:03) 14 57% 11.3分 57.3分 4.6時間

速いのは Codex、完走するのは Claude という結果になりました。中央値で3倍近い差があります。ただしこれは同じ仕事をさせた比較ではありません。Claude は公開まで通す工程、Codex は生成と検証までなので、そもそも工程数が違います。「どちらが速いか」ではなく「どちらにどの工程を任せるか」の材料として見てください。

Codex がレビューへ送った原稿は8本、却下は6本で、採用率は57%でした。却下の理由で最も多かったのは品質ではなく「その語を誰も検索していない」です。実際の却下記録から1件引きます。

target_kw: Dify クラウド セルフホスト 費用 / サジェスト0件 / 却下理由「需要ゼロ。本文のTCO計算自体は品質基準を満たしている」

本文の質は問題なく、狙った語に需要が無かったので落としています。この失敗が続いたので、途中から需要ゲートを Codex 側の必須条件に入れました。

最初に壊れたのは「同じファイルの同時編集」ではなかった

2本のネイビーの太い帯が並走して右へ伸び、帯1本ぶんしかない細いオレンジの出口で詰まっている図

併用を始める前に警戒していたのは、2体が同じ記事ファイルを同時に書き換えて内容が混ざることでした。17日間で一度も起きませんでした。 領域を分けた時点で、生成処理は互いのファイルを見に行かないからです。

実際に起きたのは8月24日の1回だけで、公開処理の取り合いでした。

ロックが取れなかった回に何が起きたかの図解

ロックが取れなかった回に何が起きたか(2026-08-24)

なぜ「待つ」ではなく「落とす」なのか

Claude が公開処理 Codex が公開キューへ ロック取得に失敗 その回は
ロック保持中 移送しようとする 終了コード 75 スキップ

ロックの実装は Windows の msvcrt を使っています。運用中のものをそのまま載せます。

@contextmanager
def named_lock(name: str) -> Iterator[None]:
    import msvcrt

    if not re_fullmatch_lock_name(name):
        raise ValueError("lock name is invalid")
    lock_path = AUTOMATION / "locks" / name
    lock_path.parent.mkdir(parents=True, exist_ok=True)
    handle = lock_path.open("a+b")
    try:
        handle.seek(0, os.SEEK_END)
        if handle.tell() == 0:
            handle.write(b"0")
            handle.flush()
        handle.seek(0)
        try:
            msvcrt.locking(handle.fileno(), msvcrt.LK_NBLCK, 1)
        except OSError as exc:
            raise RuntimeError("別のAIディア編集ジョブが実行中です") from exc
        yield
    finally:
        try:
            handle.seek(0)
            msvcrt.locking(handle.fileno(), msvcrt.LK_UNLCK, 1)
        except OSError:
            pass
        handle.close()

要点は LK_NBLCK です。ブロッキングしないロックを使い、取れなければ即座に例外を投げます。 待ちません。呼び出し側はこれを終了コード75に変換して、その回のジョブを終わらせます。

待たせない理由は図解にも書きましたが、待つ設計にすると公開処理が長引いた日に2体が同時に生き残ります。そうなると生成の途中で相手の成果物が入れ替わる可能性が出てきます。1日1回の定期実行であれば、1回落としても翌日には戻ります。取りこぼし1回と、壊れた記事を公開するリスクを比べたら、前者のほうが安いという判断です。

17日間でこの発動は1回でした。これが頻発するなら、問題はロックではなくジョブ時間の設計です。 当メディアは07:03と12:03で5時間空けており、所要時間の中央値の合計は約44分なので、通常はまったく重なりません。

どちらに何をやらせるか

17日間の実測から、工程の割り当てをこう決めました。

どちらに何をやらせるかの判断フローの図解

どちらに何をやらせるか(17日間の実測から)

速さと完走率が逆。片方に寄せるより、工程で分けたほうが両方の弱点が消える。

分ける順番は「領域 → 時間 → ロック」

  1. 共有する処理だけロックを取る(公開とキュー移送だけ。生成処理は取らない)
こういう仕事は Claude こういう仕事は Codex 併用しないほうがいい場合
最後まで通す必要がある工程 数を当てにいく生成・下書き 1人・1リポジトリで手元だけ
公開・デプロイ・外部への書き込み 落ちても捨てればいい探索 定期実行にしていない
判断が要る採否・レビュー 別視点でのレビュー レビューする人がいない
根拠:完走率 77%(Codex 57%) 根拠:中央値 11.3分(Claude 32.3分) 下書きが増えるだけで終わる

自分の環境に当てはめるときは、次の数字を置き換えて考えてください。

  • 完走率:落ちて困る工程を、完走率の高いほうへ寄せます。当メディアは77%と57%でした。この差が小さいなら、工程で分ける必要はありません
  • 所要時間の中央値:2体の合計が、ジョブ間隔より十分に短いかを見ます。当メディアは合計約44分に対して間隔5時間なので、9%程度の占有率です。ここが50%を超えるなら、ロックの発動が常態化します
  • 採用率:生成側の原稿がどれだけ採用に至るかです。当メディアは57%でした。ここが低いままなら、生成の速さは意味を持ちません

これから併用する人が最初にやること

同じ大きさの正方形ブロックが3つ横一列に並び矢印でつながれ、3つ目だけオレンジで、中に1・2・3の数字が書かれた図

順番どおりにやってください。1番目を飛ばすと、あとの2つは効きません。

  1. 書いてよいディレクトリを分ける。 紙に書くだけでなく、片方の権限を実際に外します。当メディアは Codex から公開・FTP・外部送信の権限そのものを外しました
  2. 実行時間をずらす。 所要時間の中央値を測ってから決めます。測らずに決めると、たいてい足りません
  3. 共有する処理だけにロックを掛ける。 生成処理には掛けません
  4. 落ちた回をログに残す。 終了コードで区別できるようにしておくと、あとから「ロックの取り合いが何回起きたか」が数えられます。今回の記事はこのログだけで書けています

なお、当メディアは Windows で運用しています。この記事のロック実装が msvcrt なのはそのためで、Linux や macOS では fcntl に置き換えてください。Windows 環境ではほかにも踏んだ罠がいくつかありますが、それは別記事にします。

この記事で使った設定を、そのままコピーできる形で配布しています。territory 規約のひな形、排他ロックの実装(Windows の msvcrt 版と Linux / macOS の fcntl 版)、終了コード75で落とすジョブ側の受け方、実行ログに最低限残すJSONの形をまとめたものです。顧客名・実案件・認証情報は含みません。ライセンスは自由で、帰属表示も不要です。

併用スターターキットをダウンロード

17日間ぶんの実測なので、これが3ヶ月、半年と続いたときに同じ結論になるかはまだ分かりません。とくに採用率57%は改善余地しかない数字で、需要ゲートを入れた効果はこれから測ります。続きは運営ログで随時公開します。

どちらを使うかの前に、そもそも操作の何割が何に使われているかはClaude Code の使い方で数えました。

VERIFIED
動作確認日: 2026.09.01 / 環境: Windows 11 / Python 3.11 / Claude Code(毎日07:03)と OpenAI Codex CLI(毎日12:03)をタスクスケジューラで定期実行 / 対象は本メディアの単一リポジトリ / ステータス: passed

よくある質問

Claude CodeとCodexは、同じリポジトリで同時に動かせますか。
動かせます。ただし書き込んでよいディレクトリを先に分けることが前提です。当メディアは17日間の定期実行で、生成処理の衝突は0回でした。衝突したのは公開処理とレビューキュー移送という共有工程だけで、1回です。
ロックが取れなかったとき、待たせるべきですか。
1日1回の定期実行なら待たせません。当メディアは終了コード75を返してその回をスキップします。待たせると、公開処理が長引いた日に2体が同時に生き残り、生成の途中で相手の成果物が入れ替わります。1回の取りこぼしより、壊れた記事を公開するほうが高くつきます。
併用しないほうがよいのはどんな場合ですか。
1人・1リポジトリで手元だけで使っていて、定期実行にしておらず、生成物をレビューする人がいない場合です。この条件では下書きが増えるだけで終わります。当メディアでもCodexの原稿は14本中6本を却下しており、採用率は57%でした。
AI実装・PoC外注

作りかけで止まっているAIを、動く状態まで持っていきます

要件整理からPoC構築、本番移行の条件提示まで。モデル別の原価試算と、障害時の責任分界まで文書で出します。

実装の相談をする

先にサービス内容と料金を見る →

無料で相談してみる →