個人開発を進める中で、「コミットメッセージを毎回ちゃんと書きたいけど、レビューしてくれる人がいない」という課題にぶつかりました。
そこで、ChatGPTにコミットメッセージのレビューを依頼する運用を作りました。
ただ、毎回同じ依頼文を書くのは面倒です。そこで、依頼テンプレートをVSCodeのsnippetに登録し、すぐ呼び出せるようにしました。
この記事では、以下を紹介します。
- VSCodeのsnippetにレビュー依頼テンプレを登録する方法
- Markdownでサジェストが出ない場合の設定
- 実際にどう運用しているか
仕事でソフトウェア開発を行うことを目標にしている人や、個人開発でも実務に近いGit運用を意識したい人に向けて書いています。
なぜAIにレビューを依頼しようと思ったか
現在私は、個人開発をしながらソフトウェア開発を学んでいます。
仕事でソフトウェア開発を行うことが目標であるため、個人開発においても実務に近い流れを意識しています。
その一つが、Gitの履歴をきちんと残すことです。
コードが動くことはもちろん大事ですが、後から履歴を見返したときに、何のためにその変更をしたのか分かる状態にしておきたいと考えています。
そのため、コミットは適切な粒度で切り、メッセージもできるだけ正確に書きたいです。
しかし、個人開発ではレビューを依頼できる相手がいないことも多いです。
そこでChatGPTにレビューを依頼することにしました。
とはいえ、毎回依頼文を書くのは手間です。
そのため、レビュー依頼用のテンプレートをVSCodeのsnippetに登録しました。
テキストファイルに保存してコピペする方法でもよかったのですが、せっかくならエディタ上でそのまま呼び出せる形にしたほうが運用しやすいと考えました。
User Snippetsにテンプレ文を登録する
VSCodeのUser Snippetsを使うと、自分専用の定型文テンプレートを登録できます。
登録しておけば、コード補完と同じ感覚でテンプレを呼び出せます。
設定手順は以下のとおりです。
-
Ctrl + Shift + Pで「Snippets: Configure Snippets」を開く - 作成場所を選ぶ
- グローバルに登録する場合はそのまま進む
- Markdownファイルでのみ使いたい場合は
markdownを選ぶ
- 任意のファイル名を入力する
- 以下のJSONを記入する
{
"Git commit review prompt": {
"prefix": "gitreview",
"body": [
"以下の staged change に対するコミットメッセージをレビューしてください。",
"",
"目的:",
"$1",
"",
"変更ファイル:",
"$2",
"",
"変更要約:",
"- $3",
"",
"候補コミットメッセージ:",
"$4",
"",
"見てほしい点:",
"1. このコミット粒度は自然か",
"2. メッセージは変更内容を正確に表しているか",
"3. より実務的で一貫した表現があれば修正案を1〜3個ください",
"4. 過不足があれば厳しめに指摘してください"
],
"description": "Prompt template for reviewing git commit messages with AI"
}
}
保存後、VSCode上で gitreview と入力すると候補に表示されます。
$1 や $2 はプレースホルダーです。
展開後に Tab を押すと、順番にその位置へカーソルが移動します。
サジェストが出ない場合
環境によっては、Markdownファイルでのサジェストが無効になっています。
その場合は、以下の設定を追加します。
-
Ctrl + Shift + Pで「Preferences: Open Remote Settings (JSON)」を開く- WSL2上にプロジェクトフォルダを置いている場合は
Remote Settingsに設定しました - 環境によっては
User SettingsやWorkspace Settingsに書く形でもよいです
- WSL2上にプロジェクトフォルダを置いている場合は
- 以下のJSONを追記する
{
"editor.snippetSuggestions": "top",
"editor.suggest.showSnippets": true,
"editor.tabCompletion": "on",
"[markdown]": {
"editor.quickSuggestions": {
"other": true,
"comments": true,
"strings": true
},
"editor.suggest.showSnippets": true,
"editor.snippetSuggestions": "top"
}
}
運用フロー
初回のみ行うこと
- Gitレビュー専用チャットを作成する
- 後述の初回固定プロンプトを送る
コミットのたびに行うこと
- 変更を作る
- 今回の1コミットの意味を決める
- その範囲だけステージングする
-
git diff --cachedでステージング済みの変更を確認する - 変更内容を自分の言葉で要約する
- snippetでレビュー依頼テンプレを展開する
- 目的・変更ファイル・変更要約・候補コミットメッセージを記入する
- Gitレビュー専用チャットに送る
- 必要なら修正して再レビューする
- コミットする
変更要約を書くのが面倒な場合は、git diff --cached の内容をそのままChatGPTに渡してレビューしてもよいと思います。
私は、変更差分も合わせて見せたことで「そのコミットメッセージだと変更内容とズレている」と指摘される場面があり、学びになることがありました。
また、git diff --cached の内容があれば、コミット粒度が適切でない場合についても指摘してくれます。
初回固定プロンプト
チャットの最初に送るプロンプトも用意しました。
同じチャットを長く使い続けると、少しずつ処理が重くなっていきます。
そのため、私は適度なタイミングで新しいチャットを作り、このプロンプトから再開しています。
このチャットは Gitレビュー専用です。
目的は、個人開発の git 履歴を、実務相当の読みやすさに整えることです。
レビューでは以下を優先してください。
1. 1コミット1意味になっているか
2. コミットメッセージが変更内容を正確に表しているか
3. 履歴全体で表現や粒度が一貫しているか
4. 曖昧な表現(fix, update, modify など)は厳しめに指摘すること
形式は type(scope): summary を優先します。
必要なら、粒度の分割案も出してください。
この運用を使ってみての感想
snippetへの定型文登録はかなり便利でした。
最初はテキストファイルをプロジェクト内に置いて、そこから毎回コピペしていましたが、明らかに手間が減りました。
また、レビュー時に git diff --cached の内容も合わせて渡すことで、次のような指摘を受けやすくなりました。
- このコミットメッセージだと変更内容を十分に表せていない
- この粒度なら分けたほうが自然
- この変更なら
featよりdocsの方が近い - scope をもう少し具体化した方がよい
コミットメッセージそのものを直すだけでなく、コミットの切り方や要約の仕方も含めて壁打ちできるのがよかったです。
結果として、少しずつ「どういうコミットメッセージが自然か」の感覚も身についてきました。
参考:コミットメッセージの形式
私はコミットメッセージを type(scope): summary の形式で書くようにしています。
例:
docs(er): 物理ER図にrequestsテーブルを追加
feat(auth): ロールベースの認可を追加
fix(db): approvalsテーブルの外部キーを修正
test(api): 承認フローの統合テストを追加
よく使うtype / scope 一覧
よく使うtype
| type | 用途 |
|---|---|
feat |
機能追加 |
fix |
バグ修正 |
refactor |
振る舞いを変えない整理 |
test |
テスト追加・修正 |
docs |
ドキュメント更新 |
chore |
雑多な保守作業 |
ci |
CI設定変更 |
build |
依存関係・ビルド・Docker関連 |
perf |
性能改善 |
revert |
変更取り消し |
よく使うscope
| scope | 対象 |
|---|---|
repo |
リポジトリ全体 |
readme |
README |
er |
ER図 |
api |
API層 |
auth |
認証・認可 |
db |
DB設計・制約 |
domain |
ドメインモデル |
service |
業務ロジック |
frontend |
フロントエンド全般 |
docker |
Docker |
ci |
CI |
infra |
インフラ |
terraform |
Terraform |
おわりに
コミットメッセージは、動作そのものには直接影響しません。
ただ、後から履歴を見返したときに、なぜその変更をしたのか分かる状態になっていると、自分自身の振り返りにも役立ちます。
特に個人開発では、レビューしてくれる人がいないまま進めることも多いです。
その場合でも、ChatGPTに差分と候補メッセージを渡すだけで、コミット粒度や表現のズレを確認できます。
毎回依頼文を書くのが面倒で続かない場合は、VSCode snippetに登録しておくとかなり楽になります。

