Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NEWTにおけるiOS18対応の進め方
Search
Ryuichi Fukami
September 30, 2024
Programming
0
1.1k
NEWTにおけるiOS18対応の進め方
Ryuichi Fukami
September 30, 2024
Tweet
Share
More Decks by Ryuichi Fukami
See All by Ryuichi Fukami
ABEMA新卒1年目を大公開
ryu1sazae
0
2.7k
Trunk-based developmentのすゝめ
ryu1sazae
0
240
Actorへの第一歩
ryu1sazae
0
1.5k
Other Decks in Programming
See All in Programming
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
160
Microservices rules: What good looks like
cer
PRO
0
1.5k
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.3k
AIエージェントの設計で注意するべきポイント6選
har1101
5
810
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
220
マスタデータ問題、マイクロサービスでどう解くか
kts
0
110
認証・認可の基本を学ぼう前編
kouyuume
0
260
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
400
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
2
220
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.1k
AIコーディングエージェント(skywork)
kondai24
0
180
SwiftUIで本格音ゲー実装してみた
hypebeans
0
430
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
16
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
62
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
390
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
71
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
740
Mobile First: as difficult as doing things right
swwweet
225
10k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
[SF Ruby Conf 2025] Rails X
palkan
0
540
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
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