前回の実習で完成させた「四則演算コマンドライン計算機」を題材に、ローカルのGitリポジトリをGitHubへ登録し、Codex Cloud環境を作成。Cocex appからCloud 環境で開発.
本稿は、途中で迷いやすかったGUI操作やトラブルも含めた備忘録。
要点は、以下の通り。
- Local PC でCodex App を立ち上げ、Github Cloud上で開発.開発はBranchに対し行い、順次、Github本体にPR(Pull Request)&Marge.アプリ完成後、GithubからLocal PCにPull.
- Codex Appでは、Githubのブランチに対し、複数のタスクを並列実行(競合しない前提)できることを確認.
- VSCode+Codexとの違い:順次差分を承認しながらLocalで開発するか、Github Cloudのブランチで開発し、最後にPull&Margeするかの違い
- 1. 今回の到達点
- 2. 前提:ローカル側で完成していたもの
- 3. GitHub CLIを導入し、ブラウザー認証する
- 4. Codex AppをCloudモードへ切り替える
- 5. Codex Cloud環境を新規作成する
- 6. 環境とブランチを選択してCloudタスクを開始
- 7. SDDで並列タスクを先に定義する
- 8. 互いに競合しない2タスクを並列実行
- 9. Cloud差分をレビューし、Draft PRをマージ
- 10. TASK-008:統合後の最終検証
- 11. Windowsローカルへ最終成果を同期する
- 12. 途中で発生した問題と対策
- 13. 今回わかったCodex Cloudの使いどころ
- 14. まとめ
- 15. 参考資料
1. 今回の到達点
| 項目 | 実績 |
|---|---|
| 題材 | Python四則演算CLI |
| GitHubリポジトリ | unikarei/codex-extension-tutorial(非公開) |
| ベースブランチ | master |
| Codex Cloud環境 | unikarei/codex-cloud-calculator |
| Cloud OS / Image | Linux / Ubuntu 24.04ベースのuniversal |
| Cloud Python | Python 3.12.13 |
| 依存関係 | Python標準ライブラリのみ |
| テスト | 21件 → 22件、すべて成功 |
| 並列タスク | TASK-006(Cloud環境文書)とTASK-007(CLIテスト強化) |
| 確認済みマージ | PR #1、PR #2、PR #3 |
| 統合記録 | TASK-008をCloud上で完了し、コミット95d4feeを作成 |
Windowsローカル→GitHub→Codex Cloud環境→並列Cloudタスク→Draft PR→Review / Merge→Windowsへ同期

2. 前提:ローカル側で完成していたもの
前回までに、以下の状態を作っていた。
app.py:加算、減算、乗算、除算、CLI引数処理、終了コード処理test_app.py:計算ロジックとCLIのテスト21件run.bat:Windowsからapp.pyを起動し、引数と終了コードを転送docs/spec.md、docs/architecture.md、docs/task.md:Specification-Driven Development(SDD)文書- 基準コミット:
63465c5 feat: complete four-operation calculator CLI
ローカル確認例:
python -B app.py 10 + 2
python -B app.py 10 "*" 2
python -B app.py 10 / 0
python -B -m unittest -v
3. GitHub CLIを導入し、ブラウザー認証する
3.1 GitHub CLIをインストール
winget install --id GitHub.cli --source winget
インストール直後にghが認識されない場合があった。新しいコマンドプロンプトを開くか、フルパスで実行する。
"C:\Program Files\GitHub CLI\gh.exe" --version
3.2 対話メニューを避けてブラウザー認証
矢印キーやEnterが効かないケースがあったため、認証方式をオプションで明示した。
"C:\Program Files\GitHub CLI\gh.exe" auth login ^
--hostname github.com ^
--git-protocol https ^
--web ^
--clipboard

確認:
"C:\Program Files\GitHub CLI\gh.exe" auth status
"C:\Program Files\GitHub CLI\gh.exe" auth setup-git
重要:コマンドプロンプトへ貼り付けるのはコマンド行だけにする。D:\...>、Windowsのバージョン表示、実行結果までまとめて貼ると、それらもコマンドとして解釈される。
3.3 ローカルリポジトリをGitHubへ登録
"C:\Program Files\GitHub CLI\gh.exe" repo create ^
unikarei/codex-extension-tutorial ^
--private ^
--source=. ^
--remote=origin ^
--push
確認コマンド:
git remote -v
git status
"C:\Program Files\GitHub CLI\gh.exe" repo view --web
4. Codex AppをCloudモードへ切り替える
Codex Appはプロジェクトディレクトリから次のように起動した。
cd /d "D:\usr8_work\work_23_chatgpt\16_PoCs\1001_Codex\02_codex-extension-tutorial"
codex app .
新しいタスク画面の下部にある実行場所メニューで、「クラウド」を選択する。


5. Codex Cloud環境を新規作成する
5.1 環境選択メニューから「新しく作成」


この操作で内蔵ブラウザーが開く。最初はログイン画面が白紙になったが、内蔵ブラウザー右上のメニューからウェブ閲覧データを消去し、認証タブを閉じて環境作成を開き直すと解消した。
5.2 リポジトリと基本情報を設定

| 設定 | 値 |
|---|---|
| GitHub組織 | unikarei |
| リポジトリ | codex-extension-tutorial |
| 環境名 | unikarei/codex-cloud-calculator |
| 説明 | Python四則演算CLIのCodex Cloud実習環境 |
| コンテナ画像 | universal |
5.3 詳細設定

今回のプログラムは標準ライブラリだけで動くため、requirements.txtや追加インストールは不要である。最初の実習では高度な設定を増やさず、基本構成で開始した。
5.4 作成済み環境を使用する

6. 環境とブランチを選択してCloudタスクを開始

unikarei/codex-cloud-calculatorを選択。
masterを選択。6.1 最初は読み取り専用調査
いきなりコードを変更せず、Cloud環境が正しくリポジトリを読めるか、テストが通るかを調査した。読み取り専用調査プロンプト
このリポジトリを読み取り専用で調査してください。
ファイルの変更、コミット、プッシュ、Pull Request作成は行わないでください。
次を報告してください。
1. 現在のブランチと最新コミット
2. app.pyの機能
3. test_app.pyのテスト件数と内容
4. AGENTS.mdとdocs配下に定義された開発ルール
5. python -B -m unittest -v の実行結果
6. Codex Cloud環境のPythonバージョン
7. 実行したコマンド
8. Cloud環境で不足している設定
9. 次に並列実行できる、互いに競合しない小規模な開発タスクを2件
調査結果は次のとおりだった。
- Cloud側の作業ブランチ名は
work - 最新コミットは
63465c5 - Python 3.12.13
- 21テストがすべて成功
- CloudはLinuxのため
cmd.exeがなく、run.batは実行できない - 右オペランド非数値入力の自動テストが不足
ポイント:タスクのベースにmasterを選んでも、Codex Cloudの内部作業ブランチはwork等になる。これは異常ではない。
7. SDDで並列タスクを先に定義する
並列作業を始める前に、docs/task.mdへTASK-006~TASK-008を追加した。
| タスク | 内容 | 変更対象 |
|---|---|---|
| TASK-006 | Codex Cloud環境の検証手順を文書化 | docs/cloud-environment.md |
| TASK-007 | CLI回帰テストを強化 | test_app.py |
| TASK-008 | 並列タスク統合後の最終検証 | docs/task.md |
この計画変更をPR #1として作成し、masterへマージした。

8. 互いに競合しない2タスクを並列実行
並列実行で最も重要なのは、編集対象ファイルを分離することである。今回はTASK-006が文書ファイル、TASK-007がテストファイルだけを変更するように制約した。
並列化の設計:
TASK-006 → docs/cloud-environment.mdのみ
TASK-007 → test_app.pyのみ
両者ともdocs/task.mdは触らず、状態更新はTASK-008でまとめて行う。

8.1 TASK-006:Cloud環境文書
新規docs/cloud-environment.mdへ、環境名、リポジトリ、Python、依存関係、推奨検証コマンド、run.batを実行できない制約を記載した。
結果:
- 変更:新規1ファイル、54行
- Python 3.12.13
- 既存21テスト成功
- コミット:
8ec4c26 docs: document Codex Cloud environment
8.2 TASK-007:CLIテスト強化
stdout.strip()による緩い比較をやめ、末尾改行を含む完全一致へ変更した。また、python -B app.py 10 + abcに相当する右オペランド非数値テストを追加した。
結果:
- 変更:
test_app.pyのみ - テスト:21件 → 22件
- 22件すべて成功
- コミット:
f0442b5 test: strengthen CLI regression coverage
9. Cloud差分をレビューし、Draft PRをマージ
9.1 Codex Appで変更ファイルをレビュー

9.2 Draft PRのFiles changedを確認

Files changedが1件で、変更範囲がTASK-006だけであることを確認。Draft Pull Requestは、そのままではマージできない。Ready for reviewへ変更してから、競合がないことを確認する。

9.3 マージ実績
| PR | タイトル | 内容 | マージコミット |
|---|---|---|---|
| #1 | Add Codex Cloud parallel SDD task plan | docs/task.mdへTASK-006~008を追加 | 8d4473b |
| #2 | docs: document Codex Cloud environment | docs/cloud-environment.mdを追加 | e62454e |
| #3 | test: strengthen CLI regression coverage | test_app.pyを強化、22テスト | e55774e |

10. TASK-008:統合後の最終検証
PR #2とPR #3をmasterへ統合後、TASK-008を実行した。変更対象はdocs/task.mdだけに限定し、TASK-006~008をdoneへ更新した。
Cloud上で確認した内容:
- Python 3.12.13
python -B -m unittest -v:22件すべて成功10 + 2→12.010 - 2→8.010 * 2→20.010 / 2→5.010 / 0→ 標準エラー、終了コード2、Tracebackなし10 + abc→ 標準エラー、終了コード2、Tracebackなしdocs/cloud-environment.mdが存在git diff --check問題なしapp.pyとtest_app.pyにはTASK-008による追加変更なし
統合記録コミット:
95d4fee docs: complete Codex Cloud integration verification
執筆時点の注意:GitHub上で確認済みのマージはPR #1~#3である。TASK-008のコミットはCloud側で作成済みだが、最終PRの作成・マージ画面と、その後のWindows側git pull結果は本記録では未確認である。公開前に次節の手順を実施する。
11. Windowsローカルへ最終成果を同期する
最終PRをマージした後、Windowsの元リポジトリで実行する。
cd /d "D:\usr8_work\work_23_chatgpt\16_PoCs\1001_Codex\02_codex-extension-tutorial"
git pull --ff-only origin master
python -B -m unittest -v
cmd /c run.bat 10 + 2
cmd /c run.bat 10 "*" 2
cmd /c run.bat 10 / 0
echo %ERRORLEVEL%
git log --oneline --decorate -7
git status
期待結果:
Ran 22 tests
OK
12.0
20.0
error: b must not be zero
2
CloudはLinux互換コードとPythonテストを担当し、Windows固有のrun.batはローカルPCで確認する。この役割分担を明文化したことも今回の成果である。
12. 途中で発生した問題と対策
| 問題 | 原因 | 対策 |
|---|---|---|
ghが認識されない | wingetインストール後、既存CMDへPATHが反映されていない | CMDを開き直す。急ぐ場合は"C:\Program Files\GitHub CLI\gh.exe"を使用 |
| GitHub CLIの選択画面で矢印・Enterが効かない | 対話UIと端末の相性 | auth login --hostname ... --web --clipboardで選択を省略 |
| CMDで大量の「コマンドではありません」 | プロンプトや実行結果まで一括貼り付け | コードブロック内のコマンドだけを1行ずつ貼る |
| Codex内蔵ブラウザーの認証画面が白紙 | 内蔵ブラウザーのCookie・キャッシュ不整合 | 右上メニュー → ウェブ閲覧データを消去 → タブを閉じて再度開く |
| リポジトリ名を検索しても見つからない | 検索欄がリポジトリではなく「作成済み環境」の検索だった | 「+ 新しく作成」から環境作成画面へ進む |
Cloud上の現在ブランチがwork | Codex Cloudがタスク用作業ブランチを自動作成 | ベースがmasterなら正常 |
run.batをCloudで実行できない | CloudはLinuxでcmd.exeがない | Python部分はCloud、バッチはWindowsローカルで検証 |
乗算の*がシェル展開される | ワイルドカード解釈 | "*"のように引用する |
| Draft PRをマージできない | Draftは作業中扱い | Ready for reviewへ変更後にマージ |
| 並列PRが競合しそう | 複数タスクが同じファイルを変更 | タスクごとに変更許可ファイルを明示し、共通文書の更新は統合タスクへ集約 |
13. 今回わかったCodex Cloudの使いどころ
13.1 ローカルCodex Appとの違い
- ローカル作業:Windows上のファイル、
run.bat、Worktreeを直接扱いやすい - Cloud作業:GitHubを基準に、隔離されたLinux環境で複数タスクを並行実行できる
- 成果物の受け渡し:CloudではPRを通じてレビューし、
masterへ統合する
13.2 小さなPRに分ける効果
今回のPR #2は文書だけ、PR #3はテストだけだった。GitHubのFiles changedで変更意図を短時間に確認でき、競合も起きなかった。大きな変更を1本にまとめるより、目的と変更範囲を限定したPRの方がレビューしやすい。
13.3 SDDとCloud並列実行は相性がよい
先にdocs/task.mdへ変更対象と受け入れ条件を記録すると、各Cloudタスクへ「変更してよいファイル」「変更してはいけないファイル」を明示できる。並列実行時の暴走や競合を減らすうえで有効だった。
14. まとめ
今回の実習では、単にCodex Cloudでコードを生成するのではなく、次の一連の開発フローを体験できた。
- ローカルGitリポジトリをGitHubへ登録
- Codex Cloud環境を作成
- 読み取り専用調査で環境とテストを確認
- SDD文書へ並列タスクを登録
- 変更ファイルが重ならない2タスクを同時実行
- Codex Appで差分レビュー
- Draft PR → Ready for review → Merge
- 統合後に22テストを再実行
- Windows固有処理はローカルで最終確認
最大の学び:Codex Cloudの価値は、単発のコード生成よりも「GitHubを基準に、複数の小さなタスクを隔離して実行し、PRで人間が確認して統合する」開発プロセスにある。


コメント