FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

【読書】生成AI時代の新プログラミング実装ガイド

はじめに

こんにちは。FLITNERSの西川です。

今回はFLINTERSで開催中の企画「梅雨にも負けない!ブログ祭り」として、テーマ「読書感想」の記事を書きました。

読んだ書籍は

  • 生成AI時代の新プログラミング実装ガイド - Pythonで学ぶGPTとCopilotの活用ベストプラクティス

です。

book.impress.co.jp

本書を読んだきっかけ

FLINTERSではGitHubCopilot BusinessやAIチャットボットなど、AIを利用した開発環境の導入が進められており、効率的な開発作業が行えるようになっています。

私は最近FLINTERSに転職し、コーディング作業でGitHub Copilotを使い始めたのですが、コーディング以外の開発作業でもAIを活用できるようになりたいと思い、こちらの書籍を読むことにしました。

本書について

「ChatGPT」を活かせば、迅速かつ効率的にプログラム開発を進める可能性が高まります。本書ではChatGPTの仕組みから、「GitHub Copilot」を使用したプログラミングの基本、Pythonを使用したChatGPTやGitHub Copilotを組み合わせたソフトウェア開発の実践方法、OpenAI APIの活用法、新登場したGPTsやAI開発で主流となっているLangChainの使い方まで詳細に解説。本書で、ChatGPTを活用したプログラミングを実践しよう!

引用元:インプレス

本書は、AIを利用した効率的な開発方法やAIを用いた機能の開発方法について、実例を通じて学べる書籍です。 副題に「Pythonで学ぶ」とありますが、Python以外の言語を使っている方でも十分に活用できる内容となっています。

本の内容は全6章です。

  • 第1章 ChatGPT とは何か、どう活用するのか
  • 第2章 ChatGPT 使用のベストプラクティス
  • 第3章 GitHub Copilot 使用のベストプラクティス
  • 第4章 ChatGPT とGitHub Copilot を活用したソフトウェア開発のベストプラクティス
  • 第5章 OpenAI API 利用のベストプラクティス
  • 第6章 LangChain でGPT を有効活用する

印象に残った箇所

プロンプトパターン

本書籍で紹介されているChatGPT活用の肝です。 アメリカの大学研究論文「A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT(※1)」から6つのプロンプトパターンが紹介されています。

  1. 反転インタラクションパターン
  2. ペルソナパターン
  3. 代理アプローチパターン
  4. ファクトチェックリストパターン
  5. リフレクションパターン
  6. テンプレートパターン

書籍内ではこれらのパターンを使いこなして、要件定義や設計、実装等を行っていく事例が紹介されています。

一例として、反転インタラクションパターンは次のようなものとなっています。

  • 反転インタラクションパターン

AIに質問するときは普通、「私は〇〇です。××について教えてください。」といった具合に人間側からAIに対して、情報を提示し、質問を投げかける流れになるかと思います。

一方、反転インタラクションは流れが逆で、AI側から人間に対して回答に必要な情報を促すパターンとなっています。

例えば 「社内書籍レンタルサービスの要件定義をお願いします。その回答を得る為に必要な情報をこちらに質問し、十分な回答を得たら回答を作成してください。」 と質問すると、

AIからは次の回答が得られます。

「下記について教えてください。1.サービスを利用する対象者は誰ですか?(例:社員全員、特定の部署のみ、契約社員も含む等)2.レンタル可能な書籍の種類や範囲はどうなっていますか?(以下省略)」

このような流れでAIとコミュニケーションをとることで、得られる回答の精度を高めることができます。

GitHub Next

GitHub NextとはGitHubから実験的に提供されている新サービスプロジェクト群のことです。

GitHub CopilotもGitHub Nextから生まれたサービスです。

GitHub Nextの動向を追うことで、AIを用いた最新の開発手法のキャッチアップが見込めます。

注意点として、すべてのサービスが正式リリースされているわけではなく、実験的に提供されている機能も含まれています。

実験的に提供されている機能を利用したい場合は、待機リストに登録したのち、その通過を待つ必要があります。また、サービスには公開期限があります。

公開が終了したサービスは利用レビューの評価次第で、後日正式版がリリースされたり、リリース済みの製品に組み込まれたりすることがあります。

実際に少し前まで「Copilot For Labs」というコード解説や翻訳等ができるサービスがありましたが、執筆時点(2024年5月)では既存のGitHub Copilotサービスに統合されて、チャット機能の中などから利用できるようになりました。

ChatGPTから得られた結果をテキスト以外で出力

ChatGPTで得られた結果は出力形式を指定することで、テキスト以外のさまざまな形式で取り出すことが可能です。

要件定義書など文面として出力結果を利用したい場合はMarkdown記法、 アーキテクチャ設計などでER図やクラス図といった、図を出力したい場合はMermaid記法が有効です。 他にも書籍ではフォルダ構成を検討してもらって、そのフォルダ構成を手元に作れるシェルスクリプトを出力させるような例も紹介されています。

さいごに

昨今、生成AIを利用した仕事術の書籍は多く出版されていますが、 ソフトウェア開発分野、特に要件定義や設計といった工程での活用事例を紹介している書籍は少なく、大変参考になりました。

特にプロンプトパターンは、今まで普通にAIに質問を投げていた自分にとっては目から鱗で、自分の中でのAIの可能性が広がりました。 今後は取得したい情報や状況に合わせて、プロンプトパターンを使いこなしていきたいと思います。

出典