メインコンテンツまでスキップ

設計書からのコード生成

生成AIをコーディングへ利用する際に期待されるのは、設計書からのコード生成でしょう。
この点においては取り組みを進めているものの、プロダクションレディと言えるような十分な成果が出ていないのが現状です。それでも、いくつかのプロジェクトで設計書からのコード生成を試みた結果、以下のようなことがわかっています。

プロトタイプのコード生成

設計の詳細化にて作成したテキスト形式の設計をもとにすれば、プロトタイプレベルのプロダクト作成は可能です。 プロトタイプ開発に取り組んだプロジェクトにおいては、ソースコードのディレクトリ構成の決定、ソースコード生成の2ステップに分け、次のようなプロンプトでコード生成を実現しました。

ディレクトリ構成の決定
以下の要件をもとにWebアプリケーションのコードを作成します。
まずは適切なディレクトリ構成のみ提示してください。

# 要件

ここに要件を記述する
ディレクトリ構成をベースとしたコードの生成
上記要件とディレクトリ構成をもとにコードを生成してください。
ただし、以下の点を厳守してください。

- ディレクトリ構成に照らして、すべてのコードを実装してください。不明な点がある場合は、妥当な実装を行なってください
- コードはすべて機能するようにしてください

ただし、次のような課題が検出されています。

  1. 一部のコードが省略されるなど、不完全なコードとなってしまう
  2. 必要なコードがまるまる生成されない

このため、生成されたコードに対する目視チェックは不可避です。 コードの不備を発見した場合は、同一セッションにおいて次のような形で再作成を指示しています。

不足したコードの作成指示
以下のコードが不足しているため、追加でコードを生成してください。

- /frontend/pages/download.js
- /backend/app/utils.py

プロダクションレベルのコード生成

一方で、Nablarch開発標準に基づく開発のように、重厚で厳密な品質を求めるケースにおいては、設計書からのコード生成には難航しているのが現状です。
主たるハードルとしては、以下があります。

  • 大量のドキュメントからコード生成のインプットとなるべき設計箇所を特定すること
  • コーディング規約等を含めた生成AIに提供するコンテキストの量が生成AIのコンテキスト上限を超過してしまうこと
  • 適切なサンプルコードを抽出し提供すること(これはFew-shotプロンプティングと呼ばれる方法。プロンプト内に回答サンプルを示すことで、より意図に合致する出力の生成が期待できる)
備考

例えばOpenAIが提供するモデルのコンテキスト長についてはModels - OpenAI APIなどをご参照ください。