【Xcode/Swift】ビルド環境をStaging、Dev、Releaseにスキーマを分ける方法

はじめに

モバイルアプリ開発において、環境ごとにビルド先を変更して開発するのが一般的です。

どういうことかというと同じアプリでも、リリース用とテスト用と開発用で分けるという意味です。

以下の対応を行うと、同じXcodeプロジェクトで三つの同じ内容のアプリをインストールできるようになります。

Dev(Debug):開発用

なんらかの機能を実装するときに、適当なデータを入れて確認したり、実装するときのビルド環境。主に開発者が使う。

Staging:テスト用

機能の実装が終わり、しっかりとその機能が動いているかを確認するときに使うビルド環境。主に顧客(第三者)が使う。

Release(prod):リリース用

名前の通り、現在リリースされているアプリと全く同じ動きをするビルド環境。一般のユーザーが使う。

ということで、今回は上記のように、Dev、Staging、Releaseにビルド環境を分ける方法を解説していきます。

ビルド環境の分け方

プロジェクト作成

まずはプロジェクトを作成します。今回はStoryboardで作成しました。

Stagingを作成

次に、Staging環境を作成していきたいと思います。

STEP.1
現状のビルド環境の確認

まずは、現状のビルド環境を確認しましょう。

①左のメニューからプロジェクトを選択

②PROJECTを選択

③Infoを選択

そうすると、真ん中らへんにConfigurationsという項目でDebugとReleaseが表示されています。つまり、開発用とリリース用は元からあります。なのでここではStaging環境を追加するだけでOKです。

STEP.2
Configurationsを追加

プラスボタンを押して、Duplicate "Debug" Configurationsをクリック

STEP.3
Stagingと入力

STEP.2で追加したConfigurationsのNameにStagingと入力

これで、ConfigurationsにStagingが追加されました。

STEP.4
Active Compilation Conditionsを修正

①Build Settingを選択

②右上の検索バーにActive Compilation Conditionsと検索する。

③Stagingの右側をSTAGINGに変更

これで、とりあえずStagingの追加が完了しました。

アプリごとにスキーマを設定

次に、この画像のところでDebug、Staging、Releaseを選択できるようにしていきましょう。

STEP.1
Manage Schemesを選択

上のShemeからManage Schemes…をクリック

STEP.2
Staging用を複製

①元からあるSchemeを選択

②設定のアイコンをクリック

③Duplicateをクリック

STEP.3
Stagingを作成

①Runを選択

②Stagingに変更

③Infoを選択

④Build ConfigurationをStagingに変更

⑤Closeをクリック

STEP.4
Stagingを複製

①Stagingを選択

②設定のアイコンをクリック

③Duplicateをクリック

STEP.5
Releaseを作成

①Releaseに変更

②Build ConfigurationをReleaseに変更

③Closeをクリック

STEP.6
Dubugを作成

同じように、複製しDubugも作成します。

STEP.7
最初にあったやつを削除

最初あったスキーマを削除しましょう。

Deleteをクリック

STEP.8
確認

以下の状態になればOK

これでスキーマを分けることができました。

環境ごとに処理を分岐

スキーマが分けられているかを確認しましょう。

スキーマごとに処理を分けるには以下のように記述します。ViewDidLoadに記述してprintで確認してみましょう。

#if DEBUG
  print("🛠Debug")
#elseif STAGING
  print("🧑🏻‍💻Staging")
#else
  print("📱Release")
#endif

上記のコードを記述した状態で、まずはDebugで実行してみましょう。

以下のように、🛠Debugと表示されるはずです。

Stagingで実行してみると、🧑🏻‍💻Stagingと表示されるはずです。

環境ごとにアプリを別々にする

スキーマは分けることができましたが、現状、同じアプリで実行するような形になってしまっています。

左の画像のように、DevとStagingでアプリを分ける対応をしていきたいと思います。

STEP.1
User-Definedを追加

①左のxcode.projをクリック

②PROJECTをクリック

③Build Settingsをクリック

④プラスボタンをクリック

⑤Add User-Defined Settingをクリック

STEP.2
項目を追加

BUNDLE_DISPLAY_NAME_SUFFIXと入力

STEP.3
環境ごとに変更

①矢印をクリック

②DebugはDebug、Releaseは何もなし、StagingはStagingに変更しましょう。

STEP.4
Product Nameで検索

①TARGETSをクリック

②Build Settingsをクリック

Product Nameで検索する

STEP.5
書き換える

①Product Nameと書いてある右側をダブルクリック

$(TARGET_NAME)${BUNDLE_DISPLAY_NAME_SUFFIX}と入力

STEP.6
アプリを削除

前回ビルドしたアプリは紛らわしいので削除しましょう。

STEP.7
それぞれのスキーマで実行

それぞれのスキーマで実行してみてください。以下のように、アプリが別々でインストールされるはずです。

FIXME:bundle Identifierも分ける手順を追記する

完成