[Xcode] ビルド環境を切り替えるためにSchemeを追加する

2017.02.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

おばんです、Counter-Strike: GOというFPSをやっていたら、同じチームの海外勢が「すごーい」「すっごーいwwあっはっはwwうぇw」と連呼していて世界は平和だな、と思った田中です。

今回はビルド環境を切り替えるためにSchemeを追加する方法とその周辺設定を紹介します。Xcodeの設定方法を説明する箇所が多いので、わかりやすくするために画像を多くして紹介していきます。

Schemeを切り替えることでできること

Schemeを切り替えることで #if, #elseif, #else(, #endif) による分岐を行うことができます。これは例えば以下のような書き方。

#if DEBUG
    print("デバッグ環境")

#elseif STUB
    print("スタブ環境")

#else
    print("その他環境")

#endif

通常のif分岐とは異なり、分岐する条件にビルド環境を用いることができるようになります。

ちなみにDebug環境とRelease環境はプロジェクト作成時にデフォルトで存在しています。

こんな時に役立つ

基本的には本番環境とテスト環境の切り替えの時によく使います。具体的には以下の二つです。

  • APIの接続先の変更
  • Mockへの切り替え

APIの接続先の変更

var baseURL: String
            
#if MYDEBUG
    baseURL = "https://hogehoge-stg.com/"
#else
    baseURL = "https://hogehoge.com/"
#endif

Mockへの切り替え

var bleManager: BLEManager
            
#if MYDEBUG
    bleManager = BLEManagerMock()
#else
    bleManager = BLEManager()
#endif

設定手順

Schemeの追加

ビルドターゲットを変更するボタン(Set the active scheme)をクリックして、Manage Schemesを選択します。

1

開いたウィンドウ上でDuplicate対象のScheme(今回はプロジェクトにもともとあったもの)を選択して、設定ボタンからDuplicateを選択します。

2

するとまた新たにウィンドウが開くので、下の画像の箇所からSchemeに名前をつけます。

3

再度ビルドターゲットを変更するボタン(Set the active scheme)をクリックして、今追加したSchemeが存在すればSchemeの追加は完了です。

4

Build Configurationを追加する

Project > Info > Configurations の順に選択していき、Duplicate対象のConfigurationを選択します。今回はDEBUG。

1

+ボタンを押してDuplicateします。

2

追加されたコピーに任意の名前をつけます。今回はMyDebug。

3

Edit Schemeを選択し、

4

対象のビルドターゲットのBuild Configurationを新しく作ったものに選択します。

5

Preprocessor Macrosの追加

Targets > Build Settings > Preprocessor Macrosで検索 > Preprocessor Macros のMyDebugの項目を確認します。

6

$(inherited)を削除し、MYDEBUG=1(任意の名前)を入力します。

7

Other Swift Flagsの設定

Targets > Build Settings > Other Swift Flagsで検索 > Other Swift Flags のMyDebugの項目に -D MYDEBUG(任意の名前) と入力します。

8

これで設定は完了です。

動作確認

簡単に動作確認するのであれば、ビルドターゲットを新しく作ったものを選択して

9

以下のコードで確認可能です。viewDidLoadなどに書いて実行して、"MYDEBUG"とprintされれば成功です。

#if MYDEBUG
    print("MYDEBUG")
#else
    print("OTHER")
#endif

まとめ

ビルド環境を切り替えるためにSchemeを追加する方法とその周辺設定を紹介しました。

APIの接続先やBLEなど、外部環境が関わる部分にStaging環境やモックを用意してデバッグしていくことは多いと思います。その際に今回紹介した方法が有用かと思われます。お役立ていただければ幸いです。

参考・関連