はじめに
はじめまして、suzukiです。
本日はXcodeのSchemaを使用しURLの接続先を紹介したいと思います。
以前にURLの接続先の変更漏れがあったので、その時しておくべきだった事の備忘もかねて書かせていただきます。
まずSchemaを理解する前にBuildConfigurationについて説明させていただきます。
XCodeのBuildConfigurationとは
XCodeではBuildConfigurationという設定があります。
こちらは
- 開発環境
- 検証環境
- 本番環境
等それぞれの環境に合わせて読み込むコードを変更したり、参照するファイルを異ならせたりすることが可能です。
たとえばですが
古いXCodeですとProvisioningProfileの設定で DebugとReleaseで異なるProvisioningProfileを設定おりました。
そちらもこのBuildConfigurationの設定を元に
アーカイブするときはデフォルトでReleaseの設定のためReleaseで設定したProvisioningProfile
RunするときはデフォルトでDebugの設定のためDebugで設定したProvisioningProfile
それぞれのファイルが読み込まれております。
スキーマとは
いよいよSchemaについてです。
Schemaとは前述のBuildConfigurationを元に
- Build
- Run
- Test
- Profile
- Analyze
- Archive
上記のコマンドごとにBuildConfigurationを選んで設定することができます。
開発環境のスキーマ 本番環境のスキーマを追加し設定してくことで、開発環境と本番環境の切り替えがとても簡単に行える様になります。
スキーマの追加方法
まずスキーマの追加方法ついて、上部のメニューバーから
Product > Schema > NewSchema と選択
新しくSchemaを追加するダイアログが表示されるのでの名前をつけてOKボタンを押しましょう。
新しく追加したスキーマはRunボタンの右側から変更できます。
スキーマの設定変更
スキーマの設定変更ついて
まず新しいSchemaを選択している状態にし
Product > Schema > Edit Schema と選択
Schemaの設定ダイアログが出てきます。
今回はRunの項目の変更を行います。
Runはシミュレータや実機で起動するときの設定です。
こちらのBuild Configurationの値をReleaseに変更しましょう。
これで今回確認を行いたい内容の動作確認が可能です。
開発と本番で異なる通信の接続先を設定する
それでは本題のコードです。
Schemaを使って自動化していきましょう。
まずは下記の様に定義をしておきましょう。他の箇所からも使いやすい様に共通のクラスなりを作ります。
1 2 3 4 5 6 7 8 9 10 11 12 | struct Const { //厳密にはhostでは無いかもですが... static var host: String { #if RELEASE // 新しく追加したスキーマのBuildConfigはRELEASEためこちらが呼ばれます。 return "https://www.example.co.jp" #else // 元からあるスキーマのBuildConfigはDEBUGのためこちらが呼ばれます。 return "https://devwww.example.co.jp" #endif } } |
続いて呼び出し箇所のコードですが下記の様に呼び出します。
1 2 3 4 5 6 7 8 9 | class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. print(Const.host) let url = URL(string: Const.host + "/残りのURL/") } } |
実際に起動してみると
・最初からあるSchema
・新しく追加したSchema
それぞれ違うURLが作成される事が確認が取れます。
今回設定した内容は限定的な使い方です。
開発環境でビルドした時だけログ出力を行う等
開発と本番で異なる設定にしたい場合は是非とも検討してみてください。
さいごに
開発環境と本番用の環境を交互する際に設定まわりの変更を手動で行うことはめんどくさいです。
本番用のアプリの作成する時に万全の体調でも無いこともよくあります。
簡単で作業の少ない環境を整えることはミスをなくすため大事かと思います。
それでは、最後までありがとうございました。