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

アーキテクチャを明文化して開発に臨んだ話

 アーキテクチャを明文化して開発に臨んだ話

akkiee76

June 22, 2022
Tweet

More Decks by akkiee76

Other Decks in Technology

Transcript

  1. 自己紹介 佐藤 晶彦 株式会社ラクス 楽楽精算開発 モバイル開発 / Lead Engineer SaaS

    (Backend, Frontend) / Mobile (iOS, Android) 主な業務は、設計 〜 受入、チームの課題改善など 最近のマイブームは、縄跳びトレーニング
  2. 背景 弊社では、 Native (Kotlin) 版と Cordova 版の 2 つの Android

    アプリをリリースしています。 昨年 Native 版では Android 12 対応などを進めて来ましたが、 Cordova 版では FW のリリースと開発期間が合わないこともあり、 タイムリーな対応ができない状況でした。
  3. Architecture 選定にあたって 基本型として MVVM Architecture を採用することにしました。 まず Architecture を選定するにあたり ・

    Android の公式 Architecture である ・モダンな Architecture を扱える技術力あるチームではない
  4. Architecture 選定にあたって MVVM Architecture は 2017~8 年位から RxJava を主軸に 台頭した

    Architecture ですが、 Jetpack Compose の進化と今後の展望を考えると、 Android の標準 Architecure として MVVM Architecture は 今後も Architecture として運用しやすいと考えました。
  5. データ層( Data Layer ) データ層は、アプリで扱うデータに関連するロジックが集約されます。 具体的には、アプリで使用するデータの作成、保存、変更方法( API に関するも のを含む)を決定する実際のロジックで構成されることがこのレイヤーの期待で す。

    データ層は、それぞれが 0 から複数のデータソースを含むことができるリポジトリ で構成されます。また、アプリで処理するデータの種類ごとに Repository を作成 する必要があります。
  6. 基本クラスのルールも明文化 ・ Activity ・ Fragment ・ ViewModel ・ UseCase ・

    Repository ・ DI Module ・責務 ・命名規則 ・ルール(制約) ・実装例 ・テストで確認すること ・テスト実装例 明文化 ルールを明文化して、サンプルプロジェクトも用意
  7. 課題に感じたこと ・ Package 構造   👉 技術駆動パッケージングよる参照関係 👉 レイヤー横断的な component をどう扱うか

    ・各レイヤーごとのによる依存性   👉 依存関係逆転原則を活用できていない 今後改善予定