【2025/10/02補足追記】書き方が悪かったため対応関係が曖昧になっていたので追記。対応関係としては、変換層としてのLLM・コンパイラ・SaaS事業主で、SaaS事業主によるSaaS提供では内部の詳細仕様はブラックボックスのまま信頼するので確率的と捉えられるという話でした。以下対応関係のイメージ
- 自然言語 => LLM(もしくはAIエージェント) => コード
- 高級言語 => コンパイラ => アセンブリ
- 何らかの社会課題 => SaaS事業主 => SaaS
最近「高級言語 => コンパイラ => アセンブリのように、自然言語 => AI => コードもそのうちコードを見なくて済むようになる」のような話題を見かけることがある。しかしAIによるコード生成は、コンパイラじゃなく、むしろSaaSと比較するべきなのではないかと思った。
まずコンパイラとAIによるコード生成の決定的な違いは、決定論的なのか確率論的なのかという部分だ。コンパイラは入力に対して同じ出力を返すような決定論的な動きをするので、コンパイラに一定の信頼があり高級言語によるコードが正しければアセンブリの出力も必ず正しいと信頼できる。一方でAIによるコード生成は、同じ自然言語に対して毎回違うコードを出力する確率論的な動きをするため、自然言語による入力に対して出力が正しいかどうかは保証がない。
決定論的なのか確率論的なのかの違いがあるため、コンパイラのコード出力への信頼と同じ考え方ではAIのコード出力を信頼できないのではないか。そのためコンパイラとAIによるコード生成は比較しづらいと感じている。
ではコンパイラと違って決定論的に動かないからといって、「そのうちコードを見なくて済むようになる」は達成されないのかというと、そうではないと思う。同じように出力の中身を見ずに挙動だけを信じているものを考えると、AIによる出力はSaaSに近いのではないかと感じている。
SaaSを利用するとき、僕らは実際のコードを見ずに挙動だけ信じている。もしAIによるコード生成の中身を見なくて済むようになるなら、SaaSと同じように信頼できると感じる時ではないか。そう考えると、どのような場合は利用するSaaSを信じるという判断を下しているのかを深掘りすると、どうなれば「そのうちコードを見なくて済むようになる」未来に到達するのかをイメージできるかもしれない。
このように最近僕はAIによるコード生成は、コンパイラじゃなく、むしろSaaSと比較するべきなのではないかと思ってきている。とくに根拠があるわけではないが、最近の自分の考えを述べてみた。