{"meta":{"title":"GitHub Copilot Chat のプロンプト エンジニアリング","intro":"これらの戦略に従って、Copilot の結果を改善します。","product":"GitHub Copilot","breadcrumbs":[{"href":"/ja/copilot","title":"GitHub Copilot"},{"href":"/ja/copilot/concepts","title":"概念"},{"href":"/ja/copilot/concepts/prompting","title":"プロンプティング"},{"href":"/ja/copilot/concepts/prompting/prompt-engineering","title":"プロンプト エンジニアリング"}],"documentType":"article"},"body":"# GitHub Copilot Chat のプロンプト エンジニアリング\n\nこれらの戦略に従って、Copilot の結果を改善します。\n\nプロンプトは、GitHub Copilot に対して行う要求です。 たとえば、コパイロットチャット に質問する内容や、Copilot に完成を依頼するコード スニペットなどです。 プロンプトに加えて、Copilot は、現在のファイル内のコードやチャット履歴などの追加のコンテキストを使用して応答を生成します。\n\nこの記事のヒントに従って、Copilot からより適切な応答を生成するプロンプトを記述します。\n\n## 一般的なことから開始し、特定の情報を取得する\n\nCopilot のプロンプトを記述するときは、最初に Copilot に目標またはシナリオの広範な説明を提供します。 次に、特定の要件を一覧表示します。\n\n次に例を示します。\n\n```copilot copy prompt\nWrite a JavaScript function that tells me if a number is prime\n\nThe function should take an integer and return true if the integer is prime\n\nThe function should error if the input is not a positive integer\n```\n\n## 例を示す\n\n例を使用して、Copilot にあなたの意図を理解させてください。 入力データの例、出力例、実装例を指定できます。\n\n次に例を示します。\n\n```copilot copy prompt\nWrite a Go function that finds all dates in a string and returns them in an array. Dates can be formatted like:\n\n* 05/02/24\n* 05/02/2024\n* 5/2/24\n* 5/2/2024\n* 05-02-24\n* 05-02-2024\n* 5-2-24\n* 5-2-2024\n\nExample:\n\nfindDates(\"I have a dentist appointment on 11/14/2023 and book club on 12-1-23\")\n\nReturns: [\"11/14/2023\", \"12-1-23\"]\n```\n\n単体テストも例として機能します。 関数を記述する前に、Copilot を使用して関数の単体テストを記述できます。 次に、Copilot に、それらの単体テストで記述された関数の書き込みを依頼できます。\n\n## 複雑なタスクを単純なタスクに分割する\n\nCopilot で複雑なタスクまたは大規模なタスクを完了する場合は、タスクを単純で小さな複数のタスクに分割します。\n\nたとえば、Copilot に単語検索パズルを生成するように依頼する代わりに、プロセスを小さなタスクに分割し、Copilot に 1 つずつ実行するように依頼します。\n\n* 10 x 10 の文字グリッドを生成する関数を記述します。\n* 有効な単語の一覧を指定して、文字グリッド内のすべての単語を検索する関数を記述します。\n* 前の関数を使って、少なくとも 10 個の単語を含む 10 x 10 個の文字グリッドを生成する関数を書きます。\n* 前の関数を更新して、グリッドから文字のグリッドと 10 個のランダムな単語を出力します。\n\n## あいまいさを回避します\n\nあいまいな用語は回避します。 たとえば、\"this\" が現在のファイル、最後の Copilot の応答、または特定のコード ブロックである可能性がある場合は、\"何が行われるか\" を尋ねないでください。 代わりに、次のように具体的に指定します。\n\n* `createUser` 関数ではどのような処理が実行されますか?\n* 最後の応答のコードはどんな処理を行いますか?\n\nあいまいさは、ライブラリにも適用できます。\n\n* 一般的でないライブラリを使用している場合は、ライブラリの機能について説明します。\n* 特定のライブラリを使用する場合は、ファイルの先頭に インポート ステートメントを設定するか、使用するライブラリを指定します。\n\n## 関連するコードを示す\n\nIDE で Copilot を使用してコーディング時に提案を取得する場合は、関連するファイルを開き、無関係なファイルを閉じます。 Copilot は、開いているファイルを使用して要求を理解します。\n\nIDE で コパイロットチャット を使用している場合は、ファイルを開くか、Copilot で参照するコードを強調表示します。 キーワードを使って、手動で コパイロットチャット にコンテキストを渡すこともできます。 たとえば、VS Code で `@workspace` チャット参加者を追加したり、JetBrains IDE で `@project`を追加したりすることができます。 「[GitHub Copilot Chat のチート シート](/ja/copilot/using-github-copilot/github-copilot-chat-cheat-sheet) を参照してください。\n\n## 実験して反復する\n\n目的の結果が得られない場合は、プロンプトを繰り返してやり直してください。\n\nコーディング時に Copilot を使用して提案を取得する場合は、提案を完全に削除して最初からやり直すことができます。 提案を受け入れて修正を依頼することもできます。\n\nコパイロットチャット を使用している場合は、次の要求で前の応答を参照できます。 または、前の応答を削除して最初からやり直すこともできます。\n\n## 履歴に関連性を持たせる\n\nコパイロットチャット では、チャット履歴を使用して要求に関するコンテキストを取得します。 Copilot に、関連する履歴のみを指定するには:\n\n* スレッドを使用して新しいタスクの新しい会話を開始する\n* 関連性がなくなった、または目的の結果が得られなかった要求を削除する\n\n## 適切なコーディング プラクティスに従う\n\nコードベースで Copilot に提案や説明を求めるときに必要な応答が得られない場合は、既存のコードがベスト プラクティスに従っており、読みやすいことを確認してください。 次に例を示します。\n\n* 一貫性のあるコード スタイルとパターンを使用する\n* 変数と関数にわかりやすい名前を使用する\n* コードにコメントを追加する\n* コードをモジュール化およびスコープされたコンポーネントとして構築する\n* 単体テストを含めむ\n\n> \\[!Tip]\n> Copilot を使用して、コードがベスト プラクティスに従うようにします。 たとえば、Copilot に、コメントを追加したり、大きな関数をより小さな関数に分割したりするよう依頼します。\n\n## 参考資料\n\n* 「GitHubブログでの GitHub Copilot の使用方法：プロンプト、ヒント、ユース ケース」\n* ```\n            [IDE で GitHub Copilot を使う: ](https://github.blog/2024-03-25-how-to-use-github-copilot-in-your-ide-tips-tricks-and-best-practices/?ref_product=copilot&ref_type=engagement&ref_style=text)GitHub のブログのヒント、テクニック、ベストプラクティス\n  ```\n* [GitHub ブログ](https://github.blog/2023-07-17-prompt-engineering-guide-generative-ai-llms/)のプロンプトエンジニアリングとLLMに関する開発者向けガイド\n* ```\n            GitHub ブログで、[GitHub Copilot Chat をアクセシビリティの個人用 AI アシスタントにする方法](https://github.blog/2023-10-09-prompting-github-copilot-chat-to-become-your-personal-ai-assistant-for-accessibility/?ref_product=copilot&ref_type=engagement&ref_style=text)\n  ```"}