LiBz Tech Blog

LiBの開発者ブログ

GitのコミットメッセージにEmoji Prefixを使ってテンションをあげたい話🕺💃🕺💃

🔖目次

🙋はじめに

はじめまして❗
2018年11月よりLiBでエンジニアをしている渡邊です。

前職ではチームラボという会社に新卒で入社し、約1年間半ほど受託開発をしていました。
社会人歴もエンジニア歴もまだまだ2年目でやる気だけは満ち溢れています😎

好きな言語はGo、苦手な言語はJava、よく使う言語はNode(JavaScript)です。

💡このブログを書こうと思った経緯

LiBに入社して2, 3週間ほどたった頃先輩エンジニアにこう言われました。

「コミットのログがキレイすぎて気持ち悪いw」

驚きました。自分はcommitしてpushしたあとに「あ、消し忘れた」とか「あ、漏れてた」とか追いpushをすることも少なくなく、とても綺麗なログとは思えなかったからです💩

ではなぜキレイに見えたのか・・・
答えはコミットメッセージの先頭にEmojiをつけていたからです❗

✨Emoji Prefix✨

コミットメッセージの先頭にEmojiをつける文化は "Emoji Prefix" と呼ばれ、
GitHub社が開発したエディタ "Atom"コントリビュートガイドに記載されていたことで注目され始めたようです。
(カッコイイので自分はcommit symbolと呼んでいます)

バグ修正のコミットは「🐛」
リファクタリングのコミットは「♻」

このようにコミットの内容によってEmojiを変えるのがルールですが、どのEmojiを使うかは自由なのでプロジェクトや組織毎で異なることがほとんどだと思います。

自分は gitmoji のガイドを見てリポジトリにまとめたりしています。

github.com

👍メリット

このコミットでなにをしたか分かりやすくなる👀

f:id:kkwatanabe:20181130173018p:plain:w300

どうでしょう❓かなり見やすいですよね❗

例えば海外の方がコミットログを見たときに、自分のような英語力が弱いエンジニアが日本語でメッセージを残していてもEmojiで大体伝わります。 逆もまた然りです🕺

コミットの粒度が適切になる🗿

コミットの粒度は細かい程よいと言われる方もいるかと思いますが、細かいにも限度はあります。

Pull requestを開いた瞬間目にとびこんでくる細かすぎるコミットログは、レビュアーのやる気を著しく削ぎます😇

Emoji Prefixをつけることによって作業単位でのコミットを意識するようになり、自然と適切な粒度でのコミットになります。

キレイに見える⭐

あなたも「コミットのログがキレイすぎて気持ち悪い」と言われるようになります😚

テンションがあがる(重要)🕺💃🕺💃

超重要です❗単純に文字ばかりよりEmojiがあったほうが面白いですよね。

前職で"エンジニアにとって大切なのは遊び心だ"と言われたことがあります。

例えばWebGLでゴリゴリ3Dを描画するようなwebサイトではコナミコマンド(↑↑↓↓←→←→BA)を入力するとFPS計測ツールが表示されたり、

f:id:kkwatanabe:20181130193437p:plain:w200 ← こんなの

ブラウザ開発ツールのコンソールに超ドでかく環境名が出力されたりしました。

f:id:kkwatanabe:20181130193827p:plain:w200 ← こんなの

LiBに入ってCTOに最初に言われた一言も LiBのエンジニアは1日1笑い求められる でした。

つまり、エンジニアにとって面白さは必須なのです。

LGTM画像ひとつ妥協を許してはいけません。

Emojiを使って自分達で自分達のモチベーションを向上させましょう❗🤘

👎デメリット

Emojiの意味や種類を覚える・入力するのが面倒くさい🤔

自分がすぐに思いついたデメリットはこれだけでした。

しかしこのデメリットは後述の"コミットテンプレートを作成する"ことで、ある程度カバーすることができます。
つまり、ほぼ"デメリットはない"のです🙅

📝Emoji Prefix の作り方

手順

1. Emoji Prefixのルールを定義し、共有する🤓

まずはルールをつくってみましょう。

example

emoji moji mean
🎉 :tada: Initial commit.
:sparkles: New features.
🔧 :wrench: Changing configuration files.
💄 :lipstick: Updating the UI and style files.
:pencil2: Fixing typos.
📝 :memo: Writing docs.
🔥 :fire: Removing code or files.
🐛 :bug: Fixing a bug.
:recycle: Refactoring code.
🚨 :rotating_light: Removing linter warnings.
🚧 :construction: Work in progress.

しかし、開発者各々が自分の定義したルールでEmoji Prefixをつけていては意味がありません。

プロジェクトで使用するルールはREADME.md に記載したりして開発メンバーに共有し、周知しましょう📢

2. コミットテンプレートを作成する👨‍💻

コミットの度にREADMEのEmojiルールを確認するのは面倒です。

コミットテンプレートを作成してコミットするときにルールが確認できるようにしておきましょう。

リポジトリ内に.commit_templateを作成し、コミットテンプレートとして登録しておくとcommitする際にルールを確認することができます。

f:id:kkwatanabe:20181203193542p:plain

自分が使用しているcommit_templateは前述したリポジトリにまとめていますので参考にしてみてください。

https://github.com/kkwatanabe/commit-symbol/blob/master/.commit_template

コミットテンプレートはgit-configコマンドで登録します。

$ git config commit.template .commit_template

すべてのプロジェクトに適用したい場合は--global オプションを使用します。

$ git config --global commit.template .commit_templateのpath

テンプレート設定を解除したい場合はプロジェクトの.git/config(global設定の場合は$HOME/.gitconfig)から以下を削除します。

[commit]
    template = .commit_template

🔚最後に

いかがでしたでしょうか❓簡単ですよね❗

もちろん全てのコミットを表すEmojiルールを作ることは難しいでしょうし、どのEmojiかを考える時間がもったいないという方もいるでしょう。
でもまずはやってみてください❗Emoji付きのコミットの方が楽しいですよ❗ コミット力もつきますしね💪

🌟おまけ

Emoji Prefixマニアの方にこんなツールがあるので紹介しておきます。

github.com