Upgrade to Pro — share decks privately, control downloads, hide ads and more …

タップルのサービス特性に合わせた設計方針を考える

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for nade nade
October 20, 2023

 タップルのサービス特性に合わせた設計方針を考える

Avatar for nade

nade

October 20, 2023
Tweet

More Decks by nade

Other Decks in Programming

Transcript

  1. ┃経歴 ・2019年4月 新卒入社       (同期に yasui_akio, kazu) ・2019年5月 タップル iOS ・2023年2月

    タップル iOSチーム リーダー ・2023年4月 Cyberagent Next Experts iOS ┃その他 ・なで肩 → なで ・昨日Mac版のバイオハザード ヴィレッジを クリアしました👏(2022 WWDCで紹介) 永野 一馬 / なで ながの かずま
  2. CA.internal.swift について • CA.swift の社内限定版やってます ◦ 社内で意見をもらったり議論したり ◦ そこから社外発表に繋げたり ◦

    外では話せないここだけの話をしたり • 対外的なCA.swiftと並んで、より気軽に事業部横断での 技術共有ができる場
  3. “アーキテクトは、 • ドメインの関心事 • 明示的な要件 • 暗黙的な特性 という、少なくとも 3 つの方向からアーキテクチャ特性を明らかにできる。"

    アーキテクチャ特性を明らかにする 『ソフトウェアアーキテクチャの基礎』 5章 アーキテクチャ特性を明らかにする p.67
  4. 事業の特徴 • 事業フェーズ ◦ 市場の伸び < 競合との競争 ◦ 速度感=アジリティが優位性に ◦

    システム投資が回収可能なフェーズ • 新規参入より大手の寡占市場 ◦ 大規模なリデザイン < 機能改修 • マーケティング連動 ◦ CM ◦ コラボ機能
  5. タップルのシステム特性 • コンテンツ = ユーザーの能動的なアクション ◦ eg) 新規登録、ユーザー情報入力、フリック ◦ アクションを増やすための快適な

    UXの重要度が高い • いい人と出会える ◦ リコメンデーションロジック • サービスの信頼性 ◦ 安心安全、本人認証 • 高い可用性が求められる機能が限定的に ◦ メッセージ • 従量 / サブスクリプションの充実 ◦ 課金システム
  6. コードボリューム ---------------------------------------------------------------------------------------------- Language files blank comment code ---------------------------------------------------------------------------------------------- Swift 2966

    41886 28497 237091 ---------------------------------------------------------------------------------------------- SUM: 2966 41886 28497 237091 ----------------------------------------------------------------------------------------------
  7. 直近のモバイルチームの課題 • メンバーが半年で倍に(5人 → 10人) ◦ ドメイン知識の浸透が不足気味 ◦ 新しい技術に対して意欲的なメンバーが多い •

    モバイルのワンチーム化 ◦ ユーザー数がiOSのが多いが、メンバーは Androidのが層が厚い • KMP / BFFによる技術の学習コスト増大 ◦ Swift / Kotlin / Typescriptの3言語とそれに伴う環境構築が求められる ◦ 十分な知識を習得しないまま KMP / BFFを利用し結果的に生産性を落とす場合も • 検証の大規模化 ◦ 半期をかけたタブ単位の検証など、検証対象の規模が拡大 ◦ 同時に複数の検証が走るケースなど検証数も増 • 設計パターンの変更に伴うオーバーヘッド ◦ FluxとSwift ConcurrencyやKMPとの相性が悪い ◦ KMPとパターン統一をしつつ SwftUI / Swift Concurrencyを活用したコードに
  8. 事業ドメイン • アジリティ(保守容易性 / 拡張性)の事業要求が高い • 安心安全のためのセキュリティ / 品質 特徴的な機能要件

    • モジュール性(機能単位での堅牢性) • モバイルはユーザー行動を促進させるUXに集中(ユーザビリティ) 暗黙的な特性 • 大規模、複数の検証を容易に(検証容易性) • 若手が多く開発難易度を下げる必要あり(保守容易性) タップルのアーキテクチャ特性 『ソフトウェアアーキテクチャの基礎』 5章 アーキテクチャ特性を明らかにする p.67
  9. タップルは • モジュール性を高めてUXを磨いていく ◦ マイクロサービス&BFF / Feature Module / 課金システム刷新

    • 開発の難易度を下げて保守を簡単にしていく ◦ リアーキテクチャ / SwiftUI / Swift Concurrency • より大規模な検証を可能にする検証容易性に投資 ◦ セグメント最適化 / Personalization タップルのアーキテクチャ特性まとめ
  10. 保守容易性 • KMPの責務限定 ◦ Android ⇨ iOS の動きに限定 ◦ iOSメンバーの専門性としてはアディショナルにし、若手の必須スキルにはしない

    • 主要画面のアーキテクチャスタイル統一 ◦ 半年目処で統一していく モジュール性 / カスタマイズ性 • Server Driven UI の検証 • 生成AIの推進 これから
  11. なぜServer Driven UI ? • 当初の責務に沿った形でのBFF活用を目指せる • すでに導入済みのBFFを活用して検証容易性を推進できる ◦ リリースなしでのUI変更

    ◦ 大規模な個別最適化 • SwiftUIによってState ⇔ UIの変換がなめらかになった • BFFに責務を集約することで短期的な生成AIの活用を推進できる