デバッグ環境と本番環境で異なるUIやロジックを表示・適用したいときに使えるテクニック。
デバッグ環境でのみ出したいメニューやロジックなどがある時に便利。
Contents 非表示
実装
import SwiftUI
struct HomeView: View {
var body: some View {
#if DEBUG
Text("Hello Debug")
.font(.largeTitle)
#else
Text("Hello Release")
.font(.largeTitle)
#endif
}
}
- デバッグ環境では、アプリが
DEBUG
シンボルを持つため、#if DEBUG
内のコードが有効になる。 - 本番環境でリリースビルドをすると
DEBUG
シンボルが無効となり、#else
以下のコードが有効になる。
Debugシンボルの設定
Xcodeの初期状態だとおそらくDebugとReleaseのみなのでそのままでも問題ないが、Staging環境など後付けで入れた環境がありそこもDebug対象にしたい時は設定が必要。
- Xcodeでプロジェクトを開く。
- プロジェクトナビゲータからプロジェクト名を選択。
- ターゲットの「Build Settings」を選択。
- Swift Compiler – Custom Flagsセクションを展開し、「Active Compilation Conditions」を探す。
- デバッグ環境にしたい環境にDEBUGを設定する。
注意点とベストプラクティス
- デバッグと本番のロジックは分離する:
大規模なプロジェクトでは、環境に応じて異なる処理を多数持つ場合、コードの可読性が低下する可能性がある。
環境に依存するロジックは専用の設定ファイルやサービスクラスにまとめるのが良い。 #if DEBUG
の使用箇所を最小限に:
ビジネスロジックの中で#if DEBUG
を多用すると、保守性が低下するので主にUI部分やログ出力で活用する。