Conventional Commits with Gitmoji ドキュメント
本ドキュメントでは、チームで Conventional Commits を導入するときのポイントや、VS Code 拡張機能・Gitmoji との組み合わせ方法をまとめます。
1. Conventional Commits とは
Conventional Commits は、コミットメッセージに一定の規則を設けることで、変更履歴を自動解析しやすくし、以下のようなメリットをもたらす規約です。
- CHANGELOG の自動生成が容易になる
- セマンティック バージョニング (SemVer) に基づく自動バージョンアップが可能
- 変更内容を簡潔かつ分かりやすく伝えられる
- CI/CD やリリースワークフローを自動化しやすくなる
2. 目的と導入メリット
-
一貫性のあるコミットメッセージ
- 誰が見てもコミットの意図がひと目でわかる
-
セマンティック バージョニングとの連携
-
fix-> パッチリリース (PATCH) -
feat-> マイナーリリース (MINOR) -
BREAKING CHANGE-> メジャーリリース (MAJOR)
-
-
自動化のしやすさ
- リリースノート生成、バージョン更新、ビルドやデプロイなどの自動化を促進
-
開発者体験 (DX) の向上
- チーム全員がコミット内容を把握しやすく、新規参加者にも優しい
3. VS Code 拡張機能「Conventional Commits」
VS Code 拡張機能を利用することで、簡単に始めることができます。
3.1 機能概要
- コマンドパレットから簡単に
typeやscope、descriptionを入力できるインターフェースを提供 - コミットメッセージのフォーマットを自動補完
- 破壊的変更の指定 (! や BREAKING CHANGE) もサポート
3.2 インストール手順
- VS Code の「拡張機能」ビューを開く
-
vivaxy conventional commitsで検索 - 「Install」ボタンをクリックしてインストール
- 拡張機能が有効になっていることを確認
3.3 使い方
- 変更ファイルをステージング (
git add .など) - VS Code のコマンドパレット(
Ctrl + Shift + PまたはCmd + Shift + P)を開く - Conventional Commits を選択
- プロンプトに沿って
type,scope,descriptionなどを入力 - 必要に応じて body や footer、Gitmoji を含めたコミットメッセージを完成させる
- コミットを実行
4. Conventional Commits の基本構文
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
- type: feat, fix, docs, style など (詳細は後述)
-
scope (任意): 対象となるモジュールやコンポーネント名を
( )で囲んで指定 - description: 変更内容を短文で説明
- body (任意): 詳細な説明や背景情報などを記載 (空行を挟んで複数段落 OK)
-
footer (任意): Issue 参照や
BREAKING CHANGE: ...などを記載
4.1 破壊的変更(Breaking Change)の記述方法
-
type!で明示する (例:feat!: ...) - footer に
BREAKING CHANGE: ...と記述
どちらか一方または両方の書き方で メジャーリリース 判定が可能です。
5. type 一覧
type は以下のとおりです。
(セマンティック バージョニング上の自動バージョン更新対象は feat, fix, および BREAKING CHANGE のみ)
- feat: 新機能や目に見える拡張
- fix: バグ修正やセキュリティ修正
- docs: ドキュメントやコメント変更
- style: コードやUIの見た目・書式のみの変更
- refactor: コードの再構成(機能・動作は変えない)
- perf: パフォーマンス改善
- test: テストの追加・更新
- build: ビルドシステムや依存関係の変更
- ci: CI(継続的インテグレーション)関連の変更
- chore: 上記いずれにも当てはまらない雑多な変更
- revert: 以前のコミットを元に戻す
6. Gitmoji の活用
Gitmoji をコミットメッセージ内で活用すると、変更内容を視覚的に分かりやすくなります。
以下に、type 別に主に利用される絵文字を記載します。
6.1 feat (新機能)
機能追加やユーザーにとって目に見える変更・拡張など。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| 🎉 | :tada: |
Begin a project. | プロジェクトを開始する |
| 📈 | :chart_with_upwards_trend: |
Add or update analytics or track code. | アナリティクスやトラッキングコードを追加・更新する |
| 🌐 | :globe_with_meridians: |
Internationalization and localization. | 多言語対応・ローカライズ対応 |
| 🍱 | :bento: |
Add or update assets. | 画像や動画などのアセットを追加・更新する |
| ♿️ | :wheelchair: |
Improve accessibility. | アクセシビリティを改善する |
| 💬 | :speech_balloon: |
Add or update text and literals. | テキストや文字列を追加・更新する |
| 🗃️ | :card_file_box: |
Perform database related changes. | データベース関連の変更を行う |
| 🚸 | :children_crossing: |
Improve user experience / usability. | ユーザーエクスペリエンスや使い勝手を改善する |
| 📱 | :iphone: |
Work on responsive design. | レスポンシブデザインを扱う |
| 🥚 | :egg: |
Add or update an easter egg. | イースターエッグを追加・更新する |
| 🔍️ | :mag: |
Improve SEO. | SEO を改善する |
| 💫 | :dizzy: |
Add or update animations and transitions. | アニメーションやトランジションを追加・更新する |
| 🛂 | :passport_control: |
Work on code related to authorization, roles and permissions. | 認可・ロール・権限管理に関するコードを実装・修正する |
| 👔 | :necktie: |
Add or update business logic. | ビジネスロジックを追加・更新する |
| 🩺 | :stethoscope: |
Add or update healthcheck. | ヘルスチェックを追加・更新する |
6.2 fix (バグ修正)
既存機能の不具合修正や、壊れた挙動を直す変更など。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| 🐛 | :bug: |
Fix a bug. | バグを修正する |
| 🚑️ | :ambulance: |
Critical hotfix. | 緊急の修正 |
| 🔒 | :lock: |
Fix security issues. | セキュリティ問題を修正する |
| 🚨 | :rotating_light: |
Fix compiler / linter warnings. | コンパイラやリンターの警告を修正する |
| 👽 | :alien: |
Update code due to external API changes. | 外部 API の変更に対応してコードを修正する |
| 🥅 | :goal_net: |
Catch errors. | エラーをキャッチして処理する |
6.3 docs (ドキュメント)
ドキュメントやコメント、ライセンス、コントリビューター情報など、ドキュメンテーションに関する変更。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| 📝 | :memo: |
Add or update documentation. | ドキュメントを追加・更新する |
| ✏️ | :pencil2: |
Fix typos. | 誤字を修正する |
| 📄 | :page_facing_up: |
Add or update license. | ライセンスを追加・更新する |
| 💡 | :bulb: |
Add or update comments in source code. | ソースコードのコメントを追加・更新する |
| 👥 | :busts_in_silhouette: |
Add or update contributor(s). | コントリビューターを追加・更新する |
| 🧑🏫 | :teacher: |
Add or update educational content. | 教育用コンテンツを追加・更新する |
6.4 style (スタイル)
コードのフォーマットや見た目のみの修正など、機能やロジックに影響しない変更。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| 🎨 | :art: |
Improve structure / format of the code. | コードの構造やフォーマットを改善する |
| 🧑🎨 | :artist: |
Add or update UI styles. | UI のスタイルを追加・更新する |
| ✏️ | :pencil2: |
Fix typos. | 誤字を修正する (ソースコードの場合) |
6.5 refactor (リファクタリング)
バグ修正でも新機能でもない、動作を変えずにコードを整理・改善する変更。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| 🔥 | :fire: |
Remove code or files. | コードやファイルを削除する |
| ♻️ | :recycle: |
Refactor code. | コードをリファクタリングする |
| 🚚 | :truck: |
Move or rename resources. | リソースを移動 / リネームする |
| 🏗️ | :building_construction: |
Make architectural changes. | アーキテクチャの変更を行う |
| 🏷️ | :label: |
Add or update types. | 型定義を追加・更新する |
| 🗑️ | :wastebasket: |
Deprecate code that needs to be cleaned up. | 今後削除予定のコードを非推奨にする |
| ⚰️ | :coffin: |
Remove dead code. | 使われていないコードを削除する |
6.6 perf (パフォーマンス改善)
パフォーマンスを向上させるための変更。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| ⚡️ | :zap: |
Improve performance. | パフォーマンスを向上させる |
| 🏎️ | :racing_car: |
Improve performance. | パフォーマンスをさらに改善する |
6.7 test (テスト)
テストの追加・修正など。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| ✅ | :white_check_mark: |
Add or update tests. | テストを追加・更新する |
| 🤡 | :clown_face: |
Mock things. | モックを作成・更新する |
| 📸 | :camera_flash: |
Add or update snapshots. | スナップショットを追加・更新する |
| 🥽 | :goggles: |
Add or update tests related to security or cryptography. | セキュリティや暗号に関連するテストを追加・更新する |
| ⚖️ | :balance_scale: |
Add or update tests for legal or licensing aspects. | 法的・ライセンス上のテストを追加・更新する |
| 🧪 | :test_tube: |
Add a failing test. | あえて失敗するテストを追加する |
6.8 build (ビルド)
ビルドシステムや依存関係、パッケージなどに関する変更。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| ⬇️ | :arrow_down: |
Downgrade dependencies. | 依存関係をダウングレードする |
| ⬆️ | :arrow_up: |
Upgrade dependencies. | 依存関係をアップグレードする |
| 📌 | :pushpin: |
Pin dependencies to specific versions. | 依存関係を特定バージョンに固定する |
| ➕ | :heavy_plus_sign: |
Add a dependency. | 依存関係を追加する |
| ➖ | :heavy_minus_sign: |
Remove a dependency. | 依存関係を削除する |
| 📦 | :package: |
Add or update compiled files or packages. | コンパイル済みファイルやパッケージを追加・更新する |
| 🐳 | :whale: |
Work on Docker. | Docker まわりの作業をする |
| 🧑🔧 | :mechanic: |
Add or update code related to tooling. | ツールに関連するコードを追加・更新する |
| 🧑🏭 | :factory_worker: |
Add or update code related to build processes. | ビルドプロセスに関連するコードを追加・更新する |
| 🧑🚀 | :astronaut: |
Add or update code related to deployment. | デプロイに関連するコードを追加・更新する |
| 🧱 | :bricks: |
Infrastructure related changes. | インフラストラクチャに関する変更を行う |
6.9 ci (継続的インテグレーション)
CI(Continuous Integration)や関連する設定・スクリプトの変更。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| 💚 | :green_heart: |
Fix CI build. | CI のビルドを修正する |
| 👷 | :construction_worker: |
Add or update CI build system. | CI ビルドシステムを追加・更新する |
| 🧑✈️ | :pilot: |
Add or update code related to automation. | 自動化に関連するコードを追加・更新する (CI用途など) |
6.10 chore (その他)
ソースコードやテストには直接影響しない雑多な作業、またはビジネスロジックや新機能でもない小変更など。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| 🚀 | :rocket: |
Deploy stuff. | デプロイを行う(※ビルドやCI以外の作業として分類) |
| 🔐 | :closed_lock_with_key: |
Add or update secrets. | 秘密情報を追加・更新する |
| 🔖 | :bookmark: |
Release / Version tags. | リリース用やバージョン用のタグを付ける |
| 🚧 | :construction: |
Work in progress. | 作業中 (WIP) |
| 🔧 | :wrench: |
Add or update configuration files. | 設定ファイルを追加・更新する |
| 🔨 | :hammer: |
Add or update development scripts. | 開発用スクリプトを追加・更新する |
| 💩 | :poop: |
Write bad code that needs to be improved. | 改善が必要な悪いコードを書く (ジョーク) |
| 🔀 | :twisted_rightwards_arrows: |
Merge branches. | ブランチをマージする |
| 🍻 | :beers: |
Write code drunkenly. | 酔った状態でコードを書く (ジョーク) |
| 🔊 | :loud_sound: |
Add or update logs. | ログ出力を追加・更新する |
| 🔇 | :mute: |
Remove logs. | ログ出力を削除する |
| 🙈 | :see_no_evil: |
Add or update a .gitignore file. |
.gitignore を追加・更新する |
| ⚗️ | :alembic: |
Perform experiments. | 実験的な実装をする |
| 🌱 | :seedling: |
Add or update seed files. | シードファイルを追加・更新する |
| 🧐 | :monocle_face: |
Data exploration/inspection. | データの探索・検証を行う |
| 🧑💻 | :technologist: |
Improve developer experience. | 開発者体験(DX) を改善する |
| 🧑🔬 | :scientist: |
Add or update code related to experiments. | 実験に関連するコードを追加・更新する |
6.11 revert (元に戻す)
以前のコミットを取り消す場合など。
| Emoji | コード | 英語 (原文) | 日本語訳 |
|---|---|---|---|
| ⏪ | :rewind: |
Revert changes. | 変更を元に戻す |
7. コミットメッセージ例
-
新機能追加 (feat) + Gitmoji
feat: :tada: プロジェクトを初期セットアップ-
type: feat - Gitmoji:
:tada:(プロジェクト開始や大きな節目)
-
-
バグ修正 (fix) + 破壊的変更 (Breaking Change)
fix!: :bug: ログイン時の致命的なバグを修正 BREAKING CHANGE: ログイン API のエンドポイントを変更しました-
type!: fix! (破壊的変更) - Gitmoji:
:bug:(一般的なバグ修正) - footer で
BREAKING CHANGEを明示
-
-
ドキュメント修正 (docs) + ボディあり
docs: :memo: 使用方法ドキュメントを追記 変更点: - インストール手順を詳細化 - 環境変数のサンプルを追加-
type: docs - Gitmoji:
:memo:
-
-
スタイル修正 (style)
style: :art: コードフォーマットを Prettier で自動整形 -
リファクタ (refactor) + scope 指定
refactor(auth): :recycle: 認証ロジックをクラスベースにリファクタリング -
ビルド変更 (build)
build: :arrow_up: TypeScript を 4.x にアップグレード
8. 運用上の注意
-
コミットを小さく保つ
- 1つのコミットで複数の関係ない変更をまとめない
-
コミットタイプの誤り
- マージ前なら
git rebase -iで修正 - リリース後はツールやプロセスに応じて対応
- マージ前なら
-
すべてのコミッターに強要はしない
- 必要に応じてスクワッシュ (squash) やリードメンテナーがコミットメッセージを修正してもよい
-
拡張ルールはセマンティック バージョニングで管理
- チーム独自のタイプ追加などを行う場合は、必要に応じてドキュメント化する
9. まとめ
- Conventional Commits はコミットメッセージの規約化により、開発効率とリリース管理を向上させる仕組み
- VS Code 拡張機能 (vivaxy) を活用することで、入力補助やテンプレートが利用可能
- Gitmoji を組み合わせることで、コミット内容を視覚的・直感的に把握しやすくなる
-
feat,fix,docs,style,refactor,perf,test,build,ci,chore,revertの 11 タイプを採用 - 破壊的変更がある場合は
!やBREAKING CHANGE: ...を必ず明示すること