いつまでビルド時間をもて遊んでるつもり？今すぐ導入すべきiOS開発を爆速にするXcodeプラグイン

by @mixiappwchr

![スクリーンショット 2014-05-30 10.05.20_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/2a99d9b0-d984-fefb-f242-62fa4a85ced9.png)

下記の記事の中でもちらっと紹介したのですが、開発時のビルドを毎回やり直さずに修正できるXcode Pluginが非常に便利なので紹介したいと思います。
細かいチューニングを繰り返す場合に絶大な威力を発揮します。

[DeNA中の人が事例で語る、アニメーションやデザインのアプリを効率よく開発するためのTips](https://codeiq.jp/magazine/2014/05/10760/)

ここで書きましたが、このプラグインを使うと

#ビルドやり直ししてアプリ再起動など、いっさい必要ありません。#

利点としては実際は裏でビルドしてるので、主にビルド時間というより、アプリが再起動が必要なくなる事です。
例えば深いところにあるUIの修正となると大きく威力を発揮します。

修正
↓
アプリ再起動
↓
そのページまで行く

と行った事が

修正
↓
確認
ですみます。

シミュレータだけでなく、TCPで情報を送ってるので実機とmacが通信できるネットワークにいるなら使えるでしょう。

#インストール

[Injection For Xcode](http://injectionforxcode.com/)

こちらのサイトの下記のリンクからpluginのインストーラを落としてきて

[Pllugin Download](http://injectionforxcode.johnholdsworth.com/InjectionPluginV5.1.pkg)

![スクリーンショット 2014-05-30 10.06.12_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/1c05ede7-3be1-1226-a7a5-a4d89da737e3.png)

あとはインストールするだけです。

インストール後Xcodeを再起動するとXcodeのメニューのProduct内に専用のメニューが追加されているはずです。
![スクリーンショット 2014-05-30 10.06.42_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/c1b444e4-151f-2099-b50e-79af7dd41bce.png)

#Injectionを有効にする
各プロジェクトでInjectionを利用したい場合はメニューの中の

Patch Project for Injection
![スクリーンショット 2014-05-30 10.06.42_120 のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/37731/c2aa781c-b869-5086-7ded-4ed85aee126c.png)

をクリックすると自動的にmain.mにInjection用のコードに修正します。
元に戻したい場合は

Revert Injection's Change
![スクリーンショット 2014-05-30 10.06.42_120 のコピー 2.png](https://qiita-image-store.s3.amazonaws.com/0/37731/60b84888-7f0d-4840-e78c-d06560e95946.png)

をクリックすれば元に戻るので、依存関係は最小です。
ないと思いますがmain.mをいじっている場合は注意が必要かもしれません。

ちなみに以下のようにコードが挿入されます。
![スクリーンショット 2014-05-30 10.25.13_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/a1188c23-854a-78a9-180c-fb18ab990c04.png)



#使い方
使い方は非常に簡単です。
アプリを実行後にコードを修正を修正したら
^=(control + shift +  =のキー)
を押すと,自動的にコードが反映されます。ビルドのやり直して、アプリ再起動はいっさい必要ありません。

大事なので繰り返し言いますが

#ビルドやり直ししてアプリ再起動など、いっさい必要ありません。#



#デモ
例えばボタンをおすと、背景色が変わる簡単なアプリがあったとします。

![スクリーンショット 2014-05-30 10.20.31_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/da26e10b-7062-0f4a-8bb6-d0f52b6ddc36.png)

ボタンを押すと、今は黒に変わります。

![スクリーンショット 2014-05-30 10.20.41_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/389a8750-f0b7-cf99-942f-af9081109c54.png)

この色をこだわりたいんだ！チューニングするぞ！となった場合、コードを書き換えて再ビルドになるのですが、Injection For Xcodeを導入している場合は、コード修正後^=を押すだけで完了です。

![スクリーンショット 2014-05-30 10.21.13_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/45eabdd0-5c26-b80f-bf99-ec093cb2c2f0.png)
こちら色をグレーに変えたのですが、いっさい再ビルドしてアプリ再起動はしていません！反映は即時です。

どうでしょう？このようなパラメータの調整の繰り返しを行うとビルドしてアプリ再起動して確認を繰り返す時間は結構馬鹿にならないと思いますがそれがweb開発なみに修正が完了してしまいます。長い目で見るとおおきく時間の効率化を図れると思います。

#その多機能
その他の機能としてパラメータチューニング用の設定画面を持っており、特殊な変数を通してそれを利用することができます。
![スクリーンショット 2014-05-30 10.07.52_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/e87d58e7-6d83-d696-e3d9-defd435659c0.png)
この設定画面のパラメータはコード上からアクセスできます。

INParameters[0]

INColors[0]

と言った配列で存在しており、上記の用な記述でアクセスすることができます。

例えば今回の場合は色の変更なのでカラー変更用を用いてみます。

![スクリーンショット 2014-05-30 10.32.50_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/04fc48a6-df0b-1d66-9a08-e8421acfb844.png)

先ほどのカラー指定をINColors[0]に変更しました。当然この変更もInjectionで反映できます。

![スクリーンショット 2014-05-30 10.33.12_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/3b6736bb-1928-18d4-4660-da00e1c757f3.png)

0の指定なので、5つあるパレットの一番上になりますのでこれをクリックするとカラーパレットが出てくるので、赤に変えてみます。

![スクリーンショット 2014-05-30 10.33.26_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/d00f02a2-7993-e8a5-2cd1-4a0bde54b03e.png)

そして、Injection実行すると

![スクリーンショット 2014-05-30 10.33.43_120.png](https://qiita-image-store.s3.amazonaws.com/0/37731/26b30e25-5ec8-e7e9-849a-c2144b3dbb3c.png)

見事に赤になりました！

本当に

#ビルドやり直ししてアプリ再起動など、いっさい必要ありません。#


このようにサポートツールもあり、非常に便利なため皆さん使ってみてはいかがでしょうか？






##### appwchr post
----

[API開発の効率化の架け橋！APIのStubサーバーを導入して,API開発に効率化、スピード化、柔軟性を手に入れよう！](http://qiita.com/appwatcher/items/49807e72d9600db7196d)

[アプリエンジニアから見てAPI設計において気をつけてもらえるとうれしいこと](http://qiita.com/appwatcher/items/4a0dd09c393cc70d961a)

[Goodbye... Jenkins... Jenkinsを卒業してお手軽CI! iOSもAndroidもCircle CIでアプリのCIを回そう](http://qiita.com/appwatcher/items/4cdf39804d6e46ab7af5)

[まだTestFlight使ってたの？急げ！終了目前のTestFlightから,今すぐにiOSもDeployGateに移行しよう！移行パターンも紹介するよ。](http://qiita.com/appwatcher/items/632460e15fbdb81b7a71)

[Swiftを使ってみて直面した闇。現時点で現場でSwiftを採用すべきかどうかの判断材料](http://qiita.com/appwatcher/items/50295e82ab0095902aaa)

[iOSの開発をする上で絶対に使うべき！外せない！webサービス、開発ツール集【完全版】](http://qiita.com/appwatcher/items/07a3babcb9b6cefb307e)

[注目のiBeacomなどの波に乗り遅れないために！iOSのBluetooth開発を容易にするライブラリを書きました。]
(http://qiita.com/appwatcher/items/7491beffd7260b713542)

[まだまだあった！iOSの開発を劇的に改善する最新のwebサービス、開発ツール集１]
(http://qiita.com/appwatcher/items/f0024fe2ac34da345f04)

[さらに快適なアプリ開発を！iOSの開発をもっと劇的に改善する最新のwebサービス、開発ツール集2]
(http://qiita.com/appwatcher/items/c15d7311e71b4c2b77f1)

[スパゲッティから脱出！iOS開発における遷移の問題をすっきり解決する便利ルーティングライブラリをご紹介]
(http://qiita.com/appwatcher/items/259e8d13fff0547e90af)