最強の開発環境を目指して 〜設定編〜

早いものでPhpStorm Advent Calendarも残す所あと3日となりました。
最後は3日間掛けて自分の目指す環境について書いてみたくこんな題名にしました。
PhpStormに絡まないツール系のネタが多いですがご容赦下さい。

まず前提として、私は効率厨なので、多少お金が掛かってもトータルでみてそれで効率や能率が上がるのであれば、アプリもツールもガジェットもどんどん買います。
あと、ツールのカスタマイズも大好きです。エンジニアとして常に最高の道具と最高の環境を手入れし続けるべきだと考えている派なので、設定もキーマップもがしがし変えます。

こんな感じの人が語るので、「自分は無料ツールしか使わない」とか「設定は常にデフォルトじゃないと嫌」っていう方は多分参考にならないと思います。

# キー環境周りの設定

まずはキーの環境周りについてです。
キーボードはエンジニアにとって一番長く使うであろう相棒なので、迷わず一番いいもの/一番合ったものを選びましょう。エディタを変わると世界が変わります。
色々彷徨った結果、ボクは[RealForce91 UBK-S](http://www.amazon.co.jp/dp/B003XKNX76/)に落ち着いています。

## キーリピートの速度を変える

OSはMacですが、Macの押しっぱなし速度は遅すぎて話になりません。システム設定から一番速くしても雀の涙程度にしか速度が変わりません。

なので、[KeyRemap4MacBook](https://pqrs.org/macosx/keyremap4macbook/index.html.ja)と[PCKeyboardHack](https://pqrs.org/macosx/keyremap4macbook/pckeyboardhack.html.ja)を入れます。
KeyRemap4MacBookはOS全体のキーマップの変更、
PCKeyboardHackは特定のキーに別のキーストロークを割り当てるなどといった拡張設定が行えます。

KeyRemap4MacBookの[Key Repat]、[Functional Key Repat]内の以下の項目を設定します。

- Delay Until Repeat
- Key Repeat

もちろん任意の数字で良いんですが、とにかく速い方がいいので個人的には以下のような設定にしています。

![KeyRemap4MacBook.png](https://qiita-image-store.s3.amazonaws.com/222/20074/0783e454-8c48-118f-054a-692a2576ee22.png "KeyRemap4MacBook.png")

## 一部動かないキーを日本語キーボードとして認識

デフォルトではスペースキーの両横のキーが正しく認識されないので、それらを日本語キーボードとして使えるように設定します。
ついでに、Esc下のキーで日本語/英語切り替えが出来るようになります。

PCKeyboardHackの[Settings] - [For Japanese]で以下にチェックを入れます。

- Enable XFER Key on PC keyboard
- Enable XFER Key on PC keyboard
- Enable KATAKANA Key on PC keyboard

![PCKeyboardHack.png](https://qiita-image-store.s3.amazonaws.com/222/20074/c7a06dd8-6623-e021-ee93-be93ef1467d5.png "PCKeyboardHack.png")

## OS内のカーソル移動をEmacsモードに

次にMacOS内のカーソル移動の方式を変えます。

![全画面_2013_12_23_19_44-3.png](https://qiita-image-store.s3.amazonaws.com/222/20074/f2f65403-ab9d-9e78-409b-3a7dd69c9c1c.png "全画面_2013_12_23_19_44-3.png")

上の図はPhpStorm内の[Goto Class]ですが、例えば上から5番目の項目に表示されている項目をフォーカスしたいときにわざわざ右手をホームポジションから外してキーボードの[↓]キーを5回押すのはとても面倒ですよね。
なので、Ctrl+p, Ctrl+n, Ctrl+b, Ctrl+fでそれぞれ上下左右にカーソル移動出来るようにします。

KeyRemap4MacBookの[Change Key]から以下にチェックを入れます。

- [Emacs mode] - [Ctrl+PNBF to Up/Down/Left/Right]

これで右手をホームポジションから外すことなく上下左右に移動出来ます。

![KeyRemap4MacBook.png](https://qiita-image-store.s3.amazonaws.com/222/20074/7b288b9a-2484-c580-cccb-d06cdda3b0fb.png "KeyRemap4MacBook.png")

ついでに、Ctrl+Hでバックデリート出来るように設定します。

- [Emacs mode] - [Ctrl+H to Delete]

## 英数とカナにCtrlとOptionを割り当てる

![Macで小文字の「ぁ」や「っ」などを入力する方法-7.png](https://qiita-image-store.s3.amazonaws.com/222/20074/ac983c47-4b79-78d9-7d9f-846118c3e1ca.png "Macで小文字の「ぁ」や「っ」などを入力する方法-7.png")

スペースキーの両隣のキーにそれぞれCtrlとOptionを割り当てます。

ただ、設定を上書きしてしまうと英数/かなの切り替えが不便なので、単独で押した場合は英数/かな切り替え、英数を押しながら他キーを押した場合はCtrl+なにか　という形になるようにします。

Change Key内の以下のチェックを入れます。

- [For Japanese] - Change EISUU Key] - [Eisuu to Ctrl_L(+When you type EISUU only, send EISUU)
- [For Japanese] - Change KANA Key] - [Eisuu to Option_L(+When you type KANA only, send KANA)

![KeyRemap4MacBook.png](https://qiita-image-store.s3.amazonaws.com/222/20074/1a783baa-b1ba-816f-aefc-02908ee8eb30.png "KeyRemap4MacBook.png")

これで完了です。かなり変態チックなキーボード配置になってきますが、Optionが慣れると押しやすくて非常に快適です。小指への負担も減ります。


## Escを押した際にIMEをOFFにする(Google IME)
PhpStorm内ではIdeaVIMを使用してVimモードで開発する想定です。
なので、Insert Modeから抜けた際にかな状態だとj/k移動出来なかったり、コマンドが動かなかったりして不便なことが多いです。

なので、EscにIME OFFを割り当てて、Insert Modeを抜けるついでにIMEをOFFに切り替わるようにします。

GoogleIMEで以下のように設定します。

- [環境設定] - [一般] - [キー設定の選択 編集]
- 左下のメニューから[エントリーを追加]で以下のパターンを追加
  - [直接入力 Escape キャンセル後IMEを無効化]
  - [入力文字なし Escape キャンセル後IMEを無効化]
  - [サジェスト表示中 Escape キャンセル後IMEを無効化]
  - [変換前入力中 Escape キャンセル後IMEを無効化]

これでどんなときでもEscを押せばIMEがOFFにになりEisuuモードになります。

# トラックパッドの設定

トラックパッド周りの設定です。開発時は基本的に極力キーボードから手をはずさないようにしているので、トラックパッドはデフォルトでも良いと思います。
トラックパッドの移動速度は最速にしておいた方が良いです。慣れれば速いほうが移動効率良くなりますし。

ブラウザなどを操作する際には[Better Touch Tool](http://blog.boastr.net/)か[jitouch2](http://www.jitouch.com/)でトラックパッドを拡張してやるとかなり便利になりますが、本エントリの本題から外れてしまうのでここでは説明しません。

# PhpStormの設定

![Menubar_と_app_…_core_php_-_candycane_-____www_candycane_.png](https://qiita-image-store.s3.amazonaws.com/222/20074/bf726f23-701f-8cec-5d8f-6b4838e91e3b.png "Menubar_と_app_…_core_php_-_candycane_-____www_candycane_.png")

だいたいこんな感じの色設定/エディタ分割で開発してます。

設定項目は非常に多いので[PhpStormで効率良く開発するための設定その1](http://www.karakaram.com/phpstorm-settings1)などが参考になると思います。
ここでは個人的にやっておいたほうが良いであろう設定をいくつか見てみます。

## Code Complete系の表示を速くする

- [Preferences] - [Editor]  - [Code Completion]
  - Autopopup documentation in (ms)
  - Autopopup in (ms)

をそれぞれ極限まで速くしておきます。そうすると、$を入力したときとかに即座に変数名の補完ポップアップとかが出るようになります。速いは正義。

![Preferences.png](https://qiita-image-store.s3.amazonaws.com/222/20074/14d4b1db-265b-3cde-b405-416934f426cd.png "Preferences.png")

## 外部要因で中身が変わったファイルも自動的にサーバ転送する

サーバ上にコードを置いて開発している場合、[Auto Deployment]の設定をしておくと便利です。
デフォルトだと、自分が触っているファイルのみアップロード対象となっているので、Git Pullなどの外部要因によって書き換わったファイルも自動的にアップロード出来るようにします。

- [Preferences] - [Deployment] - [Options] - [Upload external changes]

![Preferences.png](https://qiita-image-store.s3.amazonaws.com/222/20074/6be76464-4ff6-b599-b87f-117dd3be2a02.png "Preferences.png")

## ファイルの自動保存/同期(Synchronize)の実行間隔を速くする

PhpStorm上ではデフォルトでAutoSave機能がONになっているので基本的に明示的なファイル保存は必要ありません。
が、上記のようなAuto Deploymentの実行はファイルが保存されたタイミングでファイルが転送されるので、ファイルを編集してからサーバに転送されるまでに3秒ほどのタイムラグが発生します。
書き換えて即時ブラウザで確認したいときに3秒も待ってられないので、設定を1秒にします。

- [Preferences] - [General] - [Synchronization] - [Save files automatically if applicatioon is idle for]

![Preferences-2.png](https://qiita-image-store.s3.amazonaws.com/222/20074/619cf447-4952-f01c-9196-f102fa8393e2.png "Preferences-2.png")

また、1秒も待っていられないというせっかちな方は、Synchronize(Cmd+Ctrl+Y)を明示的にやってやれば、即座にファイル転送されます。