NEWTにおけるiOS18対応の進め方
by
Ryuichi Fukami
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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