VS Codeをお使いの皆様、ソース管理画面にある「ボタンひとつでコミットメッセージを自動生成する機能」をご存知でしょうか?
今回はこの便利な機能の概要と、デフォルト状態で抱える「欠点」について紹介します。また、その解決策として 「手直し不要でそのまま使える、自然な日本語メッセージを生成する方法」 を共有します。
Generate Commit Message とは
VS Codeのソース管理(Git)タブを開くと、コミットメッセージ入力欄の右側に 「キラキラ(Sparkle)」アイコン が表示されています。これが自動生成機能のボタンです。
どのような機能か
使い方は非常にシンプルです。
変更したファイルをステージング(Staged)した状態で、この「キラキラ」ボタンをクリックするだけです。
クリックすると、GitHub Copilotがステージングされた変更差分(diff)を解析し、その内容を要約したコミットメッセージを自動で入力欄に挿入してくれます。
Generate Commit Message の欠点
非常に便利な機能ですが、デフォルトの状態では以下のような挙動になることが多く、そのままでは使いにくいという課題があります。
-
英語で出力される
- 基本的に英語で生成されるため、日本語のプロジェクトでは手動で翻訳・修正する手間が発生します
-
フォーマットや粒度が安定しない
-
Update index.tsのような単純すぎるメッセージになったり、逆に長文の説明になったりと、出力結果に統一感がありません
-
-
Conventional Commits に従わない
-
feat:やfix:といったプレフィックスが付かないため、コミットログの管理ルールがあるプロジェクトでは採用しづらいです
-
-
意図しない絵文字が含まれる
- 設定していないのに
🐛 Fix bugのように絵文字(Emoji)が勝手に挿入されることがあります
- 設定していないのに
「便利そうだけど、結局手直しするなら自分で書いたほうが早い…」
そう思って、このボタンの使用を諦めてはいませんか?
実は、設定 をひとつ追加するだけで、これらの不満を解消できます。
解決策:Copilotにプロンプトを渡す
「英語になる」「ルールに従わない」といった問題は、Copilotに対して プロンプトを渡す ことで解決できます。
VS Codeには github.copilot.chat.commitMessageGeneration.instructions という設定項目があり、ここに生成時のルールを記述することができます。
設定 (settings.json) に直接テキストでルールを書くことも可能ですが、今回はルールを記述した別ファイル(Markdown)を読み込ませる 方法でプロンプトを渡します。
実践:Conventional Commits を参考にルールを適応
設定手順は以下の2ステップです。
- ルールの指示書(Markdownファイル)を作成する
- VS Codeの設定でそのファイルを読み込む
手順1. ルールファイルの作成
まずは、AIに守らせたいルールを記述したファイルを作成します。
作成場所は任意ですが、プロジェクトのルートディレクトリや、.github フォルダなどの管理しやすい場所をおすすめします。
本記事では例として、.github/commit-instructions.md というファイル名で作成します。
作成したファイルに、以下の内容をそのままコピー&ペーストしてください。
「Conventional Commits v1.0.0 (日本語)」の仕様を参考にしつつ、必ず日本語で出力するように定義しています。
# コミットメッセージ作成ガイド
本プロジェクトは [Conventional Commits 1.0.0](https://www.conventionalcommits.org/ja/v1.0.0/) に準拠しています。
## コミットメッセージの基本構造
```text
<type>[scope]: <description>
[本文(任意)]
[フッター(任意)]
```
### 例
```text
feat: ユーザー検索機能を追加
ユーザー名とメールアドレスで検索できるようにした
```
## Type の選び方
コミット内容に応じて適切な Type を選択してください。
| Type | 用途 | 例 |
| ------------ | ------------------------------ | ---------------------------------------------- |
| **feat** | 新機能の追加 | `feat: ログイン機能を追加` |
| **fix** | バグ修正 | `fix: ログアウト時のエラーを修正` |
| **docs** | ドキュメントの変更のみ | `docs: READMEのセットアップ手順を更新` |
| **style** | コードの意味に影響しない変更 | `style: インデントを修正` |
| **refactor** | リファクタリング | `refactor: ユーザー取得処理を関数化` |
| **perf** | パフォーマンス改善 | `perf: データベースクエリを最適化` |
| **test** | テストの追加・修正 | `test: ログイン機能のテストを追加` |
| **build** | ビルドシステムや依存関係の変更 | `build: TypeScriptのバージョンを更新` |
| **ci** | CI 設定の変更 | `ci: GitHub Actionsのワークフローを修正` |
| **chore** | その他の変更 | `chore: 未使用のファイルを削除` |
| **revert** | コミットの取り消し | `revert: "feat: ログイン機能を追加"を取り消し` |
## Scope(任意)
変更の範囲を明示する場合は、Type の後に括弧で指定します。
```text
feat(auth): パスワードリセット機能を追加
fix(api): ユーザー削除のエンドポイントを修正
```
## 破壊的変更
既存の機能に影響する変更の場合は、以下のいずれかの方法で明示します。
### 方法 1: Type に `!` を付ける
```text
feat!: APIのレスポンス形式を変更
```
### 方法 2: フッターに記載
```text
feat: APIのレスポンス形式を変更
BREAKING CHANGE: レスポンスの構造が変わったため、クライアント側の修正が必要
```
## 記述ルール
- **言語**: 日本語で記述する
- **絵文字**: 使用しない
- **句点**: ヘッダー(1 行目)の末尾に句点(。)を付けない
- **文体**: 簡潔に記述する(「〜を追加」「〜を修正」など)
手順2. VS Codeの設定で読み込む
作成したファイルをCopilotに読み込ませます。 VS Codeの settings.json を開き、以下の設定を追加します。
"github.copilot.chat.commitMessageGeneration.instructions": [
{
"file": ".github/commit-instructions.md"
}
]
動作確認
設定が完了したら、適当なファイルを変更してステージングし、いつもの「キラキラ」ボタンを押してみましょう。
すると、以前のような英語の短文ではなく、指定したルール通りのメッセージが自動入力されるはずです。
導入して感じたメリット
この設定を導入してから、単にメッセージ作成が楽になっただけでなく、開発プロセス自体に良い変化が生まれました。
1. コミットの頻度と質が向上する
以前は「コミットメッセージを考えるのが面倒」という理由で、複数の変更をまとめてコミットしてしまうことがありました。
しかし、AIが自動生成してくれるようになると、「コミット作業」に対する心理的ハードルがかなり下がります。
AIに正確な要約をさせるためには、一度の変更内容(diff)をシンプルに保つ必要があります。その結果、「AIが理解しやすい粒度 = レビューアも理解しやすい粒度」 でこまめにコミットを打つ習慣が自然と身につきました。
2. チーム全体でルールを統一しやすい
今回作成したルールファイル(Markdown)をリポジトリに含めることで、チームメンバー全員が全く同じ基準でコミットメッセージを生成できるようになります。
「人によってフォーマットがバラバラ」といった悩みも、設定ファイルを共有するとことである程度統一されるのではないでしょうか。
さいごに
コミットメッセージを考える時間は、一回一回は短くても、積み重なれば無視できないコストになります。何より、言語化のために一度思考を止めることは、開発の集中力を削ぐ原因にもなります。
この設定を入れておくだけで、思考のスイッチを切り替えることなく、作業に没頭し続けることができます。
ぜひ、試してみてください!
参考文献
-
Conventional Commits v1.0.0 (日本語)
- 記事内で設定したコミットメッセージの仕様(feat, fix等の定義)です
-
Visual Studio Code - GitHub Copilot Chat
- VS CodeにおけるCopilot機能(コミット生成機能含む)の公式ドキュメントです


