アプリアーキテクチャを明文化しチームの開発効率をアップ
by
akkiee76
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
potatotips #79 ©2022 RAKUS Co., Ltd. アプリアーキテクチャを明文化して チームの開発効率をアップ Android アーキテクチャを 明文化して臨んだ新規開発を振り返る @akkiee76 potatotips #79 iOS/Android 開発 Tips 共有会
Slide 2
Slide 2 text
potatotips #79 今日伝えたいこと アーキテクチャを明文化して 得られたことと今後に向けての課題
Slide 3
Slide 3 text
potatotips #79 Akihiko Sato / 株式会社ラクス Lead Engineer / @akkiee76 SaaS 開発 (Backend, Frontend) / Mobile 開発 (iOS, Android) 上流工程、コードレビュー、チームの課題改善など 読書 / コーヒー / HHKB / 腹筋ローラー・体幹トレーニング 自己紹介
Slide 4
Slide 4 text
potatotips #79 会社紹介 株式会社ラクス 「ITサービスで企業の成長を継続的に支援します」 をミッションに、お客様の課題解決やビジネスの成 長をを継続的に支援するクラウドサービスを提供し ています。
Slide 5
Slide 5 text
potatotips #79 背景 楽楽精算では、現在 Kotlin 版と Cordova 版の 2つの Android アプリをリリースしています。 これまで Kotlin 版では、最新の Android バージョンに追従してきました が、Cordova 版では FW の対応の遅れにより、 タイムリーな対応が難しい状況でした。
Slide 6
Slide 6 text
potatotips #79 背景 他にも ・ Cordova 自体の EOL (セキュリティリスク) ・ Cordova 開発者減少といった採用面での課題 といった背景もあり、 Cordova から Kotlin へリプレースすることに
Slide 7
Slide 7 text
potatotips #79 Android チームの現状 現在のチームは、 ・ Android 開発のナレッジが少ない ・ 新規アプリの開発経験がない という課題があり、 リプレース開発の苦戦は目に見えていました。
Slide 8
Slide 8 text
potatotips #79 現状へのアクション 開発の推進を目的としたアクションとして アーキテクチャを選定し、明文化することにしました。
Slide 9
Slide 9 text
potatotips #79 アーキテクチャ選定にあたって① 以下の観点から、MVVM アーキテクチャを採用 ・ Android 公式アーキテクチャ ・ モダンアーキテクチャは、技術的に難しい * MVVM アーキテクチャイメージ
Slide 10
Slide 10 text
potatotips #79 アーキテクチャ選定にあたって② また、アーキテクチャを検討する上で ・ 関心の分離を重要原則とする ・ クラスの責務をできるだけシンプル/コンパクトに保つ ・ 各クラスのテストの容易性を向上させること を大方針とすることに。
Slide 11
Slide 11 text
potatotips #79 ここからは 実際に明文化した内容を紹介します。
Slide 12
Slide 12 text
potatotips #79 1. アプリケーションレイヤー構成 基本的なレイヤー構成として、 3層レイヤー構成を採用。 ・ Presentation Layer ・ Domain Layer ・ Data Layer それぞれを役割を定義しました。
Slide 13
Slide 13 text
potatotips #79 2. Package 構成
Slide 14
Slide 14 text
potatotips #79 3. 基本クラスに各ルールを明文化 ・Activity ・Fragment ・ViewModel ・UseCase ・Repository ・責務 ・命名規則 ・ルール(制約) ・実装例 ・テストで確認すること ・テスト実装例 明文化 明文化した各ルールを適用したサンプルプロジェクトも用意
Slide 15
Slide 15 text
potatotips #79 2ヶ月程度で開発完了 振り返ってみると・・・
Slide 16
Slide 16 text
potatotips #79 実践してよかったこと ● チームの技術力が向上 ○ オブジェクト指向の成長 ● 設計の議論をすることが少なく、開発に注力できた ○ チームの生産性が高まった (見積に対しての実績) ● クラスの責務を小さくしたため、テストが描きやすかった ○ テスト品質の担保
Slide 17
Slide 17 text
potatotips #79 実践してイマイチだったこと ● メンバーによってアーキテクチャの理解度がバラけた ○ 事前の学習コスト(準備コスト)がやや不十分だった ● ライブラリ選定がややモダンだった ○ AndroidX を中心としたライブラリの学習コストが不十分だった
Slide 18
Slide 18 text
potatotips #79 技術的課題 技術駆動パッケージング* による参照関係 ・ 横断的に利用されるクラス・コンポーネントの配置 ・ package private を維持できない * 設計パターンによるフォルダ分け
Slide 19
Slide 19 text
potatotips #79 技術的課題イメージ NetworkError は Presentation Layer に配置されているが、 ・ Data Layer から throw ・ Presentation Layer で catch されるため各層から参照されることに。 このように層を跨いで参照されるクラスが存在している。
Slide 20
Slide 20 text
potatotips #79 技術的課題へのアプローチ Before After ● マルチプロジェクトを採用し、抽象クラスはコアドメインに移行 ● 技術駆動パッケージングからドメイン駆動パッケージングに移行
Slide 21
Slide 21 text
potatotips #79 まとめ アーキテクチャを明文化すると、 1. チームの技術力の向上 2. 開発の生産性向上 3. 品質向上 といった恩恵を受けることができます。
Slide 22
Slide 22 text
potatotips #79 まとめ また、開発中に発生する技術的負債を解決することで、 よりチームの技術力の向上に繋がります! ぜひチームでトライしてみてはいかがでしょうか。
Slide 23
Slide 23 text
potatotips #79 ご静聴ありがとうございました