Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
NEWTにおけるiOS18対応の進め方
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ryuichi Fukami
September 30, 2024
Programming
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NEWTにおけるiOS18対応の進め方
Ryuichi Fukami
September 30, 2024
More Decks by Ryuichi Fukami
See All by Ryuichi Fukami
ABEMA新卒1年目を大公開
ryu1sazae
0
2.8k
Trunk-based developmentのすゝめ
ryu1sazae
0
260
Actorへの第一歩
ryu1sazae
0
1.6k
Other Decks in Programming
See All in Programming
カツオ、ご期待ください
suneo3476
0
140
Heart of Swift Concurrency
koher
0
1.2k
iOSDC2026登壇資料.pdf
riofujimon
0
200
phperだってパンチカードでコーディングしたい
o0h
PRO
0
130
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
470
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
540
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
110
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
33
15k
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
700
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
120
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
Featured
See All Featured
Docker and Python
trallard
47
4.2k
Odyssey Design
rkendrick25
PRO
2
850
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
970
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Tell your own story through comics
letsgokoyo
1
1.1k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Designing for Performance
lara
611
70k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
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