この記事は、夏のブログリレー25日目の記事です。
こんにちは。20Bの@Rasです。
Gitでコミットを生成するときに先頭に絵文字 (以下Emoji) を付ける「Emoji Prefix」を採用しています。
先頭につけるEmojiのルールは好みやチームの方針によって異なりますが、新規機能の実装には「✨」、バグの修正には「🐛」などを付けることが多いです。
Emoji Prefixを用いることの利点は以下のようなものです。
- 見た目が楽しい
- コミットをカテゴリーに分類することができる
- 見た目が楽しい
- 視認性の向上
- 見た目が楽しい
今回は、Emoji Prefixの詳細な説明や使い方は他のサイトに任せます。
個人的にはgitmojiがお気に入りです。
使うハードルが高い問題
Emoji Prefixを軽く紹介しましたが、現時点では以下の点が課題になり得ます。
- Emojiを変換したりピッカーから探すのに時間がかかる
- 「✨」は「きらきら」から変換することができるが毎回これをやるのは...
- 代わりに
:sparkles:
のようなスタンプ記法も使うことができるが覚えるものが増えると大変
- 使うEmojiは限られている
- 全てのEmojiの中から探すのは特に困難
Emoji Prefix用ツール参戦
これらの問題を解決するために、先ほど紹介したgitmojiのCLI版である carloscuesta/gitmoji-cli や commitizen/cz-cli (正確にはcommitizenの拡張であるngryman/cz-emoji)といったツールがあります。
これらのツールでは自分が使いたいEmojiのリストを登録して、以下のように対話形式でコミットを生成することができます。
- コミットメッセージの先頭に来るEmojiを決める
- コミットメッセージを打つ
- コミットを生成する
限られたEmojiのリストの中から探すことができ、検索も利くため先ほどの課題を解決することができます。
Emoji Prefixツールの課題
gitmoji-cliやcommitizenを使うことで、対話形式でEmoji Prefixを付けたコミットを生成することができる様になりました。
しかし、既にGitに慣れ親しんだ方からすれば、自分がこれまで使っていたコミット用エディタ(core.editor
)からこれらのツールに置き換える必要が出てきてしまいました。
@Rasはコミット用エディタにVimを使っています。
一度はcommitizenやgitmoji-cliを試しましたが、Vimでこれまで高速にできていたコミットが対話形式になったことで煩わしさを感じるようになり、再度Vimに戻ってしまいました。
$ git config --global core.editor
vim
そこで... Emoji Prefix with your core.editor
要はこれまでのコミット用エディタでコミットメッセージを打つ際に文字を打つかのようにEmojiを打つことができれば最高なわけです。
タイトル詐欺みたいですが、ここではVimでの方法のみ紹介します(@RasがコミットにVimしか使わないため)。
Vimにはabbreviation(短縮入力)の機能があります。これを使うことで快適なEmoji Prefix環境を簡単に用意することができます。
Vimの設定ファイルである.vimrc
に以下を記述します。
" git commit prefix
augroup gitabbr
autocmd!
" ✨ fe: Introduce new features.
autocmd FileType gitcommit iabbrev fe :sparkles:
" 🐛 bu: Fix a bug.
autocmd FileType gitcommit iabbrev bu :bug:
" 🩹 ad: Simple fix for a non-critical issue.
autocmd FileType gitcommit iabbrev ad :adhesive_bandage:
" ♻️ re: Refactor code.
autocmd FileType gitcommit iabbrev re :recycle:
" 💥 bo: Introduce breaking changes.
autocmd FileType gitcommit iabbrev bo :boom:
" 🔥 rm: Remove code or files.
autocmd FileType gitcommit iabbrev rm :fire:
" 🎨 fo: Improve structure / format of the code.
autocmd FileType gitcommit iabbrev fo :art:
" 💄 ui: Add or update the UI and style files.
autocmd FileType gitcommit iabbrev ui :lipstick:
" 🔧 co: Add or update configuration files.
autocmd FileType gitcommit iabbrev co :wrench:
" 📝 do: Add or update documentation.
autocmd FileType gitcommit iabbrev do :memo:
" ⬆️ up: Upgrade dependencies.
autocmd FileType gitcommit iabbrev up :arrow_up:
augroup END
autocmd FileType gitcommit iabbrev fe :sparkles:
は、ファイルタイプがgitcommit
のとき且つインサートモードのときにfe
と打つと:sparkles:
に変換されることを意味します。
これを設定すると、あまりにもスムーズにEmoji付きのコミットを生成することができます🎉
おまけ
commit.template
を設定しておくとチートができて便利です。
上の動画でも登場しています。
$ git config --global commit.template
~/.gittemplate.txt
$ cat ~/.gittemplate.txt
# ✨ fe: Introduce new features.
# 🐛 bu: Fix a bug.
# 🩹 ad: Simple fix for a non-critical issue.
# ♻️ re: Refactor code.
# 💥 bo: Introduce breaking changes.
# 🎨 fo: Improve structure / format of the code.
# 🔥 rm: Remove code or files.
# 💄 ui: Add or update the UI and style files.
# 🔧 co: Add or update configuration files.
# 📝 do: Add or update documentation.
# ⬆️ up: Upgrade dependencies.
参考
明日の担当者は@abap34です!お楽しみに!