チーム開発のためのIntelliJ設定


## はじめに
チームではメンバー全員がIntelliJを使っていますが、チーム開発のためのエディタ設定
という視点から試行錯誤して決めてきたことをまとめてみようと思います

### この記事について
+ 私は別にIntelliJに特別詳しいわけでもなんでもありません
 + いくつかまとめようと思っていた事に加え、一通り`Preferences`をざっと眺めてみて内容をピックアップしました
+ `Command + Shift + A`で何でも検索が出来るので、設定項目名で検索すると楽に設定箇所にたどり着けるかも知れません
+ 今の仕事がJavaなので、発想はJavaベースです

### 環境
+ IntelliJ ULTIMATE 14.0.1
+ Mac 10.9.5

## 行番号を表示する
+ 大きいディスプレイに映してみんなで読んだりレビューしたりするときに必要

### 設定
1. `Preferences` -> `Editor` -> `Appearance` -> `□ Show line numbers`をチェックする

### 補足
+ どうしてデフォルトがオフなんだろう
+ なんかVimプラグインの`:set nu`と相性が悪い気がするので、素直にIDE側で設定すると良さそう

## フォント
+ テストデータを書いたりするときに割とよく日本語を使うんだけど、全角の幅が半角2つ分になっていないので縦がでこぼこする

### Rictyのインストール
+ もともとあるフォントに気に入るのがなかったのでインストールした
 + 当然Rictyをインストールしないでも良い

```
# Yosemiteの場合のみ
brew install automake   

# Yosemiteの場合のみ
brew install pkg-config

brew tap sanemat/font
brew install Caskroom/cask/xquartz
brew install ricty

# 実際のバージョンに合わせる（正しいコマンドがコンソールに出力されている）
cp -f /usr/local/Cellar/ricty/x.x.x/share/fonts/Ricty*.ttf ~/Library/Fonts/
fc-cache -vf
```

### 設定
1. `Preferences` -> `Editor` -> `Colors & Fonts` -> `Font`
+ `Scheme name:`が`Default`になっていると編集できないので、`Save As`で新たな設定を作成する
+ `Primary font:`から`Ricty`を選択する

### 補足
+ Before
 + ![](https://qiita-image-store.s3.amazonaws.com/0/113398/313a1d25-84e8-0705-dacb-7e4f232ddc42.png)
+ After
 + ![](https://qiita-image-store.s3.amazonaws.com/0/113398/285c86ec-b636-cae6-bc97-bcf4ac4e95de.png)
+ Rictyを設定するところ
 + ![](https://qiita-image-store.s3.amazonaws.com/0/113398/454f8654-f0c3-8eb8-f7b1-8783af7f90a4.png)

## 新規ファイル作成時のCreated byをなくす
+ 別に要らないと思う
 + 必要でもGitでわかるし

### 設定
1. `Preferences` -> `Editor` -> `File and Code Templates` -> `Includes`
+ `File Header`を選択し、内容を削除する

### 補足
+ `Includes`ではなく`Templates`の方をの`Class`とかを見ると`#parse("File Header.java")`となっている
 + 会社やチームで決めているテキストを用意して差し替えたりも出来るだろう

## タイポ判定用の辞書の追加
+ 会社の名前とか開発しているシステム自身の名前、独自ツールの名前とかがタイポ判定されることが良くある
 + そういう単語を無視し続けていると、本当のタイポを見逃すので個人的には極力正しく設定したい

### 設定（適宜追加する場合）
1. タイポ警告が出ている単語の上で`option + Enter`
+ `Typo Save 'xxx' to dictionary`

### 設定（ファイルインポート）
1. `path/to/dic-dir/xxx.dic`というファイルを作成する
+ 改行区切りで単語を列挙する
+ `Preferences` -> `Editor` -> `Spelling`の`Dictionaries`タブを選択
+ `Custom Dictionaries Folder`に`path/to/dic-dir`を追加する

### 補足
+ `.dic`ファイルへの理解は全くないので、指摘等していただけると喜びます
+ `.dic`ファイルをエクスポートする方法がわからなかった
 + できるのかな
+ `.dic`ファイルもバージョン管理に含めると良いと思う
 + 予め予想できる物は全員で共有するにこしたことはないと思う
+ タイポチェック無視は個人的には乱暴すぎる
+ Intelliってタイポ判定出てるよねｗ

## 保存時にフォーマッタを実行する
+ フォーマッタを実行しないと後で無駄にDiffが出てしまうので、決して舐めてはいけない

### 設定
1. `ToolBar` -> `Edit` -> `Macros` -> `Start Macro Recording`
+ `ToolBar` -> `Code` -> `Reformat Code...`
+ 好きに選択する
 + `□ Optiomize imports`はチェックすると良い
+ `Run`
+ `ToolBar` -> `File` -> `Save all`
+ `ToolBar` -> `Edit` -> `Macros` -> `Stop Macro Recording`
 + マクロに名前を付けて保存する
+ `Preferences` -> `Appearance & Befavior` -> `Keymap`の`Macros`から先ほど保存したマクロを右クリック
+ `Add Keyboard Shorcut`
+ `Command + S`を入力して`OK`
 + 警告は無視

### 補足
+ [こちらの記事](http://nekopunch.hatenablog.com/entry/2014/10/12/115837)のまんまです、すいません
+ Commit前に必ず動く様にしてみたいけど、どうやれば良いかな

## フォーマット規約を変更する
+ 俺はoo派、あいつはxx派みたいになっていると千日手のごとくDiffり続けるので設定も決して舐めてはいけない

### 設定
1. `Preferences` -> `Editor` -> `Code Style` -> `言語名`
+ 好きに設定する
 + タブやスペース、見た目幅等
 + 空行をどこに何行入れるか
 + ifやforにどんな感じにスペースを入れるか
 + 長い場合どこで改行するか
 + and so on...

### 補足
+ Before
 + ![](https://qiita-image-store.s3.amazonaws.com/0/113398/e563e0f8-eee9-fbf7-7872-e1ece43a3e03.png)
+ After
 + ![](https://qiita-image-store.s3.amazonaws.com/0/113398/aade4687-c3c3-b2bf-ebc8-232377cf0ad4.png)
+ Javaの慣例等は全然わからないです

## フォーマットを部分的に無視する
+ やはりテストデータ等で日本語を使う場面は多い
 + が、IntelliJは全角文字を1文字として数えるので、フォーマッタの縦そろえが逆にぐちゃぐちゃになる

### 設定
1. `Preferences` -> `Editor` -> `Code Style` -> `□ Enable formatter markers in comments`をチェックする
+ フォーマッタに無視させたい行（複数可）の前後にコメントで`@formatter:off`と`@formatter:on`を書く

### 補足
+ `@formatter:off`というマーク自体の変更も可能

## スニペット登録(Live Templates)
+ 必須設定ではないけど便利なので

### 設定
1. `Preferences` -> `Editor` -> `Live Templates`
+ 右の方の`＋`ボタンから`1. Live Template`を選択
+ `Abbreviation:`に`pdump`, `Template text:`に`echo '<pre>'; var_dump($`と入力
 + 他の項目は任意
+ 下の方の`Define`から`PHP`を選択
+ `OK`
+ PHPファイル上で`pdump`

### 補足
+ 上記はとりあえずブラウザに情報を出したいときにとてもよく使っていた
 + ブラウザで`var_dump`を見るとずら〜っと1行になってしまうため`<pre>`が必要
+ 入力中
 + ![](https://qiita-image-store.s3.amazonaws.com/0/113398/f170ca8d-2793-eafc-8fc5-da69de959b31.png)
+ 展開
 + ![](https://qiita-image-store.s3.amazonaws.com/0/113398/34e5b9d6-e74e-c134-84b9-1ff10c87b92b.png)

## 設定をエクスポートする
毎回全員がこれらを手で設定するのはナンセンス

### 設定
1. `ToolBar` -> `File` -> `Export settings...`

### 補足
+ 全部の詳細は確認していないが、この記事で設定したことの大体はエクスポートできそう
+ エクスポートした`.jar`も`.dic`と合わせてバージョン管理してしまえば良いのかな？

## やりたいけど出来ていないこと
+ 全角文字を半角2つ分と数えてフォーマットする

## おわりに
(； ･`д･´) はふー　意外と長くなってしまった　どうでしたか？
快適に日中を過ごすためにも、道具にはこだわりたいですね

こんなこと気にしてるよ/やってるよ、というのがあれば教えていただけると設定でも運用でも嬉しいです