ソフトウェア開発者向け生成AI利用のベストプラクティス、GitHubが解説「GitHub Copilot」をテーマに

GitHubは、ソフトウェア開発者が生成AIを効果的に利用するためのベストプラクティスを同社が提供するコーディングアシスタントツールである「GitHub Copilot」をテーマに解説した。

» 2023年07月11日 11時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 GitHubは2023年6月21日(米国時間)、同社の公式ブログで、ソフトウェア開発者が生成AI(人工知能)を効果的に利用するためのベストプラクティスを、「GitHub Copilot」をテーマに解説した。

 GitHubは、GitHub CopilotのようなAIを搭載したコーディングアシスタントが、コードベースの文書化から単体テストの生成まで、開発者のワークフローを加速し、開発者が日々のコーディング作業に取り組む方法を変えつつあると述べている。

 だが、ソフトウェア開発者が望む出力をコーディングアシスタントが生成しない場面もあるとして、以下の3つを解説した。

  • コーディング作業におけるプロンプトおよびプロンプトエンジニアリングとは
  • 生成AIを利用して迅速に開発するための3つのベストプラクティス
  • GitHub Copilotと迅速にやり取りするための3つのヒント

プロンプトおよびプロンプトエンジニアリングとは

 生成AIを用いたコーディングアシスタントツールの文脈では、プロンプトおよびプロンプトエンジニアリングは、開発者に尋ねるのか、ツールを構築し微調整している機械学習研究者に尋ねるのかで異なる意味を持つことがある。

プロンプト プロンプトエンジニアリング
開発者 コーディングアシスタントから特定の提案を生成させるためのコードブロック、個々のコード行、または開発者が書いた自然言語コメント 具体的なコーディング案を生成するためのIDE(統合開発環境)上の指示やコメントの提供
機械学習研究者 アルゴリズムによって継続的に生成され、生成AIコーディングツールのモデルに送信される、IDEのコードと関連するコンテキスト(IDEのコメント、オープンファイルのコードなど) 大規模言語モデルのプロンプト(IDEコードとコンテキストのコンパイル)を生成するアルゴリズムの作成
開発者と機械学習研究家による「プロンプト」と「プロンプトエンジニアリング」の解釈の違い

生成AIを利用して迅速に開発するための3つのベストプラクティス

大まかな目標を設定する

 これは、空のコードベースや空のファイルという状況の場合に特に役立つ。何を作りたいのか、何を達成したいのかが全く分からない場合、AIプログラマーのために目標を設定するのはとても有効だという。

 GitHub Copilotに指示する際は、誰かと会話するようなイメージで進めるとよいとした。

 例えば、Next.jsでマークダウンエディタを作るときに、次のようなコメントを書くとする。

/*
Create a basic markdown editor in Next.js with the following features:
- Use react hooks
- Create state for markdown with default text "type markdown here"
- A text area where users can write markdown 
- Show a live preview of the markdown text as I type
- Support for basic markdown syntax like headers, bold, italics 
- Use React markdown npm package 
- The markdown text and resulting HTML should be saved in the component's state and updated in real time 
*/

 すると、GitHub Copilot が次のようなコードを生成し、シンプルなマークダウンエディタが30秒以内に完成する。そして、残りの時間でコンポーネントのスタイルを整えることもできる。

GitHub Copilotで生成されたマークダウンエディタのソースコードとそのプレビューイメージ(提供:GitHub) GitHub Copilotで生成されたマークダウンエディタのソースコードとプレビューイメージ(提供:GitHub)

シンプルで具体的な返答を受け取ることを目指す

 生成AIに主な目標を伝えたら、目標を達成するために必要なロジックと手順を明確に記述する。GitHub Copilotの場合、物事を分解することで、利用者の目標を理解しやすくなる(レシピを書くように、個別のステップに分解する)

 GitHubは、GitHub Copilotを利用する場合、一度に大量のコードを生成させるのではなく、ステップごとにコードを生成させるべきとした。

例を1つか2つ挙げる

 例から学ぶことは人間だけでなく、AIにとっても有用だ。AIに対して例を1つか2つだけでも入力すれば、望んでいる結果を手にできる。

GitHub Copilotと迅速にやり取りするための3つのヒント

プロンプトを試す

 GitHubは、会話が科学というより芸術であるように、プロンプトもまた芸術とした上で、もし1回で思い通りのプロンプトが返ってこなかった場合は、上記のベストプラクティスに従ってプロンプトを作り直すべきとした。

 GitHub Copilotの場合、目標についてどの詳細を含めるべきかを最初から知るのは容易ではない。関数に何をさせたいかを概説したり、プロンプトの境界を設定したり、または、コメントを言い換えることで関数をより明確にすると、求める結果が得られる場合がある。

関連するタブを幾つか開いておく

 GitHub Copilotは隣接タブと呼ばれるテクニックを使い、作業中の単一のファイルだけでなく、IDEで開いているすべてのファイルを処理することで、AIアシスタントがコードを文脈化できるようにしている。ただし、GitHub Copilotが開いているすべてのファイルをコードに必要なコンテキストとみなすことは保証されていない。

 GitHub Copilotがコードの文脈を理解しやすくするために開いておくべきタブの正確な数は決まっていないが、1つか2つのファイルやドキュメントタブを開いておくと便利とした。

良いコーディングプラクティスを使用する

 GitHub Copilotにスネークケースを利用するauthenticate_user関数を入力として与えた場合、以下のような関数に関連するコードの提案を生成したという。

def authenticate_user(username, password):
    # Code for authenticating the user
    if is_valid_user(username, password):
        generate_session_token(username)
        return True
    else:
        return False

 これを踏まえGitHubは、分かりやすい関数名や変数名を使用しつつ、一貫したコーディングスタイルとパターンに従うべきとした。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。