OpenAI Codex実践ガイド|AIでプログラミング自動化!Docker環境構築とタスク管理ツール開発を試してみた

前回の記事で「OpenAI Codex入門ガイド|UIだけでできる導入・セットアップ手順と使い方を徹底解説」をCodexのセットアップが完了したので今度は、いよいよ 「AI にリアルな開発タスクを丸投げしてみたらどこまで通用するのか?」 に挑戦します。

今回は

  • Docker で Python 実行環境を自動生成
  • シンプルなタスク管理ツールをCodexに作らせ
  • そのままローカルで動かしてみる――

という“AI プログラミング自動化”の実験レポートです。

「抽象的な要件でも Codex はどこまで理解してくれる?」「生成されたコードは本当に docker compose up で動くの?」――そんな疑問を実際のプロンプト例・エラー・修正ポイントすべて公開しながら検証します。

Docker×Python 環境を自動生成

ローカル環境で動作を確認しながら、ツールの開発を進めたいので、CodexにローカルでPythonを実行できる環境をdockerで構築できるように依頼しました。

Codex への最初の指示
「ローカルに Python の実行環境を作成したいから docker compose で実行できる必要なファイルを用意して欲しい」

1 回目 ─ “とりあえず動く”環境生成

1.「コード」モードでプロンプト送信
「ローカルに Python の実行環境を作成したいから docker compose で実行できる必要なファイルを用意して欲しい」の1行だけ。
Dockerfileとdocker-compose.ymlが作成される。

2.GitHubにプルリクエスト
タスクが完了すると、画面右上に「プルリクエスト作成する」ボタンが表示されるので、ボタンをクリックすると、GitHub側にプルリクエストが作成される。GitHubでマージ。

このボタンをクリックするだけでプルリクエストが作成される

GitHubに作成されたプルリクエスト。これをマージするだけ。

3.ローカルでプル
先ほどマージした内容をローカルにプルして、docker compose up実行。
一発でコンテナ起動に成功!

2 回目 ─ ディレクトリ構成を整理

ツールを作っていった場合に、dockerのファイルとツールのファイルがごちゃ混ぜになるのはよろしくないので、ディレクトリを構成してもらった

1.「コード」モードでプロンプト送信
「dockerのファイルとアプリのファイルはディレクトリ分けして配置したいから、適切なディレクトリになるように修正してください。」この1行だけ。

すると、appディレクトリとdockerディレクトリを作成してくれたので、先ほどと同じく、プルリクエストを作成→マージ→ローカルへプル。
docker compose up –buildで変更内容を反映。これも一発起動。

3 回目 ─ ローカルブラウザで確認したい!

ツールの開発を進めるために、ブラウザで確認しながら進めるために、ウェブサーバー機能もローカル環境に実装してもらった。

1.「コード」モードでプロンプト送信
「ブラウザでアクセスして画面を確認しながら構築を進めたいので、アクセスできるようにウェブサーバーが立ち上がるようにしてください。」この1行だけ。

すると、Flaskのwebサーバーを使う様にdocker-compose.ymlを修正してくれたので、先ほどと同じく、プルリクエストを作成→マージ→ローカルへプル。
実行ファイルを作ってないので、ローカル環境は一旦ここまで。

タスク管理ツールを作成

ローカル環境が作成できたので、実際にツールの作成をしてみました。

1 回目 ─ まずは機能の検討

1.「確認を求める」モードでプロンプト送信
「シンプルなタスク管理ツールを作成します。
追加したタスクは保存、複製、削除が可能です。
各タスクに入力できる項目は、タスク名、タスクカテゴリ、内容、期限、優先度

この他必要な内容や構成案を考えてください。」

上記の確認結果が以下

必要な機能の検討例

基本項目
 タスク名
 タスクカテゴリ(プロジェクト名など)
 内容(詳細説明)
 期限(締切日)
 優先度(高・中・低など)

その他あると便利な項目・機能
 ステータス: 未着手・進行中・完了など。
 メモやコメント: 進捗状況や関連情報を残すための欄。
 添付ファイル: 参考資料や画像をアップロードしたい場合。
 ラベルやタグ: カテゴリとは別に、フレキシブルにタスクを分類するため。
 リマインダーや通知機能: 期限が近いタスクを知らせる。
 フィルタ・検索: カテゴリや優先度などでタスクを絞り込む。
 タスクの履歴: 更新日時や誰が編集したか等の記録(複数人で使う場合)。
 サブタスク: 大きなタスクを小分けに管理するための階層構造。

構成案(一例)
 データ管理: SQLiteなどの軽量なデータベースを使用。
 バックエンド: PythonならFlaskやFastAPI、JavaScriptならNode.js等。
 フロントエンド: シンプルなWeb UIで、リスト表示と詳細編集画面を用意。

基本操作:
 タスク追加(保存)
 タスク複製(複写後に編集できるように)
 タスク削除
 編集・ステータス変更

2.「コード」モードでプロンプト送信
この機能の実装を進めてください。
作業途中で確認必要なことがあれば質問をしてください。

ソースコードが作成されたら、プルリクエストを作成→マージ→ローカルへプル。

3.ローカルで実行
docker compose up –build実行。
作成されたファイルと関連付けがされてなかったため、エラーが発生

Error: Could not locate a Flask application. Use the 'flask --app' option, 'FLASK_APP' environment variable, or a 'wsgi.py' or 'app.py' file in the current directory.

2 回目 ─ エラー修正

1.「コード」でプロンプト送信
上記のエラー文と一緒に、「docker compose upで上記のエラーがでます」と送信。

すると、docker-compose.yml修正してくれたので、先ほどと同じく、プルリクエストを作成→マージ→ローカルへプル。
docker compose up –buildで変更内容を反映。

3 回目 ─ ローカルブラウザで確認

ブラウザ「127.0.0.1:5000」もしくは「localhost:5000」にアクセス

タスクツールの初期画面が表示された。タスクの入力画面、入力後保存した内容がトップ画面に表示される。この機能が構築されていることは確認できた。次回以降、機能の追加や調整、画面のみためなども調整していきたい。

エラーも怖くない

作業を進めていると、指示内容があいまいだと、思ったとおりの動作をしなかったり、エラーがでたりするケースは多々あると思います。
そんな時もあわてずに、エラーがでているなら、エラー文を貼り付けて「修正してください」とプロンプトをコードモードで送信するだけ。

コードモードで修正がうまくいかないときは、いったん確認を求めるモードで進め方を確認して、不具合を解決できる方法を聞いてすすめるのもアリ

まとめ

今回は、あいまいな指示でどこまで作業ができるのか?といった検証もかねていたので、プロンプトは極力短く、端的に書いてみました。結果としては、良好だったと思います。ここから先、ツールの機能の調整などをしていくには、具体的な指示を出していったほうが、早く欲しい結果につながるとは思いますが、次回のツールの機能構築も自然言語でどこまで実装できるのかチャレンジしてみようと思います。

AI活用をもっと学びたい方へ

「AIって便利そうだけど、使いこなせるか不安…」 「他の業務にもAIを活用してみたいけど、何から始めればいいかわからない」 そんな方のために、 あなたの業務やスキルレベルに合わせた【無料の個別相談】を実施しています。

あなたの作業に合ったAIツールの選定、ChatGPTやGeminiの具体的な使い方サポート、業務効率アップのためのプロンプトテンプレート提供

まずは気軽にご相談ください!

無料相談はこちらから