【書評】ソフトウェア開発にChatGPTは使えるのか? ー 設計からコーディングまでAIの限界を探る を読んで
明日(7/12)発刊の技術評論社「 ソフトウェア開発にChatGPTは使えるのか?ー 設計からコーディングまでAIの限界を探る」という書籍をちょっと早めにいただいて拝読することができたので、おススメポイントと私の感想を書いておきたいと思います。
著者の「小野哲(おのさとし)さん」は、本書のプロフィールではソフトウェア開発歴40年ということで開発者としては大ベテランの方のようだ。著書を拝見するとSQLやOracleなどのデータベース(RDBMS)に強い方みたいだ。
ちなみに今回の本のプロフィールにはないけど、以前の著作にあるプロフィールでは、
生産管理系SEや制御系SEを経て,現在はフリーのSE。少欲知足で清貧なスローライフを楽しむ。古流柔術道場の修心館において高橋弘基老師より皆伝師範を印可。雅号は「哲山」。将来の計画は,森の中に住み,太陽光発電で電気を自給,自然農園で作物を自給し年収50万円以下で生活できる持続可能なライフスタイルを実現すること。柔術道場を開いて「いじめられっこ」に心技としての柔術を教えること。
https://gihyo.jp/book/2008/978-4-7741-3313-3
って、結構多趣味かつ、森とか太陽光発電とか自給自足とか私の興味関心と通ずるところが多そうなので機会があったら一度お会いしてお話を伺ってみたいものだ。
閑話休題。それはおいといて、本書の内容の方に話を移そう。
本書は、今や大変な話題になっている大規模言語モデルChatGPTのソフトウェア開発における活用方法について解説している。対象は「AIのソフトウェア活用を検討しているプログラマー」や「ChatGPTの活用を考えているエンジニアなど」ということだが、前者については本書はChatGPTのAPIのごく一部の活用にしか触れていない&Google colab上のNotebookでのお試し程度な実装例しか説明していないので他の書籍の方がおススメかもしれない。一方、後者のエンジニアのうち、日々日々開発に明け暮れている職業プログラマーの方が読んだらChatGPTを伴走者とすることで大いに役に立つし、本書の第六章でふれているChatGPTを使った学習を活用すればプログラミングスキルアップにも繋がるのではないかなと思う。そういった意味では、プログラミングを学んでいる or 学びたくて、将来、開発に携わりたいと思っている人にもおススメかもしれない。書籍の中で説明されているコードは全て著者のGithub上にアップされているし、Google Colabからボタンひとつでそれを読み込んで実行できるのでとてもとっつきやすい。
さて、本書の目次は以下の通りだ。
第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ボットの最終形
先にもちょっと触れたが、第7~9章のChatGPT APIやPythonライブラリを使ったチャットボットの開発などは本当に初心者の方には良いかもしれないが、ある程度のプログラマの方には物足りないかもしれない。
私の方で特に役立ちそうだなと思ったのは、第2~5章の「プログラミングでの活用」「リファクタリングでの活用」「ドキュメントの自動生成」「各種開発手法の提案」あたりの実際のプロンプトとフローだ。私もコードをChatGPTに書かせたことがあったが、AIが生成したコードの信頼性にはちょっと不安があった。本書の第二章ではその辺を補完するために、AIにテストケースやテストコードを書かせているところが良いなと思った。また本書ではPythonを中心にGoogle ColabのNotebook上のiPythonで逐次コードを実行できるようにしているので初心者の人にも理解が進みやすいし、ChatGPTのような対話型エンジンとの協働には適していると思った。
一方、データサイエンティストや機械学習でPythonやJupyter Notebook(Google Colab)を使っている人は良いが、他の言語の開発環境(IDE)を使っている人には逆に取っつきにくいところがあるかもしれないなと思うところもあった。そんな方でも第3章のリファクタリングや、第4章のドキュメンテーションでの活用、第5章の各開発手法での活用は既存のコードのブラッシュアップや今まで面倒と思っていたことが大分ChatGPTで解消や効率化できるのでないかと思った。
ただし、私が勤めている会社でもそうだが、ChatGPTを業務にほいほい使っていいかと言うとそうでもなく、特に無償版のChatGPTに個人情報や機密情報を入れてしまうとデフォルトではプロンプトに入れたデータがChatGPTの学習データとして再利用され、場合によっては外部に流出したと見なされてしまいインシデントとして扱われて処分を受けることにもなりかねない。無償版であっても再学習に使わない設定(それでも30日間はログが保存される)にしたり、有償版のChatGPT Plusを契約すればその限りではないが、本当に情報管理が厳しい会社では会社対会社、つまりOpenAIと所属企業間で契約を締結でもしない限り、個人利用のChatGPTに業務で利用するコードをコピペするのは難しいだろうし、基本禁止だとは思う。
とはいえ、その辺の社内ルールの整備や安全性の担保をどこかしらの大企業や業界団体等が進めてくれて前例が沢山できていくだろうから、まずは趣味の開発などに本書を参考にしてChatGPTを活用してみてはいかがだろうか?
「 ソフトウェア開発にChatGPTは使えるのか?ー 設計からコーディングまでAIの限界を探る」小野哲著 技術評論社