1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GPTとCodexの使い分け方|複雑な開発は「GPTで設計、Codexで実装」する方法

1
Posted at

GPTとCodexを分けて使う開発方法が注目

AIを使ったプログラミングでは、

「Codexに要件を渡せば、そのまま全部作ってもらえるのでは?」

と考えたくなる。

小さな機能追加や単純な修正なら、それでも十分なケースはある。

しかし、既存コードが大量にあり、複数の機能や外部サービスが絡むプロジェクトでは事情が変わる。

最初の要件が曖昧なまま実装を始めると、

  • 必要以上に広い範囲を変更する
  • 既存設計と合わないコードを追加する
  • 本来の目的とは違う機能まで作る
  • 巨大な変更になってレビューしにくくなる
  • 途中で前提が崩れ、大量の手戻りが発生する

といった問題が起きやすい。

そこで考えられるのが、GPTとCodexを「考える役」と「実装する役」に分ける方法だ。

① まずGPTで「何を作るのか」を固める

最初からコードを書かせない。

まずGPT側で、プロジェクトの戦略を整理する。

特に明確にしておきたいのが、次の4点だ。

目標(Goal)
何を実現すれば、このプロジェクトは成功なのか。

境界(Scope / Boundary)
何を変更してよく、何を変更しないのか。

競合・参考実装(Competitors / References)
似たサービスやOSSは、どのような設計を採用しているのか。

受け入れ条件(Acceptance Criteria)
何ができれば「完成」と判断できるのか。

ここが曖昧な状態でCodexに実装を任せると、AI自身が不足している前提を補完しながら作業することになる。

それよりも、

「完成とは何か」を先に人間とGPTで決める

ことが重要になる。

② GPTにCodex向けの指示書を作らせる

次に、整理した要件をそのまま長文でCodexへ投げるのではなく、実装担当者が理解しやすい形に変換する。

たとえば、

この段階ではコードを変更しない。
まず既存リポジトリを読み取り専用で調査する。
関係するディレクトリ、主要クラス、依存関係、既存テストを確認する。
そのうえで変更候補とリスクを報告する。

という形だ。

ここでポイントになるのが、いきなり実装させないこと

既存システムでは、仕様書よりも実際のコードのほうが正しい場合も少なくない。

そのため、

要件整理 → リポジトリ調査 → 実装計画 → コード変更

という順番にする。

③ Codexにリポジトリを調査させる

ここからCodexの出番になる。

Codexには実際のコードベースを調査させ、

「この機能を追加するなら、どこを変更する必要があるか」

を洗い出してもらう。

この段階では、コードを書くこと以上に、

既存システムを理解させること

が重要だ。

たとえばWebサービスなら、フロントエンドだけを変更すればよいと思っていた機能が、調査するとAPI、データベース、認証、キャッシュ、テストまで影響することがある。

先に調査レポートを作らせれば、こうした依存関係を実装前に確認できる。

④ 大きな開発を複数のPRに分解する

調査が終わったら、巨大な変更を一度に実行するのではなく、複数の小さなPR(Pull Request)へ分解する

たとえば、

PR1:データモデル変更

PR2:バックエンドAPI実装

PR3:フロントエンド対応

PR4:テスト追加

PR5:ドキュメント・最終調整

といった具合だ。

これには大きなメリットがある。

変更内容をレビューしやすくなり、問題が起きたときも「どの変更が原因だったのか」を追いやすい。

AIコーディングでは、一度にAIへ渡す作業範囲を小さくすること自体が品質管理になる

GPTは方向、Codexは実装

この開発方法を一言で表すなら、

GPTが方向を決め、Codexがコードベースと実装を担当する

という分業になる。

作業 ChatGPT Codex
アイデア・要件整理
ゴール・完成条件の定義
スコープ整理
アーキテクチャ検討
リポジトリ調査
コード変更
テスト実行
PR作成・レビュー支援

これは「どちらのAIが優秀か」という比較ではない。

仕事のフェーズによってAIの使い方を変えるという考え方だ。

なぜ同じOpenAI系なのに分けるのか

ここで疑問になるのが、

「GPTとCodexは同じOpenAI系なのだから、一つに任せればいいのでは?」

という点だ。

しかし、人間のソフトウェア開発でも、

プロダクトマネージャー
→ アーキテクト
→ エンジニア
→ レビュアー

と役割を分ける。

同じ会社の人間だからといって、一人ですべての工程を担当する必要はない。

AIでも同様に、思考のフェーズと実装のフェーズを明示的に分離することで、それぞれの作業目的を明確にできる

重要なのはAIそのものを分けることではなく、

「考える工程」と「コードを変更する工程」を分けること

にある。

小規模開発では、ここまで分けなくてもいい

もちろん、すべての開発でこの方法が必要なわけではない。

CSSを少し変更する、単純なバグを修正する、関数を一つ追加するといった作業なら、Codexへ直接依頼したほうが速いこともある。

一方、

既存コードが数万〜数十万行ある、複数サービスにまたがる、データベース変更を伴う、本番環境への影響が大きい、といった開発では、最初の設計が重要になる。

つまり、プロジェクトが大きくなるほど、

「AIにコードを書かせる能力」より「AIに何をさせるかを設計する能力」

の重要性が高まる。

AI開発で変わるのは「プログラミング」だけではない

生成AIによる開発というと、「人間の代わりにAIがコードを書く」という部分に注目が集まりやすい。

しかし、より大きな変化は別のところにある。

人間が、

要件を定義する
→ AIに調査させる
→ 作業を分解する
→ AIに実装させる
→ 人間が検証する

という、AIを含めた開発工程そのものを設計するようになることだ。

AIが高性能になるほど、巨大な指示を一度に渡す誘惑も強くなる。

それでも複雑なプロジェクトでは、

「まず考える」「次に調べる」「小さく分ける」「最後に実装する」

という従来のソフトウェア開発の基本が、むしろ重要になってくる。

GPTとCodexの役割分担は、その考え方をAI開発に持ち込んだ一つの方法と言えるだろう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?