NEWTにおけるiOS18対応の進め方
by
Ryuichi Fukami
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
NEWTにおけるiOS18対応の進め⽅ 2024.9.30 【GO/note/令和トラベル】After iOSDC & DroidKaigi 2024 Rick
Slide 2
Slide 2 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 2 Rick @ryu1sazae Reiwa Travel, inc iOS Engineer ☕ 🎧 🛩
Slide 3
Slide 3 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. NEWTの開発環境 3 ● Xcode 15.4, Swift 5.10 → Xcode 16.0 Swift 6.0 ● サポートOS : iOS16~ ● パッケージマネージャー : SPM ● フレームワーク : TCA ● iOSエンジニア : 2名
Slide 4
Slide 4 text
AGENDA CONFIDENTIAL © 2023 Reiwa Travel, Inc. 4 1. 事業要求‧品質‧最新技術追従のバランスを重視 2. 段階的なSwift6対応で備える 3. iOS18対応のスケジュール 4. まとめ
Slide 5
Slide 5 text
AGENDA CONFIDENTIAL © 2023 Reiwa Travel, Inc. 1. 事業要求‧品質‧最新技術追従のバランスを重視 2. 段階的なSwift6対応で備える 3. iOS18対応のスケジュール 4. まとめ 5
Slide 6
Slide 6 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. ‧‧‧ 急激に成⻑するサービスに対する事業の要求に応える 6 8‧9⽉だけでも多くの施策をリリース これらを、iOSエンジニア2名で開発する必要があった
Slide 7
Slide 7 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. カスタマーにとっての品質‧安定性 > 魅⼒的な技術 海外旅⾏は多くて年⼀回という⽅がほとんど 貴重な体験を最⼤限素敵なものにしてもらうために、最⾼の品質 をカスタマーに届ける必要があり、それを保証する必要がある 品質保証のために魅⼒的な技術の選択を犠牲にすることもある 7
Slide 8
Slide 8 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 最新の技術に追従するメリット 8 ● 会社のプロダクト規模で新しい技術を使う楽しさ ● プロダクトとしての表現幅の向上 ● 実装容易性の向上 ● 世で進化する技術とのギャップを埋めることによる負債解消
Slide 9
Slide 9 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. ● 機能開発のスピードはなるべく通常通りを維持したいという事業⽬線での要求 ● iOS18リリース直後でも品質は担保必須 ● 新OS対応時は、QAチームによるテストを⼿厚めに実施するため、このタイミ ングで可能な限りSwift6の対応を進めておきたいというエンジニアの願望 事業要求‧品質‧最新技術追従のバランスが必要 9
Slide 10
Slide 10 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. これらのバランスを獲得するためには、 どのような⼿順‧スケジュールで対応を進めればよいか? 💭 iOS18をサポートするXcode16にて、 Swift6が正式に利⽤可能になった。 幸いSwift6への対応は”段階的”に実施することが可能 🥳 事業要求‧品質‧最新技術追従のバランスを叶えるための⼿段とは? 10
Slide 11
Slide 11 text
AGENDA CONFIDENTIAL © 2023 Reiwa Travel, Inc. 11 1. 品質と最新技術追従のバランスを重視 2. 段階的なSwift6対応で備える 3. iOS18対応のスケジュール 4. まとめ
Slide 12
Slide 12 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. Swift6対応終わってる⽅〜?
Slide 13
Slide 13 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. NEWTアプリは‧‧‧?
Slide 14
Slide 14 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 48 / 57 target完了済み 🔥 (9/27時点)
Slide 15
Slide 15 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 段階的なSwift6対応を実施するためのフラグ 15 enableUpcomingFeature(_:_:) enableExperimentalFeature(_:_:) 利用可能Swift version 5.8~ 5.8~ 用途 次のメジャーバージョンで 導入が決定されている機能を 使用可能 文字通り、実験中の機能を 使用可能 各フラグで有効にできる 機能の確認方法 https://github.com/swiftlang/swift/blob/release/x.y.z/include/swift/Basi c/Features.def Xcode16の登場時になるべく多くのTargetでSwift6モードを使⽤したい → Xcode15.xの利⽤時から、個々のTargetに対して可能な限りSwift6以降の機能を有効化 🔥
Slide 16
Slide 16 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 部分的にSwift6の利⽤開始を遅らせるためのMode指定 16 swiftLanguageMode(SE-0435) 利用可能Swift version 6.0~ 用途 Target毎にSwiftのversionを指定 e.g. 一度にSwift6への移行が難しいTargetでは過去のversionを指定
Slide 17
Slide 17 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. ● Feature target 画⾯単位のUI‧TCAのReducer サービス内のコンテキスト単位 ● Dependency target(e.g. ApiClient) 副作⽤(e.g. API通信, ログ送信, etc...) ● その他のTarget 共通コンポーネント, モデル, リソース, etc... NEWTのPackage構成(簡易版) 17
Slide 18
Slide 18 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 以下の懸念から、UI‧TCAのReducerを含むFeature TargetはSwift6モードの利⽤を、iOS18対応版リ リース後に遅らせた。 ① UI周りは、新OS‧Xcode登場直後に不具合発⽣が予想されやすく‧対応に時間もかかり得る iOSエンジニア2名で機能開発も並⾏して⾏うために、避けられる⼯数をなるべく避けたい。beta環境で の開発だと尚更。 ② TCAへの依存から⽣じるコストの最⼩化 2024/09前半時点では、Concurrency周りのwarningやerror対応、今後の⽅針に対するdiscussionが活 発に⾏われていた。この状況下でStrictConcurrencyの対応を完了させるよりも、それらが落ち着いたタ イミング、または予定されているTCA v2.0の⽅針がもう少し固まってからの⽅が、ライブラリに依存す るコストを最⼩化できると判断。 Feature targetに対するSwift6利⽤を戦略的に遅らせる 18
Slide 19
Slide 19 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 以下の懸念から、UI‧TCAのReducerを含むTargetはSwift6モードの利⽤を、iOS18対応版リリース後に 遅らせた。 ① UI周りは、新OS‧Xcode登場直後直後に不具合発⽣が予想されやすく‧対応に時間もかかり得る iOSエンジニア2名で機能開発も並⾏して⾏うために、避けられる⼯数をなるべく避けたかった(beta環 境での開発だと尚更) ② TCAへの依存から⽣じる得るリスク / コストの最⼩化 2024/09前半時点では、Concurrency周りのwarningやerror対応、今後の⽅針に対するdiscussionが活 発に⾏われていた。この状況下でStrictConcurrencyの対応を完了させるよりも、それらが落ち着いたタ イミング、または予定されているTCA v2.0の⽅針がもう少し固まってからの⽅が、ライブラリに依存す ることで発⽣し得るリスク / コストを最⼩化できると判断。 Feature targetに対するSwift6利⽤を戦略的に遅らせる 19
Slide 20
Slide 20 text
AGENDA CONFIDENTIAL © 2023 Reiwa Travel, Inc. 20 1. 事業要求‧品質‧最新技術追従のバランスを重視 2. 段階的なSwift6対応で備える 3. iOS18対応のスケジュール 4. まとめ
Slide 21
Slide 21 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. Xcode16 betaでもスムーズにSwift6モードを有効化完了 21 Flagを使って事前に 備えていたため、 余裕を持って対応完了 🥳
Slide 22
Slide 22 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 簡易版QAでリリース直前のリスクを軽減 22 簡易版QAで備えていた ため、Xcode RCでのQAも 不具合なく完了 🥳 9/10のApple Event直後に 正式リリースだと予測し、前 もって簡易版QAを実施
Slide 23
Slide 23 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 品質と最新技術追従の両⽴に成功 23 遅らせていたFeature target のSwift6対応も完了 🥳
Slide 24
Slide 24 text
AGENDA CONFIDENTIAL © 2023 Reiwa Travel, Inc. 24 1. 事業要求‧品質‧最新技術追従のバランスを重視 2. 段階的なSwift6対応で備える 3. iOS18対応のスケジュール 4. まとめ
Slide 25
Slide 25 text
CONFIDENTIAL © 2023 Reiwa Travel, Inc. Appleが提供してくれた仕組みを活⽤し、事業要求‧品質‧最新技術追従を全て叶える 25 ● 段階的にSwift6対応を⾏うことで、事業要求‧品質とのトレード オフ関係を断ち切る ● ⾃⼰解決の難易度が⾼いUI‧ライブラリ依存箇所はリスクヘッジ を図りながら進める ● 品質を向上させながら、事業に貢献するために、技術を活⽤する
Slide 26
Slide 26 text
Thank you! CONFIDENTIAL © 2023 Reiwa Travel, Inc. 26