はじめに

OpenAI Codexの真価は、単一タスクの処理能力だけでなく、複数のタスクを同時に管理・実行できる点にあります。従来のAIコーディングツールでは、1つのタスクが完了するまで次のタスクに着手できませんでした。Codexでは、クラウドサンドボックスの分離された環境を活用することで、複数の開発タスクを並列に実行し、効率的に管理できます。

本記事では、複数タスクの同時実行方法から、進捗監視、タスクの中断と再開、実行ログの読み解き方、そしてタスク完了後のレビューフローまでを実践的に解説します。

前提条件

本記事の内容を実践するには、以下の準備が必要です。

要件 詳細
ChatGPTプラン Plus、Pro、Business、Edu、Enterpriseのいずれか
GitHub連携 Codexとの接続設定が完了していること
環境設定 対象リポジトリの環境が作成済みであること

基本操作については、前回の記事で解説していますので、まだ設定が完了していない方はそちらを参照してください。

スレッドの概念を理解する

Codexにおけるタスク管理の基本単位は「スレッド」です。スレッドとは、プロンプトの送信からCodexの応答、ツール呼び出しまでを含む一連のセッションを指します。

スレッドの特徴

flowchart TD
    subgraph "スレッド(Thread)"
        A[プロンプト送信] --> B[モデル応答]
        B --> C[ツール呼び出し]
        C --> D[ファイル編集]
        D --> E[テスト実行]
        E --> F{完了 or キャンセル}
    end

スレッドは以下の特性を持ちます。

特性 説明
実行中状態 Codexがアクティブに作業している状態
複数プロンプト 1つのスレッド内で複数のプロンプトを送信可能
並列実行 複数のスレッドを同時に実行可能
再開可能 中断後に続きから作業を継続可能

ローカルスレッドとクラウドスレッド

Codexのスレッドには2種類あり、用途に応じて使い分けます。

ローカルスレッド

ローカルマシン上で実行されるスレッドです。Codexはファイルの読み書きやコマンド実行を行い、変更を直接確認できます。セキュリティを考慮し、サンドボックス内で実行されます。

クラウドスレッド

Codexのクラウド環境で実行されるスレッドです。リポジトリをクローンし、指定されたブランチをチェックアウトして作業します。並列実行やバックグラウンド処理に適しています。

flowchart LR
    subgraph "ローカルスレッド"
        L1[IDE/CLI] --> L2[ローカルファイル]
        L2 --> L3[即時フィードバック]
    end
    
    subgraph "クラウドスレッド"
        C1[Codex Web] --> C2[クラウドサンドボックス]
        C2 --> C3[PR作成]
    end
    
    L1 -.->|委任| C1

複数タスクの同時実行

Codexの強力な機能の一つが、複数のタスクを同時に実行できる点です。各タスクは独立したサンドボックスで実行されるため、相互に影響を与えません。

並列実行のメリット

複数タスクを並列に実行することで、以下のメリットが得られます。

メリット 説明
時間効率 待ち時間なしで複数の作業を進行
独立性 各タスクが分離された環境で安全に実行
柔軟性 異なるブランチで同時に作業可能
スケーラビリティ チーム全体の生産性向上

並列実行の開始方法

Codexダッシュボードから複数のタスクを同時に開始する方法を説明します。

Step 1: 最初のタスクを開始

環境を選択し、最初のタスクを「コード」モードで送信します。

認証モジュールにリフレッシュトークン機能を追加してください。
トークンの有効期限は7日間とし、期限切れ時に自動更新するようにしてください。

Step 2: 新しいタブでタスクを追加

タスクが実行中の状態で、Codexダッシュボードの「New Task」ボタンをクリックします。新しいタスクウィンドウが開きます。

ユーザープロファイルAPIに、プロファイル画像のアップロード機能を追加してください。
画像サイズは最大5MB、対応形式はJPEG、PNG、WebPとしてください。

Step 3: さらにタスクを追加(必要に応じて)

同様の手順で、必要な数だけタスクを追加できます。

ダッシュボード画面のパフォーマンスを最適化してください。
特にAPI呼び出しの削減とコンポーネントのメモ化に注力してください。

並列実行時の注意点

複数タスクを同時に実行する際は、以下の点に注意が必要です。

同一ファイルの編集を避ける

flowchart TD
    A[タスク1: auth.ts を編集] --> B{コンフリクト発生リスク}
    C[タスク2: auth.ts を編集] --> B
    B --> D[マージ時に競合]
    
    E[タスク1: auth.ts を編集] --> F{安全}
    G[タスク2: profile.ts を編集] --> F
    F --> H[独立してマージ可能]
状況 推奨アクション
同じファイルを編集する可能性がある タスクを順次実行
異なるモジュールの作業 並列実行OK
依存関係がある 親タスク完了後に子タスクを開始

レート制限の考慮

プランによって、同時に実行できるタスク数や使用量に制限があります。

プラン 推奨同時実行数
Plus 2〜3タスク
Pro 3〜5タスク
Business/Enterprise チーム設定による

タスクの進捗確認

実行中のタスクの進捗を効率的に監視する方法を解説します。

ダッシュボードでの一覧確認

Codexダッシュボードでは、すべてのアクティブなタスクを一覧で確認できます。

タスクリストの表示項目

項目 説明
タスク名 プロンプトの要約または自動生成されたタイトル
ステータス Running / Completed / Failed / Cancelled
経過時間 タスク開始からの経過時間
環境 使用している環境名
ブランチ 作業対象のブランチ

リアルタイム進捗インジケーター

個々のタスクをクリックすると、詳細な進捗状況を確認できます。

進捗ステータスの詳細

stateDiagram-v2
    [*] --> Starting: タスク開始
    Starting --> Reading: 環境準備完了
    Reading --> Thinking: コード読み込み完了
    Thinking --> Editing: 解決策決定
    Editing --> Testing: 編集完了
    Testing --> Editing: テスト失敗
    Testing --> Completed: テスト成功
    
    Starting --> Failed: セットアップエラー
    Reading --> Failed: 読み込みエラー
    Editing --> Failed: 編集エラー
    Testing --> Failed: 致命的エラー
    
    Starting --> Cancelled: ユーザーキャンセル
    Reading --> Cancelled: ユーザーキャンセル
    Thinking --> Cancelled: ユーザーキャンセル
    Editing --> Cancelled: ユーザーキャンセル
    Testing --> Cancelled: ユーザーキャンセル

各ステータスの意味

ステータス 意味 推定時間
Starting コンテナの起動とリポジトリのクローン 5〜30秒
Reading コードベースの読み込みと分析 10〜60秒
Thinking 解決策の検討と計画 30秒〜5分
Editing ファイルの編集 タスクによる
Testing テストとLintの実行 プロジェクトによる
Completed タスク完了 -
Failed エラーで停止 -
Cancelled ユーザーによるキャンセル -

コンテキスト使用量の監視

長時間のタスクでは、コンテキストウィンドウの使用状況を監視することが重要です。

Codexはモデルのコンテキストウィンドウを監視し、残り容量を報告します。長いタスクでは、自動的にコンテキストを圧縮(要約)して、関連性の高い情報を保持しながら作業を継続します。

タスクの中断と再開

実行中のタスクを中断し、後から再開する方法を解説します。

タスクのキャンセル

実行中のタスクは、いつでもキャンセルできます。

キャンセル方法

  1. タスク詳細画面を開く
  2. 「Cancel」ボタンをクリック
  3. 確認ダイアログで「Yes, cancel」を選択

キャンセルのユースケース

状況 推奨アクション
間違った指示を送った 即座にキャンセルして再送信
想定と異なる方向に進んでいる キャンセルして指示を明確化
優先度の高いタスクが発生 キャンセルして優先タスクを実行
時間がかかりすぎている キャンセルしてタスクを分割

タスクの再開(Resume)

キャンセルしたタスクや、完了したタスクに対してフォローアップを送信することで、作業を継続できます。

フォローアップの送信

タスク完了後またはキャンセル後に、同じスレッド内でプロンプトを送信すると、前のコンテキストを維持したまま作業を継続できます。

先ほどの変更に加えて、エラーハンドリングを強化してください。
特にネットワークエラーとタイムアウトのケースを適切に処理してください。

CLIでのセッション再開

Codex CLIでは、codex resumeコマンドを使用して、前回のセッションを再開できます。

1
codex resume

これにより、中断した箇所から作業を継続できます。

実行ログの読み方

Codexが実行したアクションを詳細に追跡するための、実行ログの読み方を解説します。

ターミナルログの構造

タスク詳細画面の「Terminal」タブで、Codexが実行したすべてのコマンドと出力を確認できます。

ログの構成要素

[12:34:56] $ npm install
added 142 packages in 4.3s

[12:35:01] $ npm run lint
> project@1.0.0 lint
> eslint src/**/*.ts

✓ No issues found

[12:35:08] $ npm test
PASS src/auth/auth.service.spec.ts
  AuthService
    ✓ should validate token (12 ms)
    ✓ should refresh expired token (8 ms)

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total

ログの読み方

要素 説明
タイムスタンプ コマンド実行時刻
コマンド 実行されたシェルコマンド
出力 コマンドの標準出力・標準エラー
終了コード コマンドの成功(0)または失敗(非0)

アクションログの確認

Codexが実行したファイル操作やツール呼び出しを確認できます。

アクションの種類

アクション 説明
read_file ファイルの読み取り
write_file ファイルの書き込み
apply_patch パッチの適用(差分編集)
run_command シェルコマンドの実行
search コードベースの検索

アクションログの例

Action: read_file
Path: src/auth/auth.service.ts
Lines: 1-150

Action: apply_patch
Path: src/auth/auth.service.ts
Changes: +15 lines, -3 lines

Action: run_command
Command: npm test src/auth/auth.service.spec.ts
Exit code: 0

エラーログの分析

タスクが失敗した場合、エラーログを分析して原因を特定します。

よくあるエラーパターン

エラータイプ 原因 対処法
Setup failed 依存関係のインストール失敗 セットアップスクリプトを確認
Test failed テストが通らない テストコードまたは実装を修正
Lint error コード規約違反 Lintエラーを修正
Timeout 処理時間超過 タスクを分割
Permission denied 権限不足 GitHub連携を再確認

テスト結果の確認方法

Codexはタスク実行中にテストを自動で実行し、その結果を検証します。

テスト実行の流れ

flowchart TD
    A[コード編集完了] --> B[テスト実行]
    B --> C{テスト結果}
    C -->|成功| D[次のステップへ]
    C -->|失敗| E[失敗原因を分析]
    E --> F[コードを修正]
    F --> B

テスト結果の表示

タスク完了後、テスト結果は以下の形式で表示されます。

成功時

Test Results:
  ✓ All tests passed (24 tests in 3 suites)
  
  Coverage:
    Statements: 87.5%
    Branches: 82.3%
    Functions: 91.2%
    Lines: 88.1%

失敗時

Test Results:
  ✗ 2 tests failed, 22 passed (24 tests in 3 suites)
  
  Failures:
    1) AuthService > should handle expired refresh token
       Expected: UnauthorizedError
       Received: undefined
       
    2) AuthService > should reject invalid token format
       Timeout: exceeded 5000ms

テスト失敗時の対応

Codexはテストが失敗した場合、自動的に修正を試みます。ただし、修正が困難な場合はユーザーへの報告を行います。

フォローアップ例

テストが失敗しています。以下の点を修正してください:
1. handleExpiredRefreshToken メソッドで UnauthorizedError をスローするように
2. タイムアウトテストは、モックを使用して高速化してください

引用(Citations)の確認方法

Codexは変更の根拠を「引用」として提供します。これにより、なぜその変更が行われたのかを追跡できます。

引用の種類

引用タイプ 説明
ファイル参照 参考にしたソースファイル
テスト結果 検証に使用したテストの結果
ドキュメント 参照した仕様やREADME
エラーメッセージ 修正の根拠となったエラー

引用の活用方法

引用を確認することで、Codexの判断プロセスを理解し、レビューを効率化できます。

引用表示の例

変更理由:
- src/auth/auth.service.ts の既存のtokenValidation実装を参考に、
  refreshToken処理を追加しました [参照: auth.service.ts:45-67]
- JWT仕様に基づき、exp クレームで有効期限を管理します [参照: README.md:認証仕様]
- 既存のテストパターンに従い、モックを使用しています [参照: auth.service.spec.ts:12-34]

タスク完了後のレビューフロー

タスクが完了したら、体系的なレビューを行いましょう。

レビューチェックリスト

flowchart TD
    A[タスク完了] --> B[コードDiffを確認]
    B --> C[テスト結果を確認]
    C --> D[引用を確認]
    D --> E[実行ログを確認]
    E --> F{問題あり?}
    F -->|はい| G[フォローアップを送信]
    G --> A
    F -->|いいえ| H[PRを作成 or 変更を適用]

コードDiffのレビュー

変更されたファイルの差分を詳細に確認します。

確認ポイント

ポイント 確認内容
変更範囲 想定した範囲のみ変更されているか
コード品質 既存のコードスタイルに合っているか
エッジケース 例外的なケースが考慮されているか
セキュリティ 脆弱性が含まれていないか
パフォーマンス 効率的な実装になっているか

フォローアップの活用

レビューで問題を発見した場合、フォローアップで修正を依頼します。

効果的なフォローアップの書き方

レビューでいくつかの改善点を発見しました:

1. src/auth/auth.service.ts:78
   - refreshToken が null の場合のエラーハンドリングを追加してください

2. src/auth/auth.controller.ts:45
   - レスポンスの型定義を追加してください

3. テストカバレッジ
   - トークン期限切れのエッジケースをテストに追加してください

PRの作成とマージ

レビューが完了したら、PRを作成します。

PR作成時のオプション

オプション 説明
ブランチ名 自動生成またはカスタム指定
PRタイトル タスク内容に基づいて自動生成
PR説明 変更のサマリーと引用を含む
レビュアー 自動でチームメンバーを提案(Enterprise)

効率的なタスク管理のベストプラクティス

タスクの粒度を適切に設定する

大きすぎるタスクは失敗しやすく、小さすぎるタスクは非効率です。

推奨されるタスクサイズ

タスクタイプ 推奨サイズ 例
バグ修正 1〜3ファイル 特定のエンドポイントのバグ修正
機能追加 3〜10ファイル 単一のAPI機能追加
リファクタリング 5〜15ファイル 1モジュールの構造改善
テスト追加 1〜5ファイル 特定モジュールのテスト

依存関係を考慮した実行順序

タスク間に依存関係がある場合は、適切な順序で実行します。

flowchart LR
    A[基盤タスク] --> B[機能タスク1]
    A --> C[機能タスク2]
    B --> D[統合タスク]
    C --> D

命名規則とタグ付け

タスクを識別しやすくするため、一貫した命名規則を使用します。

命名例

[Feature] ユーザー認証: リフレッシュトークン機能
[Bug] API: プロファイル更新時の500エラー修正
[Refactor] Database: クエリ最適化
[Test] Auth: エッジケースのテスト追加

まとめ

本記事では、Codexのタスク管理における実践的なテクニックを解説しました。

学んだこと

  • スレッドの概念とローカル/クラウドの使い分け
  • 複数タスクの並列実行方法と注意点
  • リアルタイム進捗監視の活用
  • タスクの中断と再開(Resumeコマンド)
  • 実行ログとテスト結果の読み方
  • 引用を活用した変更追跡
  • 体系的なレビューフロー

効率的なタスク管理は、Codexを最大限に活用するための鍵です。並列実行を活用することで開発速度を向上させ、適切な監視とレビューによって品質を担保できます。

次のステップとして、AGENTS.mdによるCodexの最適化を学ぶことで、プロジェクト固有の知識をCodexに伝え、さらに高品質なコード生成を実現できます。

参考リンク