Githubの便利な機能であるSemantic Pull Requestを解説します

# この記事の内容を一言で

**commitのメッセージやPull Requestの内容がひと目で内容がわかるように、メッセージ冒頭に(GitHubが用意した)慣例的なキーワードをつけてください。**


## はじめに
Githubをより便利に使えるツールを調べていたら、[semantic-pull-requests](https://github.com/probot/semantic-pull-requests)という機能を見つけた。
見てみるとなかなか便利だったため、どのようなものかを解説。

## semantic-pull-requestって何?
まず、これがどういう機能かについて。
簡単に言えば、commitのメッセージとPull Requestにおけるタイトルのつけ方をチェックしてくれるもの。

[semantic-pull-requests](https://github.com/probot/semantic-pull-requests)のページのスクリーンショットを使いながら、具体的にどんな感じか解説。


## semantic-pull-requestの機能
### 付け直したほうが良いメッセージ、タイトル ▶ 黄色

赤丸で囲った`Pull Request`のタイトルに注目と`Semantic Pull Request`に注目。

<img src="https://qiita-image-store.s3.amazonaws.com/0/218398/066152f6-1177-a8e9-78ac-8f66d411f9de.png" width=700px>
「別に普通でしょ?」って思った人もいると思う。
だが、`Semantic Pull Request`のチェックによると、
`Pending - add sementic commit or PR title`。
つまり、直してほしいとのこと。

**「じゃあ、どういう風にメッセージやタイトルをつければ良いのさ」**
その答えが次。


### 効果的なメッセージ、タイトル ▶ 緑色

<img src="https://qiita-image-store.s3.amazonaws.com/0/218398/efe71b87-2dde-62f0-0ec9-7b926c052fdc.png" width=700px>
**「いや、`feat:`付けただけやん」**

そう。
それが`Semantic Pull Request`。

**ひと目で内容がわかるように、冒頭にキーワードをつけてください。**

ってだけ。

タイトルだけじゃなくて、どういう作業をしたかがわかる単語があれば、検索のときにも便利。
Serch欄に`feat:`だけ打てば、開発に関係するPullRequestだけが表示されるからね。

## 使い方

上でも説明したように、commitのメッセージやPull Requestのタイトルに、作業内容を意味する`キーワード: `をつければいいだけ。

## どんなキーワードがあるの?
以下は[Github](https://github.com/commitizen/conventional-commit-types/blob/master/index.json)にあったキーワードの一覧に日本語解説を加えたもの。


```index.json
 { 
   "types": { 
     "feat": { 
       "description": "A new feature", 
       "title": "Features" 
       "日本語":"開発"
     }, 
     "fix": { 
       "description": "A bug fix", 
       "title": "Bug Fixes" 
       "日本語":"修正"
     }, 
     "docs": { 
       "description": "Documentation only changes", 
       "title": "Documentation" 
       "日本語":"文書の変更"
     }, 
     "style": { 
       "description": "Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)", 
       "title": "Styles" 
       "日本語": "Styleの修正"
     }, 
     "refactor": { 
       "description": "A code change that neither fixes a bug nor adds a feature", 
       "title": "Code Refactoring" 
       "日本語": "エラーが起きない範囲でより良いコードに変更"
     }, 
     "perf": { 
       "description": "A code change that improves performance", 
       "title": "Performance Improvements" 
       "日本語": "パフォーマンスの改善"
     }, 
     "test": { 
       "description": "Adding missing tests or correcting existing tests", 
       "title": "Tests" 
       "日本語": "テストの改善"
     }, 
     "build": { 
       "description": "Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)", 
       "title": "Builds" 
       "日本語": "npmといった外部に依存しているシステムの変更"
     }, 
     "ci": { 
       "description": "Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)", 
       "title": "Continuous Integrations" 
       "日本語": "npmといった外部に依存しているシステムの変更"
     }, 
     "chore": { 
       "description": "Other changes that don't modify src or test files", 
       "title": "Chores" 
       "日本語": "srcやテストに関連するファイルなど製品に関与しないモノの変更"
     }, 
     "revert": { 
       "description": "Reverts a previous commit", 
       "title": "Reverts" 
       "日本語": "前の状態に戻す"
     }
   } 
 } 
```

## インストール
インストールはこちらから ▶ [Semantic Pull Requests](https://github.com/apps/semantic-pull-requests)

## おわりに
Githubだけでもメチャクチャ便利だが、自分がいま使用している以上に機能がある。
今後も調べてみよう。