# プロンプト ナレッジシェア

{% hint style="info" %}
このドキュメントはまだ検証中です。[GitHub の Issue](https://github.com/AI-Native-Development/docs/issues/8) で積極的に議論をかわすことを期待しています。
{% endhint %}

## Description

コードを生み出すためのプロンプトを共有し、チームメンバーが学ぶためのリソースとして活用することが重要です。

## Problem

GitHub CopilotのようなAIと一緒に開発することで、高品質なコードが書けるようになりますが、上級エンジニアにとって素晴らしいコードやパフォーマンスの良いコードがコードリーディングにとって良いコードかどうかは違う話です。 過度に省略されたコードや、言語特有の高度な表現でプログラムが表される場合、特定領域におけるエンジニアのコラボレーションが難しくなる可能性があります。

## Story

あなたはGitHub Copilotを使いこなすために、どのようなプロンプトを書けば良いかを模索しています。上級エンジニアのあなたはとある機能の実装で、試行錯誤の末、GitHub Copilot と協働して素晴らしいコードをうみだします。 それを隣の席で見ていた同じチームのエンジニアが言いました。 「いつもそんな感じで書いていたんですね！どうやってあなたがいつも素晴らしいコードを生み出すのか、今ちょっとわかった気がします。」

あなたは試行錯誤して最高の出力に辿り着いた時のプロンプトや、その試行錯誤のプロセス自体が、チームメンバーが学ぶための重要なリソースであることに気づきました。 それと同時に成果物のファイルにはプロンプトが入っていないことの問題を発見すると同時に、どのように共有したら良いのかを考え始めました。

## Context

GitHub Copilot は導入されましたが、各エンジニアが個別に使っているだけで使い方は共有されていません。 また、各エンジニアが GitHub Copilot の中で書いたプロンプトは共有されていません。

## Solution

チームでプロンプトの共有方法やコメントの書き方を検討し、ルールを策定します。プロンプトが残っていることでノイズにならないように、ドキュメントとしても機能するコメントにすることが望ましいです。

プロンプトの共有に関しては以下のパターンが考えられます。

* ファイルに直接記入 プロンプトをチームが学習するためにファイルに残しておくことで、チームが他のメンバーのプロンプトから学ぶことができます。プロンプトが残っていることでノイズにならないように、適切なバランスでプロンプトを残すことが大切です。また、一部をプロンプトの形ではなくドキュメントや解説コメントに変換することも考えられます。また、コードレビューの際に合わせてプロンプトもレビューすることができるようになり、エンジニアの育成が促進されます。
* パッシブドキュメンテーション プルリクエストや Issues のコメントとして一部のプロンプトを含めます。コードが含まれるファイルの読みやすさは向上しますが、エディタの中で参考のプロンプトを参照することはできません。
* モブプログラミング プロンプトをファイルや PR/Issues の中に残さない一方で、上級エンジニアの開発現場を体験するためのモブプログラミングセッションを開催します。ここでの学びをドキュメントとして別途共有することが重要です。

## Resulting Context

チーム全体のスキルが向上し、プロンプトの共有を通じて効果的な学習が促進されます。 コードの可読性が向上し、プロンプトのレベルではなくドキュメントとしても機能するコメントによって、コードの理解が容易になります。
