価値提供スピードを上げるための技術的負債への向き合い方 https://dmm.connpass.com/event/284374/
© DMMサロンアプリの技術的負債解消への取り組みオンラインサロン事業部 鳥嶋 晃次
View Slide
© DMM自己紹介鳥嶋 晃次DMM.com イノベーション本部オンラインサロン事業部 プロダクト開発チーム2022年 合同会社DMM.com 中途入社 DMM歴半年たちました。GitHub:K-TorishimaTwitter:@k_torishima2
© DMMアジェンダ1. オンラインサロンアプリにおける技術的負債2. これまでの取り組み3. 負債と向き合うための取り組み4. 現在の取り組みと未来の話5. まとめ3
© DMM41. オンラインサロンアプリにおける技術的負債
© DMMReactNativeによる技術的負債歴史的背景によりReactNativeを採用し開発を行っていたが、現状のチームでは ReactNativeで開発するメリットが少ないと感じていた今後もReactNativeで開発を継続していくと、ビジネス面、開発面、採用面などへのデメリットが多くなってきてしまう(決してReactNativeが悪いとかではないです)5過去のスライドはこちらhttps://speakerdeck.com/roana0229/dmmonrainsaronapurifalsereactnative-nil-swifthua-hefalsedao-falserihttps://speakerdeck.com/hayatan/reactnative-falseahuriwo-swift-nizhi-kihuan-etemasu
© DMM2. これまでの取り組み6
© DMMReactNativeからSwiftに移行を進める1. Swiftで開発できるようにするための環境構築• ビルド環境の整備• ReactNative側の整備など2. Swift化基盤を作る• アーキテクチャの選定、 DMM社内推奨アーキテクチャである VIPERの採用• マルチモジュール化で依存関係を縛る• ReactNativeとSwift間でのやりとりの構築3. 段階的にSwift化する• 影響範囲少ない末端の画面から Swift化• 新規機能実装時はSwiftで実装7
© DMM直近の取り組み1. SwiftUIの積極的な採用• Viewの構築• Componentsなどの構築• 新規機能における画面実装など2. Swift化の初期段階で生んでしまった負債のリファクタリング• ViewControllerに責務を置いていた Viewの振る舞いに関するコードを SwiftUIに寄せる• ライブラリアップデートや、 Cocoapodsを脱却しSPMに移行• なかなか手のつけられていなかった開発環境に関する細かなメンテナンスや CIのメンテナンスなど8
© DMM93. 負債と向き合うための取り組み
© DMM開発チームでの取り組み• Human Interface Guidelines輪読会の実施iOSアプリ開発に関わるメンバーでの共通認識を持ち、 Swift化を進めていく上でより iOSアプリらしいUI、UXを提供できるような取り組みを実施しました輪読会を行ったことによって、 デザインレビュー時にエンジニア・デザイナー間で、共通の言語で根拠ある議論(HIGを引用したりなど)をしやすくなり ました10
© DMMiOSメンバーでの取り組み1. iOSメンバーでのMTGの実施• 隔週でiOSメンバーでのMTGを実施し、技術的にどんな課題があるかや、他社の事例紹介、競合、類似アプリの調査など積極的に改善策をあげてチームでの意識を高める取り組みを行なっています2. 事業部全体への展開• 開発チーム内だけでなく事業部への共有をスプリントレビューで共有し、現在どんなことをやっているかなどを事業部全体に展開しております• 改善系のタスクは成果が見えにくいところがあるので開発者側から積極的に共有していくことを意識して取り組んでいます11
© DMM124. 現在の取り組みと未来の話
© DMM現在1. Swift化に向けてた取り組み• ReactNativeのコードが存在しない Swift製のリファレンスアプリを作成• Swift Concurrencyの対応• SPM化• OSのサポートをiOS16以上を前提とし、SwiftUIベースのアーキテクチャの選定• よりスピーディーに機能をデリバリーできるようにするための UI構築基盤設計2. 分析など• GA4をフル活用できるようにするためのデータ分析基盤設 計3. 改善タスク• 既存機能で改修が必要な箇所 の洗い出し、UIの見直しなど• 仕様の再定義13
© DMM未来• ReactNativeがプロダクトコードからなくなりiOSエンジニアの本領が発揮できる環境になり爆速開発できるようになる• 継続的に安定した品質を保ちアプリ開発ができる基盤が形成される• アプリのデータ分析基盤が構築され、よりデータに基づいた施策が実施できるようになる• 新規機能がより開発しやすくなり、今まで以上に事業施策にコミットできるようになる• テストコードの充実• iOSエンジニアを採用しやすい環境となる14明るい未来が待っています!!!
© DMMまとめ• 技術負債への向き合い方は色々ある• チームで共通認識を持つことは非常に大事• 決してReactNativeという技術は負債ではない• 負債はその時その時の状況で変わるので柔軟に対応するべき• 組織に共有することは非常に大切、知ってもらうために技術者から発信する• 楽しんでやった方がより良いものづくりになります15
© DMM16ありがとうございました