Xcodeのスキームと構成を使ってiOSアプリの複数環境(開発・QA・本番)を効率的に管理する方法
iOS開発者であれば、開発環境、QA環境、ベータ環境、本番環境といった複数の環境を管理する必要があることをご存じでしょう。これらの環境ごとに、サーバーURL、アプリアイコン、各種設定が異なります。
通常、特定の環境向けにビルドを作成する際は、サーバーURLも変更しなければなりません。定数ファイル内のハードコードされたフラグ値やマクロを書き換える方法もありますが、このやり方は管理が煩雑になり、ミスも起こりやすくなります。
しかし少し工夫すれば、どんなケースにも柔軟に対応できる仕組みを作れます。そのアイデアとは、「スキーム」と「ビルド構成」を分けて作成することです。こうすることで、サーバーURL、アプリアイコン、Plistファイル、その他の設定を環境ごとに簡単に切り替えられるようになります。
このチュートリアルでは、スキームと構成を使って複数の環境を管理する方法を解説します。
全体の手順
- プロジェクトのセットアップ
- スキームとビルド構成の追加
- 構成設定ファイルの追加
- Plistファイルの追加
- ビルド構成と構成ファイルの紐付け
- スキームとビルド構成の紐付け
- プロジェクトの実行
1. プロジェクトのセットアップ
Xcodeを開き、適切な名前を付けて新しいSingle View Applicationプロジェクトを作成します。
2. スキームとビルド構成の追加
スキームを追加する前に、知っておくべき点があります。すべてのXcodeスキームには、デフォルトでDebugとReleaseという2種類のビルド構成が用意されています。必要に応じて、特定のビルド構成に固有の設定を行うことも可能です。
まず、左側のProject Navigatorでプロジェクトを選択し、Infoタブ(InfoとBuild Settingsの2つの選択肢があります)を開きます。Configurationsセクションで、5つの環境(Development、Production、QA、Beta、UAT)それぞれに対応する構成を追加していきます。

まずDebugをダブルクリックして「Debug (Development)」にリネームします。同様にReleaseもダブルクリックして「Release (Development)」に変更します。次に「+」ボタンをクリックし、Duplicate Debug (Development)とDuplicate Release (Development)を選択して複製し、複製した構成名を他の環境名に書き換えていきます。

続いてスキームの作成です。Xcode左上の「Manage Schemes」を開くと、すでに1つのスキームが存在しているのがわかります。これを「Development」にリネームするか、既存のものを削除して新しく「Development」という名前で作成します。残りの4つの環境についても同じ手順でスキームを追加してください。

ここで注意点です。「Shared」チェックボックスに必ずチェックを入れておきましょう。すべてのスキームを追加すると、Manage Schemesの画面は以下のようになります。

3. 構成設定ファイルの追加
プロジェクトを右クリックして「New File」を選択し、「Configuration Settings File」を追加します。ファイル名は環境名と同じにしておきます。

すべての構成ファイルを追加すると、Project Navigatorは以下のようになります。

ここからが最も重要なパートです。対応する構成ファイルにサーバーURLやその他のカスタムキーと値を記述していきます。

4. Plistファイルの追加
既存のinfo.plistを「development.plist」にリネームします。その後、同じplistファイルをコピー&ペーストして環境の数だけ用意し、それぞれのファイル名を環境名に合わせて変更します。plistファイルには環境固有のキーと値を設定できます。さらに、構成ファイルで定義したキーを次のようにplistファイルへ反映させます。

次に、各ビルド構成に対して適切なplistのパスを設定します。Targetsからplistファイルを選択し、DebugとReleaseの両方の構成に対して同じ名前を指定します。

5. ビルド構成と構成ファイルの紐付け
Projects Info内のすべてのビルド構成(Debug と Release)を1つずつ選択し、プロジェクトに追加済みの適切な構成ファイルを割り当てます。

すべての構成ファイルを紐付けると、Build Settingsは以下のようになります。

これで、すべての構成ファイルを対応するビルド構成に正常に紐付けることができました。
6. スキームとビルド構成の紐付け
最後のステップは、スキームとビルド構成の紐付けです。任意のスキームを選択して「Edit Scheme」を開き、そこで適切なビルド構成を設定します。

7. プロジェクトを実行してみよう
以上でセットアップは完了です。あとはスキームを選択して実行するだけで、対応する環境が自動的に切り替わります。サーバーURLなどの値を取得するために、私はEnvironment.swiftというファイルを作成しました。参考にしてみてください。
ViewController.swiftなど任意のファイルからサーバーやその他の設定値を取得するには、わずか1行のコードを書くだけで済みます。
また、Build Settingsから環境ごとに異なるアプリアイコンを設定することもできます。そうすれば、デバイスにインストールされているビルドがどの環境向けなのか、一目で判別できるようになります。

完全なサンプルプロジェクトはGitHubで公開しています。不明な点があればダウンロードして確認できます。
まとめ
プロジェクトをビルドするたびにサーバーURLやその他の設定を手動で書き換えるのは時間の無駄です。今回紹介した方法を使えば、複数の環境、アプリアイコン、構成を最も簡単に管理できます。ぜひあなたのプロジェクトでも試してみてください。
-
iCloud写真へのアクセスと管理方法を徹底解説!無料5GBを賢く活用するコツ
iPhoneを長年使っている方なら、Appleの「マイフォトストリーム(My Photo Stream)」機能をご存じでしょう。まだ馴染みのない方のために説明すると、これはiCloudユーザー向けの機能で、写真を自動的に同期し、どのAppleデバイスからでもアクセスできるようにするものです。 例えば、iPhoneで撮影した写真をiCloudにアップロードしておけば、フォトストリームが有効になっている限り、iPadやMacBookなど他のAppleデバイスからも同じ写真を閲覧できます。 ただし、ここに一つ注意点があります。iCloudの無料容量はわずか5GB。大量のデータを扱うユーザーにとっては
-
iOS 16のダウンロードとインストール方法を徹底解説【対応機種一覧つき】
Appleの年次(しかも無料の)ソフトウェアアップデートが、iPhoneに数々の新機能をもたらします。数か月にわたるベータテストを経て、待望の大型アップデートがついにダウンロード可能になりました。この記事では、iOS 16の入手方法と注意点をご紹介します。アップデート内容の詳細については、「iOS 16新機能ガイド」もあわせてご覧ください。自分のiPhoneはiOS 16に対応している?おそらく対応しています。ただし、iOS 16のリリースに伴い、初代iPhone SE、iPhone 6s、iPhone 7のサポートは打ち切られました。以下がアップデート対象モデルの一覧です。なお、iPhone