以前、次の記事でChatGPTとCodexを組み合わせたログフィルターCLIツールをノーコーディングで作ったことを紹介しました。

Codexだけを使ってCSVフィルターCLIツールを作れるのかと思い、実際に試してみました。
この記事では、CodexのChatモードを使って仕様作成からコード生成、テスト実行、README作成までを進めた過程を紹介します。

この記事で作成した CSV フィルター CLI は、特定のカラムに対して「contains」「regex」などの条件で絞り込み、結果をCSVとして出力するツールです。
「どんな動きをするツールなのか?」がすぐ分かるように、実際の実行例を先に紹介します。

statusinactive の行だけ抽出

PYTHONPATH=src python -m csvfilter_cli --input tests/data/sample.csv --and status:contains:inactive
id,name,status,score,city
2,Bob,inactive,75,Osaka
7,Grace,inactive,77,Tokyo
17,Quin,inactive,81,那覇

status が active(完全一致) かつ city が Tokyo を含む 行

PYTHONPATH=src python -m csvfilter_cli --input tests/data/sample.csv --and status:regex:^active$  --and city:contains:Tokyo
id,name,status,score,city
1,Alice,active,89,Tokyo
10,Judy,active,80,Tokyo

この記事で分かること

  • CodexだけでCLIツールを作る際の手順と実際の挙動
  • Chat、Agent、Agent(full access)の明確な違い
  • コードやテスト、READMEまで一気に生成された流れ
  • Codexで開発するうえでの課題点と改善ポイント

Codexだけでツールを作ろうと思った理由

以前、ChatGPTとCodexを使い、ログフィルターCLIツールをノーコーディングで生成した経験がありました。
このときは両者を併用して仕様作成とコード生成を行いましたが、Codex単体での開発も気になっていました。
今回の目的は、Codexを単独で使った場合の実力を確認し、どこまで自動化が進むのかを体験的に把握することでした。

CodexにはChat、Agent、Agent(full access)という三つのモードが用意されており、まずはChatを使って仕様策定をすることにしました。
Chatを選んだ理由は、仕様作りの段階では会話ベースで進めやすいためであり、細かい設定を確認しながら進行したかったためでもあります。

動作環境

私が使った環境は次の通りです。

  • Windows WSL
  • Python3.13
  • GitHubリポジトリ
  • uv

開発環境の準備

今回のツールは普段利用している次のGitHubリポジトリを使っています。
VSCodeでWSLを起動した後、下記のリポジトリをクローンします。
https://github.com/ojichiku/public-python-samples

既存の構成に合わせてサンプルごとにディレクトリを分けているため、今回も同じ方針で進めます。
まずはブランチを切ります。

git switch -c feature/csvfilter-cli

次にuvでプロジェクトの初期化を行います。

cd samples
uv init csvfilter-cli --python 3.13itch -c feature/csvfilter-cli

これでプロジェクトの準備が完了です。

Chatモードで仕様作成を依頼する

仕様作成では、CodexのChatモードにCSVフィルターCLIツールの概要を伝えるため、次のようCodex拡張機能で、モードをChatを選択します。

Chatモードにした後、次のようにツールの要件を指示して仕様作成を依頼します。
伝えた要件は、絞り込み対象となるカラム名と条件、入力CSVファイルの指定、出力先未指定時は標準出力に返すという基本的な機能です。

PythonでCSVフィルターCLIを作ります。
仕様は下記です。
・引数にカラム名を指定し、絞り込む条件を指定する
 指定した条件に一致したCSVを出力する
・引数にインプットのCSVファイルを指定する
・出力先のファイルが未指定の場合、標準出力に出す

Codexにコード、テストコード、仕様や使い方に関するドキュメントを作成するように依頼します。
この仕様からコードが実装できるように仕様を詳細化してくれる?
不明点があれば質問すること
日本語で回答してください

指示した後、次の画像のように機能が盛りだくさんの仕様が提案され、確認事項も多く返ってきました。

今回はサンプルツールのため、最終的に機能を絞った仕様に調整しました。
仕様は次のAGENTS.mdの通りです。
https://github.com/ojichiku/public-python-samples/blob/main/samples/csvfilter-cli/AGENTS.md

次にAGENTS.mdとPLANS.mdを所定ディレクトリに出力するように指示しましたが、ここで初めてChatモードの限界が明確になりました。
Chatモードではファイルが生成できず、次の画像のようなメッセージが返ってきました。

Chatモードでの作業は対話には適しているものの、ファイル生成には向かないことが初めて理解しました。
書き込みを許可してコードの作成はできましたが、ファイルを作成するのであれば、AgentまたはAgent(full access)を使った方が良いです。

Codexのモード比較

今回のツール作成で、Chatモードを使って仕様作成を進めたとき、ファイルを作成できないという制約に気づきました。
この違いを整理するため、Codexが持つ3つのモードである Chat / Agent / Agent(full access) を比較した表を以下にまとめました。
機能の違いを把握しておくことで、目的に合わせて適切なモードを選べるようになります。

モード名主な用途ファイル操作コード実行特徴
Chat仕様作成、設計相談、対話形式の確認不可(read-only)不可会話ベースで仕様を詰めたいときに最適で、理解の精度が高い
Agentコード生成、テスト実行、ファイル作成可能限定的に可能Chatより実務向きで、自動生成したコードをファイルとして保存できる
Agent(full access)実装フェーズ全般、テスト、ドキュメント生成、プロジェクト構築可能(制限少ない)可能Codexの能力を最大限使えるモードで、ファイル操作や実行も柔軟に行える

Chatモードでは対話がしやすい反面、ファイルの作成ができないため、最終的な実装にはAgent系のモードが必要になります。
どの段階でどのモードを使うのかを決めておくと、作業効率が大幅に向上します。

Codexモードは下記のサイトで紹介されていますので、気になる方は見ることをおすすめします。

コード・テスト・ドキュメント生成の流れ

書き込みを許可して、AGENTS.mdとPLANS.mdを配置した後、次のようにコードの作成をしたのですが、Codexは一気にコード、テストコード、仕様、READMEの作成まで進めました。
細かい工程に分ける指示を行わないと、Codexはまとめて完了させようとする傾向がありそうです。

pytest追加と手動テストの結果

コード生成後、Codexがテストを実行しようとしましたが、環境にpytestが入っていなかったため、次のメッセージが返ってきました。

pytestは開発環境の準備の時に行っておくことでした。
すっかりと忘れていたので、次のコマンドを実行してpytestを追加しました。

cd csvfilter-cli
uv add --dev pytest
uv sync

その後、Codexがテストを自動実行して、すべて正常に通過しました。
最終確認として手動でもテストを実行した結果、次のようにすべて正常に実行できています。

PYTHONPATH=src uv run python -m pytest
========================================== test session starts ==========================================
platform linux -- Python 3.13.9, pytest-9.0.1, pluggy-1.6.0
rootdir: /home/xxx/project/public-python-samples/samples/csvfilter-cli
configfile: pyproject.toml
collected 16 items

tests/test_cli.py ……… [ 56%]
tests/test_filters.py …. [ 81%]
tests/test_io.py … [100%]

========================================== 16 passed in 0.03s ===========================================

実際にできあがった成果物

Codexで生成したAGENTS.md、PLANS.md、コード一式、READMEはsamples/csvfilter-cli配下に格納されます。
実際の成果物は次のGitHubリポジトリで確認できます。
https://github.com/ojichiku/public-python-samples/tree/main/samples/csvfilter-cli

Codexだけで開発して感じた課題と改善点

今回の取り組みで、Codex単体でもコード生成からテスト、ドキュメント作成まで一通り完結できると分かりました。
一方で、実際に使ってみる中で次のような課題や改善点が見えてきました。

  • AGENTS.mdやPLANS.mdの内容によってCodexの動作が変わる
  • 指示が大雑把だと、コード・テスト・ドキュメントを一気に作りすぎる傾向がある
  • 仕様作成に時間がかかるため、AGENTS.mdとPLANS.mdはテンプレート化したほうがよい

これらの課題点は今後、Codexを使っていきながら良い方法を見つけていこうと考えています。

まとめ

今後は、Pythonの画面を扱うツールやブラウザ自動操作ツールなど、さまざまなツールを作りながらAGENTS.mdとPLANS.mdのテンプレート精度を上げていく方針です。
また、Web版Codexを使ってみた体験記事も作成し、Codex活用の幅を広げていきたいと考えています。

更新履歴

2025/11/30:作成するツールのイメージがないこと、実行環境の説明がないことに気が付き、内容を追記しました。