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
990
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
230
Actorへの第一歩
ryu1sazae
0
1.5k
Other Decks in Programming
See All in Programming
技術的負債で信頼性が限界だったWordPress運用をShifterで完全復活させた話
rvirus0817
1
1.6k
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
2k
大規模FlutterプロジェクトのCI実行時間を約8割削減した話
teamlab
PRO
0
470
自作OSでDOOMを動かしてみた
zakki0925224
1
1.3k
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
3
2.1k
Bedrock AgentCore ObservabilityによるAIエージェントの運用
licux
9
650
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
880
あまり知られていない MCP 仕様たち / MCP specifications that aren’t widely known
ktr_0731
0
250
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
160
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
1.1k
一人でAIプロダクトを作るための工夫 〜技術選定・開発プロセス編〜 / I want AI to work harder
rkaga
12
2.6k
バイブコーディングの正体——AIエージェントはソフトウェア開発を変えるか?
stakaya
5
900
Featured
See All Featured
How to Ace a Technical Interview
jacobian
278
23k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
Site-Speed That Sticks
csswizardry
10
770
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
The Cult of Friendly URLs
andyhume
79
6.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
The Language of Interfaces
destraynor
158
25k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
The Cost Of JavaScript in 2023
addyosmani
53
8.8k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
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