Xcode7 でスキームの設定をする

> はじめに


```objc:code
ifdef DEBUG
```
これを使って、開発時だけ使用するコードを書く人は多いと思います。
今回のお話は、この **DEBUG** の部分を自由に追加したり、
その追加したものを **スキーム** で切り替えられるようにしましょう、というお話です。

※本記事は Xcode7.2 で実際に行ったことを書いています

> ゴール

```objc:code
#ifdef DEBUG
    NSLog(@"スキームは DEBUG です。");
#elif MYDEBUG
    NSLog(@"スキームは MYDEBUG です。");
#else
    NSLog(@"スキームは DEBUG と MYDEBUG 以外です。");
#endif
```
このように NSLog の出力を **Xcode のスキームで** 切り替えられるようにすることをゴールとします。

※ **Xcode のスキームで切り替え**というのは下の図の部分のハイライトされている部分の切り替えのことです
![ScreenShot_3_highlight.png](https://qiita-image-store.s3.amazonaws.com/0/1339/4f21131c-851e-694d-da80-bb3650a8f270.png)


では、順を追って実際にやってみましょう。

## 1.プロジェクトを作る
Single View Application で SchemeSample という名前でプロジェクトを作りました。
作った直後の画面はこんな感じだと思います。
![ScreenShot_3_original.png](https://qiita-image-store.s3.amazonaws.com/0/1339/a7a0bc9e-6d48-599a-4e86-04aefc125349.png)

## 2.Configurations に **MyDebug** を追加する
![ScreenShot_4_highlight.png](https://qiita-image-store.s3.amazonaws.com/0/1339/99c1d693-3d68-0790-8b96-d9943168468c.png)

#### 2.1.Configurations の 「＋」 から **Duplicate "Debug" Configuration** を選びます
![ScreenShot_5.png](https://qiita-image-store.s3.amazonaws.com/0/1339/4f955499-a754-26cc-86e7-5a9d694047d0.png)

#### 2.2.名前を **MyDebug** にします
![ScreenShot_5_input.png](https://qiita-image-store.s3.amazonaws.com/0/1339/65fbb034-86c8-b833-6b3c-ba77e7b2ab1f.png)

MyDebugというのが出来上がったと思います。
![ScreenShot_6_highlight_anotation.png](https://qiita-image-store.s3.amazonaws.com/0/1339/55791a17-241e-0219-3cf9-6bf5dfc20d36.png)

## 3.スキームに **MyDebug** を追加します
#### 3.1.スキームを編集するために、スキームの【Manage Schemes】を選びます
![ScreenShot_7_highlight_anotation.png](https://qiita-image-store.s3.amazonaws.com/0/1339/9a1a095c-0af2-41d3-4072-868dfa5d0b03.png)

開くと以下のような画面になります。
![ScreenShot_7.png](https://qiita-image-store.s3.amazonaws.com/0/1339/73fb1467-2a00-700e-ac9a-7c68d88f2ff1.png)

#### 3.2.スキームを追加します
「+」ボタンをクリックすると以下のような画面が出てきます。
![ScreenShot_7_subWindow.png](https://qiita-image-store.s3.amazonaws.com/0/1339/c2118319-3acf-6576-561b-be3323eb53ed.png)

「SchemeSample_MyDebug」と入力します。
![ScreenShot_7_subWindow2.png](https://qiita-image-store.s3.amazonaws.com/0/1339/ff5a6137-25c4-4807-1bd7-888023456194.png)

入力して OK をクリックすると以下のようになると思います。
![ScreenShot_8.png](https://qiita-image-store.s3.amazonaws.com/0/1339/802eac51-0422-bce2-cbd2-475b5c9e9d9d.png)

右側の「Shared」にチェックを付けておきます。
最終的には以下のようになります。
![ScreenShot_9.png](https://qiita-image-store.s3.amazonaws.com/0/1339/c998d054-84d5-3984-15c0-67a88f61cc54.png)

#### 3.3. Configuration とスキームを関連付けます
作成した 「SchemeSample_MyDebug」というのが出来ているはずなので、
Xcode のスキームのところで、「SchemeSample_MyDebug」を選択します。
![ScreenShot_10_highlight_anotation.png](https://qiita-image-store.s3.amazonaws.com/0/1339/88ca927b-9fca-8992-922e-29416b06d5bd.png)

スキームのところをクリックすると以下のような選択画面が出ると思います。
「SchemeSample_MyDebug」を選択します。
![ScreenShot_10_subWindow.png](https://qiita-image-store.s3.amazonaws.com/0/1339/5796a57d-2c7f-8538-a39f-1f16f87f337f.png)

「SchemeSample_MyDebug」を選択後、再びスキームのところをクリックし、「Edit Scheme」を選択します。
![ScreenShot_10_subWindow2.png](https://qiita-image-store.s3.amazonaws.com/0/1339/6fa6a93e-fd0c-9e35-e564-bdde5eacba0a.png)

「Edit Scheme」を選択すると、以下のような画面になると思います。
![ScreenShot_10_2.png](https://qiita-image-store.s3.amazonaws.com/0/1339/4af230b4-1067-2b78-4a0e-ad0decb98212.png)

Build Configuration というところを変更します。
![ScreenShot_10_3_highlight_anotation.png](https://qiita-image-store.s3.amazonaws.com/0/1339/5397da33-068a-f732-41e9-bd61bebd5c8e.png)

「MyDebug」を選択します。
![ScreenShot_10_4.png](https://qiita-image-store.s3.amazonaws.com/0/1339/4b9af0a6-7f51-573c-98c6-71d3b8869f5c.png)

変更後の画面は以下のようになっていると思います。
![ScreenShot_11_2.png](https://qiita-image-store.s3.amazonaws.com/0/1339/172d0666-b8ee-d479-0eb0-a255376cb2a2.png)

変わったところを確認しましょう。
↓の図のようになっていたら Close ボタンで閉じて大丈夫です。
![ScreenShot_11_2_highlight_anotation.png](https://qiita-image-store.s3.amazonaws.com/0/1339/26156956-5169-e81c-6d6b-edbe0f595208.png)
　　
> ちょっと一休み

ここまで出来たら、スキームによる切り替え自体はできるようになった状態となります。
あとは、ゴールのところに書いてある、【MYDEBUG】というものを用意するだけです。

- - -

## 4.ifdef MYDEBUG で使える【MYDEBUG】を追加する
#### 4.1.作業場所(Target の Build Settings)を開く
![ScreenShot_12_highlight_anotation.png](https://qiita-image-store.s3.amazonaws.com/0/1339/70fda749-9281-711b-086e-c0fc1dc014c6.png)

#### 4.2.MYDEBUG=1 を実際に追加する
4.1. の図に書かれている、【ここを編集します】のエリアの DEBUG=1 の辺りをダブルクリックすると、以下のようなウィンドウが出てきます。
![ScreenShot_13.png](https://qiita-image-store.s3.amazonaws.com/0/1339/040f1f10-45ec-9a3d-f6a9-6856d7693754.png)

ウィンドウに最初から書かれている、【DEBUG=1】と【$(inherited)】を削除します。
※選択してウィンドウ下の「ー」をクリックすれば消せます
![ScreenShot_13_1_highlight_anotation.png](https://qiita-image-store.s3.amazonaws.com/0/1339/336d327e-4c14-78cb-dce5-3112234e7c5c.png)

削除後、「＋」をクリックして【MYDEBUG=1】を入力します。
入力後は以下のようになっていると思います。
![ScreenShot_13_2.png](https://qiita-image-store.s3.amazonaws.com/0/1339/3b9d1f82-d6ad-7f40-6aa7-fa6478b0c488.png)

これで設定自体は終わりです。
画面は以下のようになっていると思います。
![ScreenShot_13_3.png](https://qiita-image-store.s3.amazonaws.com/0/1339/8166830e-3676-ca98-9fc3-2c4d4223511c.png)

後は、実際にプログラム側で利用するだけです。

## 5.実際にプログラム側で利用する
どこでもいいのですが、手っ取り早く、ViewController.m の viewDidload に、
ゴールのところに書いていたコードを書いてみましょう。
![ScreenShot_14.png](https://qiita-image-store.s3.amazonaws.com/0/1339/98c8b678-f53c-1f14-0c32-cbfffafad92d.png)

実行してみましょう。
ログはどのように表示されたでしょうか？
![ScreenShot_15_highlight_anotation.png](https://qiita-image-store.s3.amazonaws.com/0/1339/6afeeffb-0dcd-5544-0957-cfc43c9d455d.png)

↑のように狙い通りのログが出たでしょうか？
狙い通りのログが出せなかった人は、途中で何らかの設定を間違えているか、現在選択しているスキームを確認してみてください。

> ちなみに・・・

実際のアプリ開発では、API の接続先や、ログの出力有無やフォーマットを切り替える必要があると思うので、↓の画像のように、Debug, 任意のスキーム, Release 等で分けておいて、スキームで管理できるようにしておくと便利だと思います。
![ScreenShot_16.png](https://qiita-image-store.s3.amazonaws.com/0/1339/55e8372c-5e81-7154-6efd-fc6a740e5975.png)

SchemeSample_Debug で実行した場合
![ScreenShot_17.png](https://qiita-image-store.s3.amazonaws.com/0/1339/c34e2d97-1be9-b892-2485-3aa392c38cb7.png)

SchemeSample_Release で実行した場合
![ScreenShot_18.png](https://qiita-image-store.s3.amazonaws.com/0/1339/5b354a19-4234-9c7a-9608-bf9df0a42fb8.png)

> まとめ

自分の場合、今までスキームの設定が必要なほどのアプリ開発になったことがなかったため、割りと最近、初めてこの辺りの設定をしました。

できるようになると割りと簡単な話なのですが、【やったことがない状態】だった立場からすると、【どこにどう設定すればいいのか？】というのが手探り状態で、記事を検索しても古めの記事しかなかったので、Xcode7 での設定方法を、自分への備忘録の１つとして記事にさせていただきました。

とっかかりに苦しんでいる、ハマっている、うまく行かない人の助けになればと思います。

- - -
参考にした記事は[こちら](http://qiita.com/uasi/items/79aecac40f1b2a5f929b)です。
ほぼ内容も同じです。
参考に試してできた手順をこの記事に書いたようなものです。