生成AIは、日本語もPythonも同じ「意味を持つテキスト」として扱います。
この変化により、開発における言語の壁を取り除き、「何を作るか」という部分に開発者が集中できるようになりました。
例えば、こんなことが可能になっています。
- 設計書(日本語)をAIに渡すと、コード(Python、TypeScriptなど)を生成できる
- そのコードをAIに読ませると、仕様書や設計書を逆生成できる
- コード、設計書、要件定義の間を自由に行き来できる
これまでPython、Java、TypeScriptなどのプログラミング言語と、日本語や英語などの自然言語はそれぞれ異なる性質のものとして扱われ、人間が手作業で変換してきました。
- 要件定義(日本語など)
- 設計書(日本語など)
- コード(Python、Javaなど)
- インフラ構築(Terraform / YAMLなど)
- ログ・設定ファイル(各種テキスト)
しかし現在では、AIがこれらをすべて同じ意味空間に存在するテキストとして扱えるようになってきました。形式の違いはさほど問題ではなく、日本語や英語、コード、図表、ログ、設定ファイルなどが一つの意味空間に存在しています。
この変化によって、開発者は自然言語でもプログラミング言語でも指示できるようになりつつあります。どちらの言語で書くかは本質ではなくなり、人間が自然言語とプログラミング言語の境界を意識する必要が減っていきます。
翻訳ではなく「不足情報を埋める作業」
従来は、要件から設計、設計から実装へと進む流れは、上流に必要な情報がそろっており、それを下流に変換していくものと捉えられていたかもしれません。翻訳みたいなものでした。
しかし実際に上流工程で完璧に情報をそろえて次のフェーズに進めている理想的な現場は少ないのではないでしょうか。どのフェーズでもやっていることは、情報の追加が多いです。単なる翻訳では足りません。
「ユーザー登録機能を作ってください」という要件に対し、実際には、メールアドレスの重複チェック、パスワードポリシー(最小文字数、使用可能文字)、登録失敗時のエラーメッセージなど、多くの追加情報が必要になります。
これらは設計や実装の段階で追加されていきます。
- 要件には曖昧さや抜けている前提がある
- 設計には書かれていない条件や例外がある
- 実装段階で初めて判断が必要になることがある
AIに要件から設計を生成させたとき、あるいは設計から実装を生成させたときに「期待と異なる」と感じるのは、AIが間違ったというよりも、単に判断材料が足りていないためです。人間が指示するときは、AIは指示された内容に従って生成します。不足があればそのまま反映されます。
結局のところ、工程間で必要なのは翻訳ではなく、
- 抜けている情報を埋めること
- 判断に必要な材料をそろえていくこと
です。
不足情報を追加するのは人間の役割
AIが正しく動くためには、各フェーズで必要な情報を少しずつ追加していく必要があります。これを行うのは人間で、AIに代替しにくい部分です。
たとえば次のような内容です。
- 目的
- 成功と失敗の条件
- 業務ルール
- 非機能要件
- 優先度(性能、保守性、開発速度など)
- 暗黙知
- 例外的な扱い
- ドメイン知識
自然言語でもプログラミング言語でも構いません。形式よりも、内容が伝わることの方が大切です。こうした情報を追加するたびに、AIの出力が少しずつ現実に近づいていきます。
不足情報を追加する2つの方法
不足情報は自然言語で追加することも、コードで追加することもできます。どちらを選ぶかは内容や本人のスキルによって変わります。重要なのは、AIに伝わりやすい形で提供することです。
コードも情報伝達の手段になる
コーディング中や詳細設計の段階では、エンジニアが直接コードを書いてAIに伝えたほうが、自然言語で説明するよりも効率的な場合があります。
コードで指示する効率性
例えば、データ構造を自然言語で「ユーザーには ID、名前、メールアドレス、登録日を持たせてください」と説明するよりも、class User { id: string; name: string; email: string; registeredAt: Date; } と書いたほうが正確で速いこともあります。
本人のスキルによっては、自然言語で説明するよりもコードで書いたほうが楽な場合もあるでしょう。重要なのは、どちらの言語で指示しても本質は変わらないということです。指示しやすい言語でAIに伝えればよいのです。
コードが設計書になる
AIは整理されたコードであれば設計を読み取ることができるため、そうしたコードは設計情報としても機能します。逆に、設計書からコードを生成することもできます。つまり、コードは実行可能であると同時に、設計書と同じ「説明のためのテキスト」としても機能する可能性があります。
形式より内容
重要なのは、どちらの形式で書くかではなく、必要な情報がどこかに明確に存在していることです。この状況では、どの言語で書くかよりも、「実現したい内容をどれだけ明確に伝えられるか」が重要になっていきます。
AIと協働する開発者の価値
AIが翻訳に近い作業を担えるようになったことで、開発者が価値を発揮する部分は徐々に変わってきています。
- 判断に必要な材料をそろえる
- 抜けている前提を見抜いて追加する
- AIの生成結果を確認し、現実に合っているかどうか判断する
こうした作業は、人間が持つ理解力や経験が不可欠です。
まとめ
- AIは自然言語とコードを同じように扱える
- 工程間の本質は「翻訳」ではなく「情報補完」
- 人間の役割は不足情報を見抜き、追加すること
- 重要なのは形式ではなく、意図の明確さ
開発者に求められるのは、特定の言語の習熟度よりも、問題の本質を見抜き、必要な情報を的確に補完していく力だと考えています。