Xcode プロジェクト基本設定 - shirajira/family-account-ios GitHub Wiki

Xcode プロジェクト基本設定

前編:
Xcode プロジェクト新規作成

はじめに

本稿では,開発初期によく設定する項目を雑多にまとめる。
プロジェクトの性質や運用方針によっては設定不要な項目もあるため,必要なものを適宜選択してください。

Git 管理しないファイルを指定する

こちらを参考に設定してください。
Git 特定のファイルをコミット対象から除外

プロジェクトの設定

Xcode 左メニューにある Project navigator -> Project name -> PROJECT を開く。

Deployment Target

PROJECT -> Info -> Deployment Target に,サポートする iOS の最低バージョンを設定する。
サポートする OS の範囲が広くなればなるほど開発コストも大きくなるので注意すること。
最新のメジャーバージョンのひとつ前くらいまでが現実的か。

Localizations

PROJECT -> Info -> Localizations に,サポートする言語を設定する。
初期設定は英語のみ。

関連:
Xcode アプリのローカライズ

ターゲットの設定

Xcode 左メニューにある Project navigator -> Project name -> TARGETS -> Project name(〜Tests ではないもの) を開く。

Identity

TARGETS -> General -> Identity に以下を設定する。

  • Display Name ... ユーザに表示するアプリ名
  • Bundle Identifier ... バンドルID
  • Version ... アプリのバージョン番号
  • Build ... 同一 Version のビルド番号

関連:
Xcode バージョン情報の設定方法

Deployment Info

先ほど Deployment Target で指定した iOS のバージョンが表示されているはず。
サポートするデバイス(iPhone, iPad, Mac)にチェックを入れる。

Device Orientation にはサポートするデバイスの向きを設定する。

テスト設定

こちらを参考に設定してください。
Xcode テスト環境を設定する

SceneDelegate を削除する

SceneDelegate とは iOS 13 から実装された新しいライフサイクル。
これを活用すると,ひとつのアプリに対して複数のインスタンスを生成できるようになる。

SceneDelegate の実装は任意であるため,複数起動を想定しないのであればいっそ削除してしまったほうがヘルシーな構成になる。
筆者は問答無用で削除している。

関連:
Xcode SceneDelegate を削除する

ちなみに AppDelegate は必須。削除してはいけない。

ステージング環境を追加する

Xcode で新規作成したプロジェクトには Build Configuration として Debug と Release が用意されている。
しかし Staging に相当する環境設定は用意されていないため,必要な場合は自分で追加する必要がある。

設定方法

PROJECT -> Info -> Configurations+ から,ベースとする設定(Debug または Release)を選択して追加(複製)してください。

環境によって Bundle ID を変える

iOS 上では Bundle ID を変えることによって異なるアプリケーションとしてインストールすることができる。
異なる環境設定のアプリケーションを同一端末上にインストールしたい場合はこの設定が必要。

例えば以下のように設定することが多い。

環境 Bundle ID
開発環境 com.example.myapp.debug
ステージング環境 com.example.myapp.staging
本番環境 com.example.myapp

設定方法

TARGETS -> Build Settings -> Packaging -> Product Bundle Identifier から,各環境用の Bundle ID を設定してください。

環境によってアイコンを変える

環境によってアプリのアイコンを変更するとよりわかりやすい。

設定方法

TARGETS -> Build Settings -> Asset Catalog Compiler - Options -> Asset Catalog App Icon Set Name から,各環境用のアイコンセットを選択してください。

アイコンセットはあらかじめ Assets.xcassets 以下に登録しておく必要がある。

環境によってコードを切り替える

以下のようなコード切り替えを実現するためには,環境ごとに専用のマクロを定義する必要がある。

#if DEBUG
    print("Debug")
#elseif STAGING
    print("Staging")
#else
    print("Release")
#endif

設定方法

TARGETS -> Build Settings -> Swift Compiler - Custom Flags -> Active Compilation Conditions

環境 マクロ
Debug DEBUG
Staging STAGING
Release

TARGETS -> Build Settings -> Swift Compiler - Custom Flags -> Other Swift Flags

環境 マクロ
Debug -D DEBUG
Staging -S STAGING
Release

*Release には何も設定しなくてOK。

独自の暗号化技術を使っていないことを明記する

米国の輸出コンプライアンスにより,独自の暗号化技術を用いている場合は適切なドキュメントを提出する必要がある。
App Store 審査提出時に使用していないことをいちいち回答しないといけないため,それをスキップするための設定となる。
なお,HTTPS など広く普及している暗号化技術はこのコンプライアンスの対象外となっている。

当然,独自の暗号化技術を採用している場合はこの設定はせずに,適切なドキュメントを Apple に提出しましょう。

実装方法

Info.plist を右クリックして,Open As > Source Code から ITSAppUsesNonExemptEncryption キーを追加して false を設定する。

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

または,Open As > Property List から,App Uses Non-Exempt Encryption を追加して NO を設定する。

参考:
App Store Connect の Missing Compliance をなくす方法 - Qiita

アーカイブ設定

アーカイブ時のビルド設定を Release にする。
こうすることにより Release 環境のアプリケーションを App Store に提出することができる。

設定方法

Edit Scheme... -> Archive -> Build ConfigurationRelease にする。

⚠️ **GitHub.com Fallback** ⚠️