その本の「はじめに」には、著者の「伝えたいこと」がギュッと詰め込まれています。この連載では毎日、おすすめ本の「はじめに」と「目次」をご紹介します。今日は酒匂寛さんの『 上流から下流まで生成AIが変革するシステム開発 』です。

【はじめに】

 本書はソフトウェア開発の本です。といっても「〇〇言語による〇〇プログラミング」といったプログラミングの話題だけを扱う本ではありません。

 むしろ実際のプログラミングに入る手前までの道筋を中心にたどる本です。多くのソフトウェアは、問題を抱えた誰かがいて、その問題を整理したあと、その解決のために、どのようなソフトウェア作りをすればよいかを考える専門家に相談して作り上げられていきます。

 本書はそうした問題解決をする専門家、そしてこれから専門家になりたい人のための本です。さらに、こうした専門家とともに働く人(顧客となる発注者や経営層)のための本でもあります。

本書の特徴

 本書の特徴は、ソフトウェアによる問題解決の過程に生成AI(人工知能)を取り込んでいることです。ソフトウェアによる問題解決には


- 問題をはっきりさせる
- 問題の解法に合意する
- 解法を実装する
- 実装した解法を運用する


といったステップがあり、それぞれのステップに対して様々な手法が提案されてきました。生成AIによる支援もそうした手法の中に組み込まれる新しい武器となります。

 本書は(1)ソフトウェア開発の各ステップが満たすべき性質を俯瞰しながら、(2)そこにどのように生成AIを組み込んでいけばよいかを説明していきます。

 (1)を理解しておくことは大切です。そうすることで(2)をどのように進めていけばよいかの羅針盤が得られるからです。本書では進歩の著しい生成AIを使った航海に出ますが、(1)を理解しておくことで、この先に生成AIそのものが大きく変化したり、より新しい手法が生まれたりしても、自分たちの開発のために何をすればよいか(どのようにそうした変化を取り入れたらよいか)がわかりやすくなります。

生成AIの特性とその重要性

 前の節で、生成AIは「新しい武器」だと書きましたが、それはどのような武器なのでしょう。ここで話は少し遠くなるようですが、「Whatの道具」と「Howの道具」というお話をします。生成AIは「Whatの道具」なのです。

 これまで私たちが手にしてきた道具は、基本的に「Howの道具」でした。つまり、道具は強力で繊細な仕事をしてくれるものの、その手順は人間が事細かに教えてやる必要があったのです。

 たとえば「Howの道具」であったお絵かきソフトで絵を描くとします。するとこれまでは、モチーフを決め、レイヤーを決め、ブラシを選び、輪郭を描き、面に色を塗るという作業を人間が行う必要がありました。ところが最新のお絵かきソフトには「Whatの道具」の性質が組み込まれ始めています。いわゆる「AIによる作画」です。Howの道具には一つひとつ手順を指示しなければなりませんでしたが、Whatの道具には「このようなもの(What)が欲しい」という指示を出すことが基本になります。

 このように「どのように(How)作るのか」ではなく、「何が(What)欲しいのか」を指定することが特に生成AIを使うときに必要になるのです。これはこれまでの道具の使い方とはずいぶんと異なるやり方です。

 これまでのようなHowの道具を使いこなすときにも、最後の姿はイメージできなければなりません。作りながら行き先を徐々に考えていくティンカリングというやり方もありますが、普通の仕事のときにそれをやると回り道が多くなりすぎて時間とお金が果てしなくかかってしまいます。

Whatの道具としての生成AI

 2023年になって生成AIと呼ばれる「道具」が大きく取り上げられるようになりました。それまでは賢いパターンマッチングのようだったAIとの対話が、あたかも人間と対話しているかのようなものとなり、ちょっとしたヒントから気の利いた答が出力されるようになってきました。

 たとえば「1からnまでの整数の合計を求めるPythonの関数を書いて!」とお願いすると、以下のような出力がすぐに得られます。

画像のクリックで拡大表示

 これを使ってPythonインタープリターで以下を実行してみると15が得られます。

画像のクリックで拡大表示

 1+2+3+4+5=15 なので確かに正解ですね。でも、「これで完成!」でよいのでしょうか? 中をよく見ると何やら「公式」のようなものを使っていることがわかります。以下の部分です。

画像のクリックで拡大表示

 ちなみにこの公式は等差数列の和を求める公式でもありますが、超有名な数学者のガウスが小学生の頃に思いついた公式でもあります。ここで生成AIにお願いしたことは「1からnまでの整数の合計を求めるPythonの関数」(What)を書いてもらうことでした。どのように(How)Pythonの関数の中身を書いて欲しいかは指定していないことに注目してください。

 こちらは「公式を使って関数を実現して欲しい」とは言っていないのに、生成AIがとりあえずこんなものだろうかと適当に作ってくれたのです。

 さて、一見これで望んだものが得られたかのような気がしますが、本当でしょうか? この関数を欲しかった人の要求にこの関数は応えてくれるのでしょうか? 本書の残りではそうした疑問も掘り下げていきます。


【目次】

画像のクリックで拡大表示
画像のクリックで拡大表示
画像のクリックで拡大表示
画像のクリックで拡大表示