どうもです、タドスケです。
先日、以下の本を読み終えました。
現場の仕事に活かせそうなノウハウがたくさん詰まった本だったので、レビュー記事にまとめます。
現場の開発に使えるテクニックが満載!
本書の主な内容は以下です。
- AI ツールの種類に合わせたプロンプト戦略
- AI と協働するためのコーディングテクニック
- AI の力を引き出すための開発アプローチ
- 生成 AI の力を組織で最大限に引き出す
- AI を活用するためのツール
- AI 時代をリードするために
他の生成 AI 系の本と比べて、生成 AI 自体の仕組みや拡張方法の説明よりも「生成 AI を活用して、ソフトウェア開発業務をどう改善できるか?」に多くのページが割かれています。
「開発業務で生成 AI を使ってはみたものの、どう活用したらいいかわからない」という人にとって、参考になるテクニックが多く見つかるのではないかと思います。
(少なくとも自分にとってはそうでした)
以下、特に参考になった部分を紹介します。
短かく始めて、少しずつ調整していく
多くの本や Web には「チーム内や社内でプロンプトを共有しよう」と書かれています。
本書でもプロンプトの再利用はオススメしていますが、「時間をかけ過ぎないこと」も強調されています。
その理由は以下のようなものです。
- 長文プロンプトを使い回す場合、状況によっては不要な項目が含まれることもある
- 一度に長文のコードが返ってきても、レビューしきれない
- Copilot に長文コメントで指示するより、コードを書き始めて早めにフィードバックループを回す方がいい
- 技術の進歩が解決してくれることも多い
僕はこれまで一回で良い回答を得ようとして、プロンプトのテクニックをあれこれ試行錯誤してきました。
しかし生成 AI は、回答に対して追加でプロンプトを投げられます。
本書を読んでから、
とりあえず思いついたことを一言で投げてみて、少しずつ調整していくほうが無駄が無いのかもしれないな……
と思うようになりました。
技術の進歩についても同感で、ChatGPT が流行り始めた頃は一度に渡せる情報量が少なかったため、「どうやって多くの情報を効果的に渡せるか?」を考えていました。
しかし最近ではファイルや URL を丸ごと渡せるようになり、GitHub のリポジトリを渡して学習させることも簡単にできるようになってきています。
「最高のプロンプト」を考えることに時間をかけるよりも、使える範囲で作れるものを作りながら技術の進歩を待つのが得策に思えてきました。
役に立ちそうなテクニック
数を指定してひねり出させる
「この機能はどう実装すればいい?」というような場合、大抵は一つの答えがあれば足ります。
そこで敢えて複数のアイデアを AI にひねり出させることで、新しい発見があったり、複数のアイデアを組み合わせられることがあるそうです。
「〜 についてのアイデアを 100個提案してください」と雑に指示しても、「無茶言うな!」とか「そんなにいらないでしょ!」とか言わないのが AI の良いところですね。
既にまとまっている情報を与える
プログラミング作業で生成 AI を使っていると、何か既存の知識を参考にして回答してほしい場合がよくあります。
プロンプトに箇条書きでまとめるのも一つの手ですが、以下のような一般的なものなら AI が知っているので、名前を与えるだけで済みます。
- リファクタリングカタログ
- デザインパターン
- コーディングスタイル(PEP8 など)
- プログラミング原則(DRY、SOLID など)
- アーキテクチャ(MVC、クリーンアーキテクチャなど)
例えば既存のコードを渡して、
以下のコードについて、SOLID 原則の観点で改善できるポイントを10個、箇条書きでまとめてください
(コード)
というような使い方ができます。
プロジェクト独自のルールについても、あらかじめまとめておいたページの URL やテキストファイルを渡せば毎回書く手間が省けます。
逆に言えば、AI に渡せる情報を日頃からまとめておくことが効率化に繋がります。
AI フレンドリーな○○
本書にしばしば登場するのが「AI フレンドリーな○○」という言葉です。○○の部分には、仕様・コード・ドキュメントなどが入ります。
人間にとって読みやすい情報が AI にとっても常にそうだとは限りません。
AI を活用するには、AI が活躍しやすいようにこちらのやり方を変える必要があります。
以下に具体例を挙げます。
コード
- 「関心の分離」を意識してコードを分ける
- ビューとロジックを同じファイルに置かない
- 早期リターンを使い、ネストを浅くする
- ループ内での複雑な処理を避ける
命名
- より具体的な名前を付ける
- data より userProfileData の方が具体性が高い
- 同じ変数を使い回さない
- 別の名前の新しい変数を作る
ドキュメント
- HTML のタグは AI にとってノイズになるため、Markdown を使う
- UML図は、テキストで表現できる Mermaid または PlantUML を使う
これからの時代に必要なこと
本書が掲げる生成 AI との向き合いかたは、「AI に仕事を代わってもらう」のではなく、「AI を使ってより多くのことを成し遂げる」というものです。
AI が得意な部分は AI をよりよく活用できるようにし、人間は AI が不得意な分野(特定の業務文脈に関する情報、複雑なアルゴリズムやロジックなど)を重点的に磨くのを勧めています。
また、AI に提供できるように組織全体でコードやドキュメントを育てていくことが大切だとも強調しています。
まとめ
以上、本書の内容をまとめました。
これまで読んできた生成 AI に関する本は、アイデア出し・コードの新規生成・AI のカスタマイズに関する内容が中心で、コーディングに使える具体的なテクニックはごく表面的なものにとどまっていました。
もっと日々の業務の改善に繋がるような、実用的なテクニックを知りたい…!
そう思ったところにピッタリな一冊でした。
これからは「AI フレンドリーか?」を常に自分に問いかけ、コーディングやドキュメント作成のやり方を改善していきたいと思います。
コメント