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

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

Avatar for akkiee76 akkiee76
June 22, 2022

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

Avatar for akkiee76

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 をどう扱うか

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