Xcodeで使えるSwiftコードフォーマッター「Swimat」をつかってみた

## Swimatとは

[会社](http://www.snowrobin.jp)の人にXcodeでつかえるSwiftコードフォーマッター `Swimat` を教えてもらったのでつかってみました。

Swimatがどういうものかは、[GitHub - Jintin/Swimat: An Xcode formatter plug-in to format your swift code.](https://github.com/Jintin/Swimat) のGIFアニメがわかりやすいです。

<img width="791" alt="01-01.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/7d9656a0-601d-dee5-feb1-b67386e6ade2.png">

<img width="792" alt="01-02.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/598c3aae-3d61-ef7f-9aa3-eb65a8ddc5c3.png">


このように、一定のルールに従って空白やインデントを入れたり消したりして、コードを読みやすくしてくれます。

## インストールしてみよう

Swimatは、homebrew-caskでインストールします。
もし、homebrewがインストールされていない場合は、事前に[Homebrew-Cask](https://caskroom.github.io)からインストールしてください。

まず、ターミナルを開いて、つぎのコマンドを実行します。

```
brew cask install swimat
```

つぎに、Swimatのアプリを[ダウンロード](https://github.com/Jintin/Swimat/releases/download/v1.5.1/Swimat.zip)します。

<img width="84" alt="02.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/b7f9b2b7-aa5e-e1f0-7b01-e5a0e5f91285.png">


ダウンロードしたSwimatのアプリを起動します。

![03.png](https://qiita-image-store.s3.amazonaws.com/0/38924/a259523c-7785-fb67-c1ed-9977e2025c9c.png)


Swimatの画面が表示されるので、内容をよく読んだら閉じます。

<img width="780" alt="04.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/cc78d06e-3e04-c075-59ae-884929e3922b.png">


システム環境設定を開いて、機能拡張をクリックします。

<img width="780" alt="05.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/68e359bf-087e-f95e-cb6b-c10af33c6df8.png">


画面左のXcode Source Editorをクリックして、右側のSwimatをチェックします。

Xcodeを起動している場合は、再起動してください。

## つかってみよう

<img width="1440" alt="06.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/ea12bb45-3e3f-dbea-cb4a-9a7024218b80.png">


Xcodeでフォーマットしたいファイルを選択して、メニューのEditor > Swimat > Fromatをクリックします。青色の選択部分のコードにご注目。

<img width="1440" alt="07.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/b0c15922-581b-3db7-2bd7-c60480b2f848.png">


あっというまに、きれいなコードのできあがりです。

## おまけ（ショートカットで楽々フォーマット）

毎回メニューから実行するのは大変なのでショートカットを設定します。

<img width="912" alt="08.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/f4de4db4-d144-e566-9d88-13077ee7080b.png">


XcodeのメニューのXcode > Preferencesを開いて、Key Bindingsをクリックします。

<img width="912" alt="09.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/27a75810-4193-66b6-e605-14b617246e7b.png">


検索欄に `Swi` と入力すると、Swimatが表示されます。

<img width="912" alt="10.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/b6307e52-ddf5-e7e6-59f7-a7e2a7a61c75.png">


Key欄をダブルクリックしてから、割り当てたいショートカットキーをキーボードで押します（すでに割り当て済みの場合は、右側に黄色い三角や赤い丸のエラーマークが表示されるので、別のキーを割り当てましょう）。
保存するついでにフォーマットするのが良さそうなので、 `option + S` にしてみました。

<img width="383" alt="11.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/d97c3502-89e6-3cfa-be72-e3351c2483f8.png">


メニューで確認すると、バッチリショートカットキーが割り当てられています。

## おまけ（SwiftFormat）

`SwiftFormat` というコードフォーマッターもあるので、興味があるかたはご覧ください。

[GitHub - nicklockwood/SwiftFormat: A code library and command-line formatting tool for reformatting Swift code](https://github.com/nicklockwood/SwiftFormat/)

<img width="925" alt="12.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/93550f95-43a9-2b8c-4892-4be5478e05b8.png">


こちらのスクリーンショットのように、Githubにフォーマットのルールがたくさん掲載されています。不要な空白はなくしましょう、というようなものから

<img width="914" alt="13.png" src="https://qiita-image-store.s3.amazonaws.com/0/38924/44f4dbaf-37aa-055d-f9c8-aaf56586befa.png">


数値の3桁区切りに `_` を入れましょう、みたいなものまでいろいろとあります（3桁区切りの `_` 知りませんでした）。

ざっと眺めるだけでもコードの書き方の勉強になりますね。