🦉

セルフチェックとプルリクを同時に!効率的なプロンプト活用法

2024/06/26に公開
  • PRを書く際にどう書けばいいのか?
  • 情報が過不足なくreviewerに伝えられているか不安になる。
  • PRの構成は決まっているけど内容書くのが少し面倒

PRを出す際に上記を感じた経験はありませんか。
そういった悩みを解決するべく、ある程度Chatgptに叩きを作ってくれるような構成でテンプレートを考えました。
主に、「セルフチェック」と「PR内容の記載」を同時にやってくれるものになっています。


テンプレート構成について

OSSのCONTRIBUTED.mdを参考にしたり、普段の開発業務の中で欲しいと思う項目をまとめました。
また、Chatgpt4に叩きを作ってくれやすい構成であることを意識ましした。

テンプレートの構成は下記になります

  • プロンプトへの指示
  • 実施したこと
  • 出力のテンプレート
あなたはプロのエンジニアです。
タスク1
* 実施したことの内容に、不備や気になる点があれば指摘してください。
* 指摘内容に加えて、あなたの意見も述べてください。

タスク2
* タスク1の内容をもとに、テンプレートに当てはめてください。

---実施したこと---
* タスクのタイトル
* やりたいこと
* タスクを実施する理由
* 関連するissue
* 変更内容
* 動作確認
    * 前提条件
    * 動作確認内容
* その他
* ソースコード

---テンプレート---
## 概要
プルリクエストを作成する際に、全体の目的や背景を簡潔に伝えるために使用。

記載内容:
* このプルリクエストで解決する問題や実現する機能の概要
* 変更の背景や理由
* 簡単な説明(数行程度)

<!-- このプルリクエストが解決する問題や実装内容の概要を記述してください。 -->

## 関連するIssue
プルリクエストが特定のIssueに関連している場合、そのIssueを明示するために使用。

記載内容:
* プルリクエストが解決するIssueの番号やリンク
* 複数のIssueが関連する場合は、それらを列挙

<!-- 関連するIssueのリンクを記載してください。 -->
- #1
- #2

## 変更内容
プルリクエストで行った具体的な変更点を詳細に説明するために使用。

記載内容:
* 追加、変更、削除した機能やコードの具体的な内容
* 各変更点を箇条書きで記載

<!-- 具体的な変更点や追加した機能を箇条書きで記載してください。 -->

## 動作確認
プルリクエストの変更が正しく動作することを確認するために使用。

記載内容:
* 動作確認手順
* 具体的な確認内容
* 必要な環境や前提条件

<!-- 動作確認手順や確認した内容を記載してください。 -->
1.
2.

## スクリーンショット(あれば)
変更点が視覚的に確認できる場合に使用します。特にUIの変更など。

記載内容:
* 変更点に関するスクリーンショットや動画
* 必要に応じて説明を追加

<!-- 変更点に関するスクリーンショットや動画があれば添付してください。 -->

## その他
上記のセクションに含まれない追加情報や注意点がある場合に使用。

記載内容:
* レビュワーに伝えたいその他の情報
* 注意点や既知の問題
* 今後の改善点や対応が必要な事項
<!-- その他、レビュワーに伝えたいことや注意点などがあれば記載してください。 -->

運用方法について

紹介したテンプレートの使用方法を記載します。
自身が着手したタスクでやったことを、テンプレートの内容をもとに下記の内容を書き連ねます。

  • タスクのタイトル
  • やりたいこと
  • タスクを実施する理由
  • 関連するissue
  • 変更内容
  • 動作確認
    • 前提条件
    • 動作確認内容
  • その他

今回は「Todoのリアルタイム同期機能の追加」のタスクについて記載します。
そして、記載した内容を消化したテンプレートの「実施したこと」に記載してchatgpt 4oに投げます。

* タスクのタイトル
    * Todoのリアルタイム同期機能の追加
* やりたいこと
    * リアルタイムで他のデバイスと同期する機能を追加したい。
* タスクを実施する理由
    * 複数のデバイスからTodoリストを管理するユーザーにとって、変更がすぐに反映されることは非常に便利だからです。また、複数のユーザーが共同でTodoリストを管理する場合にも役立ちます。
* 関連するissueはなし
* 変更内容
    * Firebase Realtime Databaseの導入
    * データ更新のリスナー設定キャスト
* 動作確認前提条件
    * Firebaseアカウント
    * Firebase SDKの設定
* 動作確認内容
    * デバイス間の同期確認
    * ユーザー間の同期確認
* 注意点やレビュワーに伝えたいこと
    * 大量のデータ同期によるパフォーマンス低下に注意し、最適化を行う。

結果

# タスク1
## 指摘事項
1. Firebase Realtime Databaseの導入について
    * 具体的にどのように導入したか、手順やコードの詳細が記載されていない。
    * Firestoreとの比較を行い、選定理由が記載されていない。
2. データ更新のリスナー設定キャストについて
    * 「リスナー設定キャスト」という表現が曖昧。具体的にどのような設定を行ったのか不明。
3. 動作確認前提条件について
    * FirebaseアカウントとSDKの設定に関する詳細な手順が不足している。
4. 動作確認内容について
    * 同期確認の具体的なテストケースや手順が記載されていない。
5. 注意点やレビュワーに伝えたいことについて
    * パフォーマンスの最適化に関する具体的な手法や実施内容が不足している。

## 意見
* Firebase Realtime Databaseを選定した理由を明確にし、Firestoreとの比較を行うことで、技術選定の背景をレビュワーに伝えることが重要です。
* データ更新のリスナー設定については、具体的なコード例や設定手順を記載することで、レビュワーが理解しやすくなります。
* 動作確認手順は具体的なテストケースを含めることで、確実に動作確認が行えるようにするべきです。
* パフォーマンスの最適化については、具体的な手法や改善点を記載し、レビュワーがその効果を評価できるようにすることが重要です。
タスク2

## 概要
このプルリクエストでは、Todoリストのリアルタイム同期機能を追加しました。Firebase Realtime Databaseを導入し、複数のデバイスおよびユーザー間での変更がリアルタイムで反映されるようにしました。この変更により、複数デバイスからのアクセスや共同管理がより便利になります。

## 関連するIssue
関連するIssueはありません。

## 変更内容
* Firebase Realtime Databaseの導入
    * Firestoreとの比較を行い、リアルタイム性を重視してRealtime Databaseを選定
    * Firebase SDKの設定と初期化
* データ更新のリスナー設定
    * Realtime Databaseのリスナーを設定し、データ変更を検知するコードを追加
    * 具体的なリスナー設定のコード例

## 動作確認
1. Firebaseアカウントの作成とプロジェクトの設定
2. Firebase SDKのインストールと初期設定
3. 複数のデバイス間でのTodoリストの変更がリアルタイムに同期されることを確認
4. 複数ユーザー間でのTodoリストの変更がリアルタイムに同期されることを確認

## スクリーンショット(あれば)
変更点に関するスクリーンショットや動画を追加してください。

## その他
* 大量のデータ同期によるパフォーマンス低下に注意し、最適化を行いました。例えば、データのバッチ更新や不要なリスナーの削除を実施しています。
* レビュワーに伝えたいこととして、同期機能の最適化に関する具体的な手法や検討した改善点を共有します。

結果から、下記の二つを同時に作成してくれました。
タスク1 - 自身の実施内容についてセルフチェック
タスク2 - 現状からプルリク内容を作成。

今回は、「指摘」や「意見」にある通り、具体的な内容をある程度省いたため、抽象的なところがしっかりアドバイスされています。
またその時点の情報でできるかぎりプルリクも作成してくれました。

もし、「指摘」や「意見」で追加で実施したタスクや調査内容がありましたら、それらの意見も踏まえ再度テンプレートを用いて実施する流れになります。

まとめ

普段プルリクエストを作成する際に直面する不安や迷いをできる限り払拭するように、具体的なテンプレートとその活用方法を紹介しました。今後の開発の助けに少しでもなれば幸いです。

今後

やはりプロンプトの情報量が結果の質を上げるの為の肝になります。
プロンプトには、できるだけ詳細な説明を取り入れ、今回のテンプレートをよしなに拡張していただければと思います。

Discussion