Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NEWTにおけるiOS18対応の進め方
Search
Ryuichi Fukami
September 30, 2024
Programming
0
490
NEWTにおけるiOS18対応の進め方
Ryuichi Fukami
September 30, 2024
Tweet
Share
More Decks by Ryuichi Fukami
See All by Ryuichi Fukami
ABEMA新卒1年目を大公開
ryu1sazae
0
2.5k
Trunk-based developmentのすゝめ
ryu1sazae
0
200
Actorへの第一歩
ryu1sazae
0
1.4k
Other Decks in Programming
See All in Programming
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
1.3k
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
110
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
5
24k
讓數據說話:用 Python、Prometheus 和 Grafana 講故事
eddie
0
380
イベント駆動で成長して委員会
happymana
1
230
色々なIaCツールを実際に触って比較してみる
iriikeita
0
300
プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット
d_endo
1
1.1k
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
120
カラム追加で増えるActiveRecordのメモリサイズ イメージできますか?
asayamakk
4
1.8k
WEBエンジニア向けAI活用入門
sutetotanuki
0
320
生成 AI を活用した toitta 切片分類機能の裏側 / Inside toitta's AI-Based Factoid Clustering
pokutuna
0
700
詳細解説! ArrayListの仕組みと実装
yujisoftware
0
520
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1366
200k
Designing Experiences People Love
moore
138
23k
GraphQLとの向き合い方2022年版
quramy
43
13k
RailsConf 2023
tenderlove
29
890
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.7k
Designing for Performance
lara
604
68k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Making Projects Easy
brettharned
115
5.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Code Review Best Practice
trishagee
64
17k
Transcript
NEWTにおけるiOS18対応の進め⽅ 2024.9.30 【GO/note/令和トラベル】After iOSDC & DroidKaigi 2024 Rick
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 2 Rick @ryu1sazae Reiwa
Travel, inc iOS Engineer ☕ 🎧 🛩
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名
AGENDA CONFIDENTIAL © 2023 Reiwa Travel, Inc. 4 1. 事業要求‧品質‧最新技術追従のバランスを重視
2. 段階的なSwift6対応で備える 3. iOS18対応のスケジュール 4. まとめ
AGENDA CONFIDENTIAL © 2023 Reiwa Travel, Inc. 1. 事業要求‧品質‧最新技術追従のバランスを重視 2.
段階的なSwift6対応で備える 3. iOS18対応のスケジュール 4. まとめ 5
CONFIDENTIAL © 2023 Reiwa Travel, Inc. ‧‧‧ 急激に成⻑するサービスに対する事業の要求に応える 6 8‧9⽉だけでも多くの施策をリリース
これらを、iOSエンジニア2名で開発する必要があった
CONFIDENTIAL © 2023 Reiwa Travel, Inc. カスタマーにとっての品質‧安定性 > 魅⼒的な技術 海外旅⾏は多くて年⼀回という⽅がほとんど
貴重な体験を最⼤限素敵なものにしてもらうために、最⾼の品質 をカスタマーに届ける必要があり、それを保証する必要がある 品質保証のために魅⼒的な技術の選択を犠牲にすることもある 7
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 最新の技術に追従するメリット 8 • 会社のプロダクト規模で新しい技術を使う楽しさ
• プロダクトとしての表現幅の向上 • 実装容易性の向上 • 世で進化する技術とのギャップを埋めることによる負債解消
CONFIDENTIAL © 2023 Reiwa Travel, Inc. • 機能開発のスピードはなるべく通常通りを維持したいという事業⽬線での要求 • iOS18リリース直後でも品質は担保必須
• 新OS対応時は、QAチームによるテストを⼿厚めに実施するため、このタイミ ングで可能な限りSwift6の対応を進めておきたいというエンジニアの願望 事業要求‧品質‧最新技術追従のバランスが必要 9
CONFIDENTIAL © 2023 Reiwa Travel, Inc. これらのバランスを獲得するためには、 どのような⼿順‧スケジュールで対応を進めればよいか? 💭 iOS18をサポートするXcode16にて、
Swift6が正式に利⽤可能になった。 幸いSwift6への対応は”段階的”に実施することが可能 🥳 事業要求‧品質‧最新技術追従のバランスを叶えるための⼿段とは? 10
AGENDA CONFIDENTIAL © 2023 Reiwa Travel, Inc. 11 1. 品質と最新技術追従のバランスを重視
2. 段階的なSwift6対応で備える 3. iOS18対応のスケジュール 4. まとめ
CONFIDENTIAL © 2023 Reiwa Travel, Inc. Swift6対応終わってる⽅〜?
CONFIDENTIAL © 2023 Reiwa Travel, Inc. NEWTアプリは‧‧‧?
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 48 / 57 target完了済み
🔥 (9/27時点)
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以降の機能を有効化 🔥
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 部分的にSwift6の利⽤開始を遅らせるためのMode指定 16 swiftLanguageMode(SE-0435) 利用可能Swift
version 6.0~ 用途 Target毎にSwiftのversionを指定 e.g. 一度にSwift6への移行が難しいTargetでは過去のversionを指定
CONFIDENTIAL © 2023 Reiwa Travel, Inc. • Feature target 画⾯単位のUI‧TCAのReducer
サービス内のコンテキスト単位 • Dependency target(e.g. ApiClient) 副作⽤(e.g. API通信, ログ送信, etc...) • その他のTarget 共通コンポーネント, モデル, リソース, etc... NEWTのPackage構成(簡易版) 17
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
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
AGENDA CONFIDENTIAL © 2023 Reiwa Travel, Inc. 20 1. 事業要求‧品質‧最新技術追従のバランスを重視
2. 段階的なSwift6対応で備える 3. iOS18対応のスケジュール 4. まとめ
CONFIDENTIAL © 2023 Reiwa Travel, Inc. Xcode16 betaでもスムーズにSwift6モードを有効化完了 21 Flagを使って事前に
備えていたため、 余裕を持って対応完了 🥳
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 簡易版QAでリリース直前のリスクを軽減 22 簡易版QAで備えていた ため、Xcode
RCでのQAも 不具合なく完了 🥳 9/10のApple Event直後に 正式リリースだと予測し、前 もって簡易版QAを実施
CONFIDENTIAL © 2023 Reiwa Travel, Inc. 品質と最新技術追従の両⽴に成功 23 遅らせていたFeature target
のSwift6対応も完了 🥳
AGENDA CONFIDENTIAL © 2023 Reiwa Travel, Inc. 24 1. 事業要求‧品質‧最新技術追従のバランスを重視
2. 段階的なSwift6対応で備える 3. iOS18対応のスケジュール 4. まとめ
CONFIDENTIAL © 2023 Reiwa Travel, Inc. Appleが提供してくれた仕組みを活⽤し、事業要求‧品質‧最新技術追従を全て叶える 25 • 段階的にSwift6対応を⾏うことで、事業要求‧品質とのトレード
オフ関係を断ち切る • ⾃⼰解決の難易度が⾼いUI‧ライブラリ依存箇所はリスクヘッジ を図りながら進める • 品質を向上させながら、事業に貢献するために、技術を活⽤する
Thank you! CONFIDENTIAL © 2023 Reiwa Travel, Inc. 26