絵文字コミットのすゝめとその習慣づけ

# 絵文字コミットのすゝめ

こんな記事を見かけました。
[絵文字でコミットメッセージを書く](https://gist.github.com/p1ch-jp/2912dc157b53449f7d1b)

この記事を通して絵文字が持つノンバーバル的な潜在能力に可能性を感じ、
こうゆう修正のときはこの絵文字！みたいなリストを独断で選んで作成してみました。
あまり多すぎると覚えられないし、浸透しにくいと思ったのでまずは5つです。
開発する中で「こんなのも必要だよね」っていうのがあったら順次追加していきます。

## 絵文字リスト

|      絵文字      |         意味         |                      由来                      |
|:----------------:|--------------------|----------------------------------------------|
| :hatching_chick: |       新規追加       | 誕生した感出したかった                   |
|   :dragon_face:  |       バグ修正       | ドラゴン討伐※                                  |
|     :bath:    |   リファクタリング   | きれいにしてる感出したかった                               |
|     :octocat:    | コードレビューの反映 | GitHubはコードレビュー文化の繁栄に貢献したから |
|      :fire:      |         削除         | 焼却感出したかった                                         |

※1 弊社ではバグのことをドラゴンと呼び、バグ修正のことをドラゴン討伐という呼び方をしています。
バグ潰しというあまり楽しくない作業へのモチベーションを少しでも上げようとするための施策の一つです:dragon_face:
元ネタ https://mobile.twitter.com/onisci/status/577745867848880128

弊社ではまだこの絵文字コミット文化が定着しているわけではありません。
自ら導入して実践することで絵文字コミットを徐々に普及させていきたいと思います。
<del>浸透具合は正直まだ全然でございます</del>

## 絵文字コミットのメリット
- コミットメッセージを読まなくても、どんな修正なのかが一目で理解できる(細かい内容はテキストで。)
- 日本語は動詞が最後にくることで内容がすぐに分かりにくい、という弱点を解消(日本語メッセージがやっぱり楽)
- 絵文字は世界中で意味が伝わる ← 結構重要
- リポジトリが少し賑やかになる



# 絵文字コミットの習慣づけ
すゝめではメリットを書きましたが、一方でこんなデメリットもあります。
## 絵文字コミットのデメリット
- わざわざを絵文字打つことが面倒くさい
- そもそも絵文字を打つことを忘れる(`git commit --amend`を何度やったことか)

そうです。わざわざコミットする度に絵文字を付ける作業が繰り返されるという心理的干渉が邪魔をするのです。
この心理的干渉を少しでも緩和すべく、コミットメッセージの雛形化も紹介したいと思います。

## コミットメッセージの雛形化
`git config`コマンドである設定をすることで、コミットメッセージの雛形を作ることができます。
メッセージの書き方を統一したい場合に使われることが多いこの機能ですが、
この機能を使って絵文字を入力する場所を付けてあげようと思います。
ついでに忘れることの多いissue番号を入力する場所もついでに付けちゃうことにします。

## やり方

１. テンプレート内容を入れるファイルを作成

```bash
$ touch ~/.defaultcommitmessage.txt
```

２. １で作成したファイルにテンプレート内容を記述

```lang:.defaultcommitmessage.txt
:emoji: what do yourself #issueNumber 
```

３. コミットメッセージをひな形として設定する

```bash
$ git config --global commit.template ~/.defaultcommitmessage.txt
```

４. 反映されていることを確認

```
$ git commit

:emoji: what do yourself #issueNumber

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   README.md
#
```

反映されてることが確認できたら、
`:emoji:`に入れたい絵文字、
`what do yourself`にコミット内容
`#issueNumber`にissue番号  を入力すればOKです。

```
$ git commit

:hatching_chick: アイコンを非表示にする機能を追加 #13

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   README.md
#
```
少しは心理的干渉を解消できそうでしょうか。少なくとも入力を忘れることは無くなると思います。

# 最後に
コミットメッセージに絵文字を付けることをひたすら推してきましたが、忘れてはいけないことがあります。
**絵文字を付けたからといってコミットメッセージの内容を疎かにしてはいけません。**
あなたの書いたコードが適切にレビューされるために
`何のために、どのようなコードを記述(もしくは削除)したのかを簡潔に書く`
という従来からのベストプラクティスが変わることはありません。
あくまでも、従来のベストプラクティスの付加価値として参考にしてもらえるように今回の記事を書きました。
レビュアーの人が少しでも見やすいPRになることを意識して、コミットメッセージを書いてみましょう。

# 参考にさせていただきました。
https://gist.github.com/p1ch-jp/2912dc157b53449f7d1b
http://qiita.com/kasaharu/items/cdb587d4d27d7608b063