プログラマーは全員「ソフトウェア開発にChatGPTは使えるのか?」を買うべきである。
先日技術評論社より刊行された書籍「ソフトウェア開発にChatGPTは使えるのか? - 小野哲 著」
を同社よりご寄贈いただき、うぉー、すげーすげーと奇声を発しながら読んでおります(一部本当)。あ、技評さんには私もお世話になっておりまして3冊ほど著書が出ておりますのでそちらもよろしくです(当記事末に記載)。
さてChatGPTです。「ソフトウェア開発にChatGPTは使えるのか?」と聞かれれば答はもちろん「使える使える大いに使える!」なのですが、とはいえ私がいままで使っていたのはリンゴの皮一枚程度の部分でしかなく、まだまだ分厚い身があることが本書を読むとよくわかります。
本書を1/10ぐらい読んだだけでも、率直に言って
プログラマーは全員「ソフトウェア開発にChatGPTは使えるのか?」を買うべきである
いやほんとマジでそう言えます。以下、印象に残ったところをかいつまんで引用しますと
2章「プログラミングでの活用」
2.1節「自動コード作成」
「しかし、残念ながら現場レベルの大きなプログラムは組めないということはすぐにわかります。設計書をそのまま任せればいいというものではありませんよね。」
これは確かにその通り
「ChatGPTにはそれなりに依頼の仕方があり、ちょっとしたコツで効果は大きく変わってきます」
この「ちょっとしたコツ」がすごかった!
「普段使いで最も多いパターンで、かつ効果がある使い方は『理解はしているが苦手なものをChatGPTに任せる』ことです」
例として正規表現パターンを生成する問題がありました。私も「メールアドレスにマッチする正規表現パターン」生成に使ったことがあります。メールアドレスにマッチするパターンはよく使われるのでGoogle検索でもちろん出てきますが、ストレートに結果を出してくれるChatGPTのほうが扱いやすいのは確かです。こういうものは自分で1から書くと時間がかかるので、AIに生成させてしまった方が早い。ただし間違った答えを出してくることは当然あるのでそれに気づけるようでなければならない。だから「理解している」必要はあるわけです。
「小さな単位で問うのがコツです。たとえば関数を作成したい場合は明確な仕様を伝えることができれば的確な回答が得られます。関数の生成はChatGPTが得意とする分野です」
そういえば私も「2つのPowerPointファイルの類似性を判定する関数を書いてください」のように関数の仕様を指定して生成させるという使い方をよくやっていました。
このへんまではまあ私も良くやっていた使い方なんですが、その次はまったくの予想外でした。
「エラーをなかなか解消できず暗中模索状態に陥った場合は、ChatGPTに疑似ディベートをさせると手がかりが得られることがあります。異なる意見を持つ2人の人物が論争を交わしたうえで最終的に議長がそれをまとめて意見を述べる、という設定でChatGPTに議論をさせるのです」
「同じ問題について異なる視点から考える」のはアイデア出しのための重要なポイントでして、それをするためにたとえばブレーンストーミングという方法もありますが、1人だけでやるとどうしても自分の発想の枠を超えられないものです。ChatGPTに「意見の違う2人」という設定を加えることでそれが可能になるというのはビックリです。
さらに、おおっこれはすげえと思ったのがこちら。
「ある言語を習得済みの人が別な言語を学習しようとする場合、習得済みの言語の基本構文を新しい言語ではどう書くかを対比した例を出力させることができます」
確かに、人間は既に知っていることと新しい知識を関連づけると理解しやすくなるのでこれは極めて合理的。ところがこの合理的な方法が一般の入門書などで使われているのは見たことがありません。理由は簡単で、たとえばGoの入門書を書くのに「前提となる既習得言語」を限定しようとしても主要なものだけでもJava, Python, C, JS, PHP 等々いくつもあるので難しく、ページ数が限られている中でそれをすべて盛り込むのは現実的ではないわけです。1種類だけ、たとえば「Pythonが分かっている人のためのGo入門書」というのもその分読者数が減ってしまうのでやはり出版事業としては成り立たない。(個人がブログで書くような例ならありますが、その個人の労力に依存するので極めて限定的)。
ところがChatGPTは生成AIなのでそのときそのプロンプトを入力した相手に対してだけ生成すればよいのでやれるんですね。なるほど......です。確かにこれは使える。
ChatGPTが登場した当初私は「人間のような自然な受け答えをするAI? 面白いけど僕にはあんまり関係なさそう」と思っていたんですが、まさかこんな使い方があるとはビックリです。
......と驚くような使い方が他にもテンコモリで解説されているこの本、プログラマーは全員買うべきでしょう!(太鼓判)
(以下、目次引用)
第1章 ChatGPTで何ができる?
なぜできる?
1-1 ChatGPTで何ができる?
1-2 なぜそんなことができるのか?
第2章 プログラミングでの活用
2-1 自動コード作成
2-2 エラー対策
2-3 クラス化について
2-4 状態遷移表でコードを生成
2-5 デザインパターンを提案してもらう
2-6 アルゴリズムを提案してもらう
2-7 段階的積み上げ手法
2-8 コードの変換
2-9 付記:テストケースの注意点
第3章 リファクタリングでの活用
3-1 隙間時間でお気軽リファクタリング
3-2 コメントとドキュメンテーション
3-3 セキュリティの脆弱性チェック
3-4 例外処理と論理完全性の改善
第4章 ドキュメントの自動生成
4-1 PowerPointのスライドを自動作成
4-2 Wordドキュメントの自動作成
4-3 Excelと連携しドキュメントを自動作成
4-4 diagramsを使ってクラウド図を作成
4-5 dbdiagram.ioでER図を作成する
第5章 各種開発手法の提案
5-1 DDDによる設計と実装
5-2 TDDによるテストからの実装
5-3 ChatGPTとソフトウェア開発のアプローチ
第6章 学習プロセスでの活用
6-1 分野別の学習
6-2 プログラミング言語の学習
6-3 ChatGPTは学習を加速する
第7章 ChatGPT APIを活用する
7-1 最も基本的な使い方
7-2 要約をしながら文脈をつなげていく
7-3 社内データベースに日本語で問い合わせる
7-4 社内データベースと連携してユーザーサポートをする
第8章 ChatGPTで長文データを扱う
8-1 LlmaIndexで長文データを扱う
8-2 LangChainで長文データを扱う
第9章 長文をChatGPTで扱うコツ
9-1 LangChainの仕組みとは
9-2 Chainsでタスクをつなげる
9-3 Chainsによるチャットボットの例
9-4 Agentによるコードの実行
9-5 Agentによる判断・実行・プロセスの自動化
9-6 AgentによるChatボットの最終形
---------------------------------------------------------------
あ、ついでに私の本もよろしくお願いいたします。(便乗)