成果物
まだ作ってる最中
前提
postmanが重かったりしたのでAPIクライアント作ろうと思い作り始めました。
codexなしで0の状態から2日ほど終業後に作業し、以下の機能は実装していました。
- リクエストを送信する機能
- それに付随する必要な機能
- リクエストを保存する機能
いわゆるメインとなる機能を作り、あとは便利にしていくための実装が必要な状態でした。
テストやたくさんの簡易なタスクや追加機能開発がIssueとして積み重ねてしまい、
このままでは当面終わらないなと感じた段階で人手が欲しいからcodexを導入してみたという経緯になります。
導入してみた人間の感想
Devinのようなエージェントを扱ったのは、Codexが初めてです。
いくつかの観点から評価していくべきだと思うので、評価軸を4.1に出力させています。
評価軸を参考に人間の感想をかきます。
Codexの使用環境
- Arcブラウザからの利用
- codexにお願いし、上がってきた内容をCopilotを駆使しながら修正し、マージすると言うのが主な流れ
Codexへのプロンプト例
- 新規機能を作らせた際のプロンプト
- https://chatgpt.com/s/cd_6829c0ed0ca08191b27968907b3d8c0f
- どう言う動作を期待しているかのみ伝えているが、そんなに悪くない結果
- 新規のUIと動作の追加を依頼しているので、ほどほどなサイズ感の依頼
- デザイン等なしで依頼しているが、大体どの辺に配置するべきかは勝手に考えてくれてる
- たまにもう少し良い感じの場所に配置して欲しいなーと思うが、人間が簡単に修正できる範囲なので許せる
- 新規機能作らせた2
-
https://chatgpt.com/s/cd_6829c61f470c8191ace3cecdb1a1befb
- 初めて明らかにうまくできていない
- タスクが大きすぎた
-
https://chatgpt.com/s/cd_6829d63a80b481919fe2f1990e10f2af
- 上記でタスクの細分化をやらせてみる
- 簡単ではなさそうなので後日時間を作って詳細な指示の仕方を考える
-
https://chatgpt.com/s/cd_6829c61f470c8191ace3cecdb1a1befb
- 新規機能作らせた3
-
https://chatgpt.com/s/cd_6829c65580d081918de12347bebd6b6b
- フォルダよりは簡易な機能
- 問題なく作成できている
- この辺りが雑に指示を投げて作成できるラインかなと感じる
-
https://chatgpt.com/s/cd_6829c65580d081918de12347bebd6b6b
- 新規機能作らせた4
- dnd実装
- dnd-kit
- dndで参考になる他のコードはプロジェクト内にない状態
- ライブラリを導入している
- 以前同じ内容をやらせて失敗しているので、失敗した内容を入れた上で提案を依頼
-
https://chatgpt.com/s/cd_682c4efb06108191a7cfed21fe961fc1
- 提案から作られたタスク
-
https://chatgpt.com/s/cd_682c4f12563c8191aa45974669e7e12f
- 基本的に正しく動作しているが、範囲外の場合に少しガクガクするような挙動をしていた
- 実装がcodexのみでやるには難しそうだったので、このタイミングでo3+人間に引き継ぎ
-
https://chatgpt.com/share/682c4f5d-594c-800f-8ecc-4473d45fbcdf
- 難しい内容に関して、codexに同じ依頼を複数依頼
その中の良さそうなPRを引き継ぎ、人間が修正することで工数が抑える
- 難しい内容に関して、codexに同じ依頼を複数依頼
- 基本的に正しく動作しているが、範囲外の場合に少しガクガクするような挙動をしていた
- eslint動くようになったからlintエラー直させようとした際のプロンプト
- https://chatgpt.com/s/cd_6829c13f33c48191ba9204e215b94501
- codexの設定をミスっており、codexがlintを動かせていない
- そのため、最初の指示を勘違いしてしまった
- エラーログを渡すことで解決
- 後から気づいたけどLintをcodexに動かしてもらうことも可能だった
- 初期の頃はsetupInstallの存在に気づかず、lintをinstallして使わせることができてなかった
- そのため、最初の指示を勘違いしてしまった
下記はESLintのエラーが71件から4件にまで減少した画像
Codex単体ではLintの実行ができないため、すべての問題が解消されてない。
lintのエラーは全て修正が簡単な物ではあるが、codexに確認する術を持たせていない場合、
ここまでしか修正できないということがわかった。
ちょうどいいベンチマークとなった。
今はもうlintをcodexにsetupInstallするよう指示しているので、lintエラーは作成されていない。
アウトプットの品質・安定性
生成されるコードや提案の品質、安定して期待通りの結果が得られるか。
- そこそこ高いと感じる
- o3と並走している人間の方が上ではある
- こまめな指示は並走してる方がしやすいし、今後も並走の方が精度は上になり続けるはず
- 品質を高めるための工夫として、テストコードを書かせるという手がある
- ユニットテストはタスクを指示すれば明示的に指示せずとも作ってくれてる
- インテグレーションに関しては明示的に指示してテストを作らせる必要がある
- Agents.mdに書けばある程度改善するかも
- ビジュアル・E2Eテスト
- ユニットテスト・インテグレーションを細かく書いてくれるため重要性をあまり感じない
- あればより品質・安定性の向上に繋がりそう
- o3と並走している人間の方が上ではある
学習コスト・導入のしやすさ
CodexやAIツールの導入・利用にあたって、どれくらい学習が必要か、直感的に使えるか。
- 学習コストにおいてはほぼ無い
- 割と雑にお願いしてもやってくれる
- 参考:プロンプト例
- AGENTS.mdを作成すると良い
- 知らないファイルが出てくるとめんどくさいと感じるが、AGENTS.mdもcodexで生成させたりレビューさせたりすることが可能なので非常に楽
- 割と雑にお願いしてもやってくれる
カスタマイズ性・柔軟性
プロンプトや指示の工夫でどこまで自分好みに調整できるか。
対応範囲・得意不得意
どんな言語やフレームワークに強いか、逆に苦手な領域は何か。
- devinと違ってブラウザにアクセスしないので、フロントが比較して苦手なはず
- PlaywrightのようなE2Eテストツールを入れればある程度解決できるかも
- 現状フロントのコードを書かせている限りは特に問題を感じない
- フロントで完結するコードを書かせているからかもしれない
- モノレポにすればバック、フロント共に確認できるので都合よく動くかも
- 流行りの言語であれば問題なく扱えると思われる
- ネット情報が少ない新しい技術だと厳しいんじゃなかろうか
- どの生成AIもそうだと思う
- ネット情報が少ない新しい技術だと厳しいんじゃなかろうか
人間との協働・役割分担
AIと人間の得意分野をどう分担するのが効率的か。
- codexのみで実装させるのは難しいことがある
- 同じ内容を複数回依頼し、良さげなものを選定する必要がある
- これは現状人間でやるのが最適だと思う
- devinに10万〜15万入れてる人からするともっと便利に出来るよっていう話があるかも
- これは現状人間でやるのが最適だと思う
- ある程度作成させた後に人間+Cursorのような物で一緒にやるのが良い
- AIツールのみでは細かい部分についての調整まで行わせる方が手間になる
- 小回りが必要な箇所については人間の手をつかうのがよい
- AIツールのみでは細かい部分についての調整まで行わせる方が手間になる
- 同じ内容を複数回依頼し、良さげなものを選定する必要がある
- codexに何の指示を出すべきかを考えるのは人間の役割
- codexは似たような機能を実装する際、既存のロジックを見て実装する
- そのため、参考にしそうな機能については依頼する前にあらかじめ修正しておく必要がある
- 簡易なタスクを並列に同時に依頼できるが、並列に動かす依頼を何にするか考える必要がある
- コンフリクトしないように依頼する等必要
- codexは似たような機能を実装する際、既存のロジックを見て実装する
- ありとあらゆる情報をAIに完璧に渡すことは難しい
- 人間が知りうる情報を全て完璧にAIに渡すことが難しく、AIは渡された情報を元にしか動けない
- 曖昧な要件を元に、AIのための情報として昇華させるのは人間にしかできない
- 上記をAIがサポートすることは出来る
- 曖昧な要件をステークホルダーから聞いてくるのは人間の仕事として残り続ける
セキュリティ・プライバシー
コードやデータを外部AIに渡す際のリスクや注意点。
- 学習に使って良いかと最初に問われるので、企業のプロジェクトであればオフにすれば良いと思う
- 今回は個人開発のため、学習に使えるならぜひ使って欲しいと思いオン
- codexはネットワークが使えないので、codex側のミスにより漏れることはない
- setupScriptでネットワークにアクセス出来るが、ここで情報を外部に漏らすのは狙って漏らしている
- 設定した人間をレイオフした方がセキュリティの向上につながる
- setupScriptでネットワークにアクセス出来るが、ここで情報を外部に漏らすのは狙って漏らしている
今後の期待・課題
現状の課題や、今後こうなってほしいという期待。
- Plusでも使えるようになることを期待している
- 3万は高い
- 高いっていうか痛い
- 他のツールと比較すると驚くほど安いので、いずれレート制限が来るだろう
- そんなことを思っていたが、5月21日の朝にgoogleから3ヶ月限定でもっと安いのが出たことを知った
- なんなら今は無料らしい
-
https://qiita.com/Nozomuts/items/20ec1438cf478932201b
- 制限がきつすぎるからどっちみち課金での利用かなとは思う
- 諸行無常
- そんなことを思っていたが、5月21日の朝にgoogleから3ヶ月限定でもっと安いのが出たことを知った
- 3万は高い