AlcatrazでXcodeにClangFormatを入れてコードを整形する


Xcodeでコードを整形して読みやすくしたい。


## やること
1. XcodeにAlcatrazをいれる
2. AlcatrazからClangFormatをいれる
3. 整形する
4. 設定ファイルを書いてカスタマイズする
5. おまけ

## XcodeにAlcatrazをいれる
まずはXcode用のパッケージマネージャーである[Alcatraz](http://alcatraz.io/)をいれる。
Xcode7以上じゃないとダメなので注意。
公式にあるコマンドを叩けばおｋ。

```:Install
curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh
```

Xcodeを再起動して、メニューバーのWindowに`Package Manager`が追加されていればおｋ。

![Kobito.bg1Zzm.png](https://qiita-image-store.s3.amazonaws.com/0/53664/4a829c1e-75a3-c6cd-b9f9-af4c20c0faf0.png "Kobito.bg1Zzm.png")


## AlcatrazからClangFormatをいれる
次に、Alcatrazから[ClangFormat]()をいれる。
オプションでフォーマット時のルールを設定することができる。
[日本語のサイト](http://algo13.net/clang/clang-format-style-oputions.html)もあるので助かる。

Xcodeのメニューバーの`Window -> Package Manager`を押してAlcatrazを起動させる。
上部の検索ボックスに「clang」とかいれるとひっかかるので、`INSTALL`を押す。

![Kobito.V2BWCT.png](https://qiita-image-store.s3.amazonaws.com/0/53664/9957a6ec-f446-056c-fa11-9bf62ca5bfed.png "Kobito.V2BWCT.png")

再度Xcodeを再起動して、メニューバーのEditに`Clang Format`が追加されていればおｋ。

![Kobito.Qyq8nM.png](https://qiita-image-store.s3.amazonaws.com/0/53664/bc283379-541a-67ec-d2ce-f95cd6a9ebbb.png "Kobito.Qyq8nM.png")


## 整形する

適当なプロジェクトを用意して、

![Kobito.TbV31Q.png](https://qiita-image-store.s3.amazonaws.com/0/53664/7d78966c-0d4e-2656-38f6-f06e702b50bf.png "Kobito.TbV31Q.png")

適当にコードを書き、

![Kobito.jGS8dW.png](https://qiita-image-store.s3.amazonaws.com/0/53664/768af77f-01fa-f366-2c15-5cb3ed99377f.png "Kobito.jGS8dW.png")

メニューバーの`Edit -> Clang Format -> Format Selected Files`を押すと、

![Kobito.g3aNKW.png](https://qiita-image-store.s3.amazonaws.com/0/53664/3603851e-13df-63a6-b6a1-0a8601d965ec.png "Kobito.g3aNKW.png")


整形される。

![Kobito.oO6Wop.png](https://qiita-image-store.s3.amazonaws.com/0/53664/0c42ff0a-732c-472f-1d63-615ae95e3f6d.png "Kobito.oO6Wop.png")

整形？？？？？？？？？？？？？？？？？？


## 設定ファイルを書く

デフォルトで整形のフォーマットがいくつか用意されているが、どれもしっくりこないので自分で設定を書く。
プロジェクトファイルの親以上のディレクトリに`.clang-format`という設定ファイルを置き、どういうふうに整形するかを記述していく。

今回はとりあえずシンプルに、変数宣言のインデントを揃える設定を書く。

```:.clang-format
# 連続する行の代入演算子を揃える
AlignConsecutiveAssignments: true

# 連続する行の宣言を揃える
AlignConsecutiveDeclarations: true

# * や & の位置
PointerAlignment: Left
```

設定の詳細は[Clang-Format Style Options &mdash; Clang 4.0 documentation](http://clang.llvm.org/docs/ClangFormatStyleOptions.html)か、日本語でみたい場合は[こちら](http://algo13.net/clang/clang-format-style-oputions.html)で確認できる。

次に、整形時に`.clang-format`の設定を使用するようにする。
ニューバーの`Edit -> Clang Format -> File`を押すだけ。

![Kobito.17KA6w.png](https://qiita-image-store.s3.amazonaws.com/0/53664/77366b84-5b10-b7cb-9efe-872b340fcbed.png "Kobito.17KA6w.png")


すると`File`にチェックがはいるので、この状態でもう一度整形をしてみる。

![Kobito.QvdbcV.png](https://qiita-image-store.s3.amazonaws.com/0/53664/14dd21de-1d69-5285-869e-634f195b0ce0.png "Kobito.QvdbcV.png")

すると、

![Kobito.SPZvDu.png](https://qiita-image-store.s3.amazonaws.com/0/53664/b59d6f02-52b1-bf2b-07b9-2b88bf5a58f9.png "Kobito.SPZvDu.png")


ちょっとよさげになった。（気がする）
この辺りは個人の好みだったりするので、追求しないことにする。
とりあえずカスタマイズできるようになったのでおｋ。


## おまけ

毎回メニューバーから操作するのはめんどうなので、ショートカットを登録する。

`システム環境設定 -> キーボード -> ショートカット -> アプリケーション`を選択した状態で、`+`ボタンを押す。

![Kobito.xfJunY.png](https://qiita-image-store.s3.amazonaws.com/0/53664/52ed24e4-e159-a7ec-a770-3db46b0567d3.png "Kobito.xfJunY.png")

アプリケーションは`Xcode.app`を選択。
メニュータイトルは`Format Selected Files`を入力。
キーボードショートカットにフォーカスした状態で、割り当てたいショートカットキーを押す。
（今回は`shift + command + e`に割り当てた）

![Kobito.eqOSZ1.png](https://qiita-image-store.s3.amazonaws.com/0/53664/e61d840d-a3a9-ee08-3f4d-30592e846511.png "Kobito.eqOSZ1.png")

最後に`追加`ボタンを押すと↓に追加される。

![Kobito.1WwwaT.png](https://qiita-image-store.s3.amazonaws.com/0/53664/3b926b70-6237-a24d-d9b4-d4fc8f1c4dce.png "Kobito.1WwwaT.png")


これで、Xcodeで`shift + command + e`を押すだけでファイルを整形できるようになる。



というね。