この物語は現実で起こった物語を120%くらい脚色したフィクションです。
もう1度いいます、フィクションです。現実の人物や組織、アプリ等とは一切関係がありません。
要約
- チームで使うXcodeのversionを揃えよう
- macOSのversionによって使用できるXcodeのversionは左右されるので、OS updateは慎重に
- Mac App StoreからXcodeをインストールするのは止めよう
- AppleはSDKのダウングレードであれば審査は許容してくれる
序
Xcode 11及iOS 13がリリースされたことにより、世界はDark Mode Sideに堕ちた。
そんな世界の中の日本という国の東京/新宿と呼ばれる場所で事件は起きた。
「なんじゃぁぁぁぁぁーーーーー!!こりゃあああああぁぁぁぁーーーーーー!!!」
オフィスにこだまするKWTBの声。
腹でも撃たれて血を出したのだろうかと思いつつ、僕には関係ないことと思って日課のTwitterを眺める。
「くぁwせdrftgyふじこlぱqwせdrftgyふじこlp」
KWTBがなおも何か言っているが、自分には関係ないことだろうと気にも止めない。
そんなさなかSlackで僕宛にメンションで開発部のリーダーIHJRから話が飛んでくる。
氏、曰く「さきほどリリースしたiOSアプリの見た目がおかしい。至急調査されたし。」
「なるほど。やれやれ、短い平和な日常だったぜ」とぼやきつつも、
即座に頭を切り替えて起こっている自体の把握に取り掛かった。
破
事象をまとめるとこうだ。
問題は…
- アプリを起動すると本来であれば白色で表示される背景が黒く表示されている
- 黒くなっている背景は全体ではなく、画面のコンポーネント単位程度で発生している
- WebViewを除くほぼ全ての画面で発生している
該当端末は…
- iPhone
- iOS 13系
(なんてこった。こんなことが起こり得るのか…)
起きている事象の原因と理由に想像を巡らせ思考の波の中でため息をついた。
そしてこんなことが起こる理由は1つしかない。
アプリの申請を行ったNZKGに確認を取りたかったが、遅刻をしており連絡がまだ取ることができなかった。
ひとまずSlackにメッセージだけ残し、推測を検証する作業にとりかかった。
……
検証内容は至極簡単だ。
- Xcode 11の最新版を起動する
- iOS 13の実機端末で実行する
- iPhoneのDark ModeをONにする
なるほど、Q.E.D.
想像の通りXcode 11で実機実行したアプリが、今App Storeでリリースされたものと完全に一致し、
Dark Modeが意図せず適用されていることが確定した。
ひとまず、KWTBに説明すべくSlackで原因と思われる内容を含め記載。
そして次に思考をシフトする……今回のこの事象をどう決着つけるかだ。
取りうる手は、
- 直前まで開発に使用していたXcode 10の最新版で再度申請
- Xcode 11の最新版でDark Mode対応を行う
前者は、iPad対応しているprojectから対応を外すことを許さないAppleが認めるのか怪しが賭けだ
後者は、Dark Mode対応すると工数が今からどれだけかかるかもわからない上、modal表示もdefaultが変わっており、進行していた機能改修を止めて対応しなければいけない。
開発部のSlackで、このことを伝えどうするか相談する形を取ったが、
前者をやりつつ、前者がダメだったときに備え、後者の最低ラインを実装する方向しかもはや選択肢はなかった。
そんな折にGoogleのCEOサンダー・ピチャイに似たO0CHが、慧眼で本質を射抜く。
「Dark ModeがOnでも背景を今までと同じ色で表示することはできないんですか?」
どんな時も沈着冷静で頭脳は大人身体も大人な名探偵ばりの推理をいつも披露する私だが、どうもこの時は珍しく焦っていて正常に判断できていなかったようだ。そうだ、Dark Modeに無理に対応する必要はないのだ。
(サンキュー!ピチャイ!)
ポーカーフェイスを装いつつ心の中でピチャイに感謝し、即座にDark Mode Onでも背景が変わらずに済む方法を調べた。
If you need extra time to work on your app's Dark Mode support, you can temporarily opt out by including the UIUserInterfaceStyle key (with a value of Light) in your app’s Info.plist file.
(意訳:Dark Modeを回避するなら
Info.plist
にUIUserInterfaceStyle
のキーにLight
の値を設定しなさい)知恵の実の聖書より引用
そして何食わぬ顔で言う。
「設定でDark Mode余裕で回避できるわ〜めっちゃ余裕っすわ」
何故かチャラい言い方になってしまった。
離
後日談というか今回のオチ
Dark Modeを回避や対応するなんてことはなく、
- 直前まで開発に使用していたXcode 10の最新版で再度申請
これをNZKGが出勤後に特急申請を行い、そして問題なく承認された。
ただそれだけだ。
審査承認後に即座にリリースされ、見てくれがイカれたアプリは短期間でApp Storeから消え去った。
iOS 13かつ常時Dark ModeをOnにしている人しか遭遇しなかったので、影響は大きくなかったと思う。
教訓
今回この事件が起きたことの理由の1つとしてアプリの申請を行うNZKGのMacBook Proでは、Mac App StoreからXcodeをインストールし、updateをボタン1つで行えてしまったことだ。
私の中ではProjectで使用するXcodeのversionは統一されるものだと思っていたし、
iOSに関わる人なら誰しもが知っている常識、暗黙の了解だと思っていた。
しかし、そんなことはなく、知っているかどうかはどこかで誰かから知識を共有される前提が必要となる。
そしてProjectのREADMEにXcodeのversionが指定されていても、誰もが目を通してその通りにするわけではないし、READMEも読まれなければ意味がないことを思い知った。
このProjectのXcodeの環境回りを整えていたのは私なのだが、整えた際にXcodeのversionについて周知しなかった瑕疵が大きく今回のことを深く反省しなければならない。
格言
かの有名なKSKW氏もこう仰っていた。
「XcodeはApple DeveloperからDLして入れるべし」と。
もしくはXcodeGen使うべきよね。