👤

【中〜大規模プロジェクト向け】ChatGPTの利用ガイドライン考えてみた

2023/08/01に公開

こんにちは。とあるフロントエンドエンジニアです。

今回はシステムやアプリケーション開発プロジェクトで使えそうなChatGPTの利用ガイドラインの叩きを考えてみました。

背景

近頃、業務効率化のツールとしてChatGPTを使うことがわりと一般的になってきましたが、システムやアプリケーション開発においてもその例外ではありません。

一人のエンジニアがメインで開発を進めるケースではあえてChatGPTのガイドラインを作成する必要性は高くないとは思いますが、規模が大きいプロジェクトのように、大人数で構成するチーム開発、または他社ベンダやオフショアのメンバーなども交えた多様なバックグラウンドを持つメンバーと開発を行う際に、全員がChatGPTなどの生成AIのツールに関して等しいレベルで知識や危機管理能力を持っているとは限りません。

おそらく今後はこのようにPM側が開発メンバーの技量を把握しにくい環境では、通常の開発ガイドラインに加え、ChatGPTなどの業務支援のAIツールの適切な扱い方に関するガイドラインも必要になってくるのでは?と思いました。

そこで、このようなプロジェクトのケースに備え、ChatGPTのこんな感じのガイドラインがあれば、メンバーのChatGPTの使用経験の有無に関わらず、プロジェクト内で多少の情報セキュリティの規定や個人の危機管理意識を高められるのではないかと思ったのでその叩きを作ってみました。

本記事に記載のガイドラインはConfluenceやNotion、OneNoteなどのドキュメント管理ツールにまとめて、プロジェクトメンバーがいつでも確認できるようにするためのドキュメント、という位置付けで記載しています。

これより下からガイドラインのテンプレートになります。


ChatGPT利用ガイドライン

目次 (ConfluenceやNotionなどのドキュメントツールを利用する場合は必要に応じて目次モジュールを入れる)

1. 概要

このガイドラインは、本プロジェクトにおいてChatGPTを利用する際のルールを定義する。ChatGPTは人工知能を活用した自然言語処理モデルであり、質問応答、テキスト生成、翻訳など、様々な言語タスクに対応できる高性能なチャットボットであり、開発作業の支援に利用することができる。

2. 使用するアプリケーション

本プロジェクトでは、情報セキュリティポリシーに基づいて、承認された〇〇社が提供する「Hogehoge(自社サービス名)」のChatGPTのみを利用することとし、一般的に広く利用されているChatGPTの利用は禁止とする。

Hogehoge(自社サービス名のリンク)

3. 開発支援

ChatGPTは、開発作業の支援にも利用することができる。

3.1. コードの自動生成

ChatGPTは、自然言語処理モデルであり、自然言語からコードを自動生成することができる。自然言語でコードの要件を説明することで、コードを自動生成することができる。

Prompt例

フォームから入力されたメールアドレスをバリデーションするための関数をTypeScriptで出力してください

ChatGPTレスポンス

function validateEmail(email: string): boolean {
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  return emailRegex.test(email);
}

3.2. デバッグ

ChatGPTはデバッグのための迅速な支援を行うことができる。コンソールなどに出力されたエラー文をプロンプトに入力することにより、ChatGPTはそのエラーの原因と解決方法の提案を行うことができる。

Prompt例

以下エラーの解決方法は?
---
TypeScript error: Property 'name' does not exist on type 'Person'.

ChatGPTレスポンス

このエラーは、Person型のオブジェクトにnameプロパティが存在しないことを示しています。解決するには、Person型の定義を変更してnameプロパティを含める必要があります。
例えば、次のようにPerson型を定義することができます。

type Person = {
  name: string;
  age: number;
  // 他のプロパティ
}

3.3. コードのリファクタリング

ChatGPTを用いてコードのリファクタリングを行うことができる。

Prompt例 (配列の要素を合計する関数)

以下の関数をリファクタリングして

\```ts
function sumArray(arr: number[]): number {
  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    sum += arr[i];
  }
  return sum;
}
\```

ChatGPTレスポンス

function sumArray(arr: number[]): number {
  if (arr.length === 0) {
    throw new Error("配列が空です");
  }
  const sum = arr.reduce((total, num) => {
    if (typeof num !== "number") {
      throw new Error("配列の要素はすべて数字である必要があります");
    }
    return total + num;
  }, 0);
  return sum;
}

ChatGPTを用いてコードのリファクタリングを行う場合、後述の「機密情報の取り扱い」の内容に留意して利用する。

3.4. 開発ツールの操作方法に関する質問に対する回答

開発ツールの効率的な操作方法がわからなかったり、要件に応じた特定のコマンドの使い方がわからない場合に、ChatGPTに質問することによって、疑問点の解決を行うことができる。

Prompt例

grepコマンドを使用して、
src/ディレクトリ内で<BasicButtonまたは<basic-buttonのいずれかの文字列が
記載されているファイルを検索する方法を教えてください。
なお、検索結果で重複するファイルは一つにしてください。

ChatGPTレスポンス

grep -r -l -E "\<BasicButton|\<basic-button" src/ | sort | uniq

4. 利用上の注意点

ChatGPTを利用する際には、以下の注意点に留意すること。

4.1. 機密情報の取り扱い

ChatGPTは、チャットボットとして機密情報を扱うことがあるため、プロジェクトメンバーは、機密情報をChatGPTに入力する際には、注意して入力すること。

4.1.1. プロンプトに入力しないようにする情報

ChatGPTにプロンプトを入力する際、以下の情報を入力しないようにすること。

  • リリース前のクライアントのブランドやサービス名
  • APIキー、データベースのパスワードなどのセキュアな情報
  • パスワード、アカウント情報、クレジットカード情報などの個人情報
  • 企業の内部情報、業務の機密情報、契約内容などの機密情報
  • 法的な問題や訴訟に関する情報
  • セキュリティに関する情報、システムの脆弱性、攻撃方法などの情報
  • 倫理的に問題がある情報、誹謗中傷、差別的な発言などの情報

4.2. 質問の適切な範囲

ChatGPTは、自然言語処理システムであるため、ある程度の範囲内での質問にのみ対応することができる。プロジェクトメンバーは、適切な範囲内での質問を行うように留意する必要がある。

4.3. 翻訳機能の限界

ChatGPTは、翻訳機能を持っていますが、完全な翻訳を保証するものではないため、プロジェクトメンバーは、翻訳の限界を認識し、必要に応じて翻訳支援ツールを利用すること。

4.4. AIの幻覚(Hallucination)の存在に注意する

ChatGPTは、自然言語処理モデルであるため、人間の言語に合わせて学習し、自然な応答を返すことができる。しかし、時には事実のようにみえて実は全く虚偽の内容を返す可能性があることに注意する。

4.4.1. 幻覚性の応答のイメージ

Prompt例

AWS Quantum Brain とはどんなサービスですか?

ChatGPTレスポンス

AWS Quantum Brainは、量子コンピューティングを使用して、複雑なデータ処理を実行することができます。
AWS Quantum Brainは、量子マシン学習アルゴリズムを使用して、
高速で正確な予測モデルを生成し、データサイエンスの分野での問題解決を支援します。

→ AWS Quantum Brainというサービスはそのそも存在しない。

上記はAIの幻覚による解答のイメージだが、このようにChatGPTが誤った情報を返答する可能性があるため、ChatGPTによって出力された情報をそのまま信じることは避け、別の情報源を確認するなどして適切な情報を得るよう留意すること。

5 その他共有事項

  • hogehoge (何かプロジェクトでそのほかに留意すべき事項がある場合は記載)

ここまでがガイドラインのテンプレートです。

ガイドラインの各項目の解説

概要

まず初めにこのドキュメントを定める目的を簡潔に記載します。

使用するアプリケーション

近い将来、OpenAI社の一般に広く利用されているChatGPTとは別に、自社でChatGPTライクなアプリケーションを自社社員向けにリリースする企業も出てくるのではないかと思っています。

その場合、プロジェクトの方針としてどのChatGPTサービスを使うことを許容するのかを明示的に定義することによって、企業内での情報セキュリティやコンプライアンスを確保し、より適切な情報管理を実現することができると考えています。

またChatGPTの使用経験がない人にもどのアプリケーションを使うことでChatGPTを利用することができるのかを伝える、と言う目的もあります。

開発支援

ここでは、ChatGPTではこんな開発業務の支援ができるよ〜という例をいくつか記載しておくことによって、ChatGPTの使用経験が少なくてもその使い方をイメージできるような簡単なプロンプトを載せておきます。

ChatGPTの使い方や応用方法は様々ですが、ここで大事なのは、ChatGPTに関する知識量に関係なく、その使い方のイメージができるようできるだけ簡単にしておくことだと思っています。

なのでChatGPTを利用した開発支援として比較的簡単な方の「コード生成」「デバッグ」「リファクタリング」「単純な質疑応答」の簡単な例をそれぞれ記載しました。

「プロンプトの書き方はこんな感じだと効果的に解答を得られるよ!」などのアドバイス的な内容や応用的な開発支援方法などのTipsは別途それ専用のドキュメントに記載するのが良いかなと思っています。

利用上の注意点

このガイドラインで最も重要な要素ともいえる、ChatGPTを利用する上での情報セキュリティ面や危機管理に関する内容を記載します。

利用者によってはChatGPTからの出力内容を全て正しいと思い込んでそのまま利用してしまう(重要な提案書などにChatGPTの出力内容をそのまま載っけちゃうとかの)リスクをヘッジするため、ChatGPTの欠点を記載し、ChatGPTに聞いて返ってきた内容は本当に正しいのかどうか、ちゃんと情報源を確認してね!という念押しをします。

その他共有事項

この項目では、何かプロジェクトでそのほかに留意すべき事項がある場合は記載します。

まとめ

今回はChatGPTをシステム開発プロジェクトで利用する際のガイドラインのテンプレートを作ってみました。

必要に応じてコピペしたりプロジェクト用にカスタムして使っていただけたら幸いです。

こういう記載をガイドラインに追加した方がいいんじゃない?などのご意見がありましたら是非是非コメントください。一緒にガイドラインを進化させましょう!!

Discussion