LoginSignup
2
1

Jetpack Compose でのクリーンアーキテクチャに関する Android 開発

Last updated at Posted at 2024-06-18

皆さん、こんにちは。この投稿では、私が構築したクリーンアーキテクチャに基づいた Android アプリケーションのソースコードを共有したいと思います。

Jetpack Compose

このソースコードは個人の GitHub に公開しています:GitHub

MVVM、MVC、MVP、TCA などのモデルを使用してモバイルアプリケーションの開発を行ってきましたが、MVVM がテストしやすく、維持管理が容易なため、最も実用性が高いと感じました。最も重要なのは、use case の概念があり、user story から分離して基本設計のドキュメントを作成できることです。

Jetpack Compose とは?そしてなぜ使うべきか?

Jetpack Compose は、Google が開発した Android 向けのモダンな UI(ユーザーインターフェース)ツールキットで、柔軟かつ容易にユーザーインターフェースを作成できます。Kotlin で記述されており、XML などの従来の方法ではなく、コンポーザブル関数を通じてインターフェースを構築します。

利点:

  • 開発の迅速化: コードの記述と保守にかかる時間を短縮。
  • より良いユーザーインターフェースのインタラクション: 複雑なエフェクトやトランジションを簡単に作成可能。
  • 拡張性: 既存のコードに大きな影響を与えることなく、新しい機能の追加や UI の変更が容易。

なぜクリーンアーキテクチャを使うべきか?

クリーンアーキテクチャは多くの利点をもたらします。以下に簡単にまとめます:

  1. 保守性の向上: 簡単に保守および更新可能。
  2. 拡張性の向上: システムの他の部分に影響を与えることなく、新しい機能を簡単に追加。
  3. テスト容易性の向上: コンポーネントが分離されているため、テストが容易。
  4. 依存関係の削減: クラス間の依存関係が少なく、管理が容易。
  5. コアビジネスロジックに集中: ビジネスロジックと UI コンポーネントの間に明確な分離がある。

クリーンアーキテクチャの主な構造

  1. エンティティ: アプリケーションのビジネスオブジェクトとルールを定義。
  2. ユースケース: ビジネスロジックを含み、データの処理と保存方法を決定。
  3. インターフェースアダプター: ビジネスロジック層とフレームワーク層間のデータを変換。
  4. フレームワーク: UI、データベース、および外部サービスなどの特定のフレームワークコンポーネントを含む。

クリーンアーキテクチャは、柔軟で保守しやすく、テストが容易なアプリケーションを作成し、現在のシステムの運用を中断せずに変更や開発をサポートします。

ソースコードの概要

私は MVP アプリケーションを、最もシンプルな機能で構築しましたが、このシンプルさが、初心者にとっては理解しやすいものになっていると信じています。可能であれば、最新の Android Studio バージョンと最低 Java バージョン 1.8 を使用してください。

画面フローの図

+-----------+        +-----------+        +------------+
|           |        |           |        |            |
|  Splash   | ------>|   Login   | ------>|    Main    |
|  Screen   |        |   Flow    |        |    Flow    |
|           |        |           |        |            |
+-----------+        +-----------+        +------------+

スクリーンショット

以下は、さまざまなモードの Android アプリのスクリーンショットです。

スプラッシュ画面 **スプラッシュ画面** ログイン画面 **ログイン画面** 登録画面 **登録画面**
コース画面 **コース画面** 学生画面 **学生画面**

Android

アプリの構造

アプリの構造は、主に以下の 3 つの部分に分かれています:

  • アプリ: ビュー、アクティビティ、ビューモデル、ビジネスロジックの処理などの UI を含む。
  • buildSrc: 依存関係、ライブラリ、およびバージョン管理を担当する層。
  • フレームワーク: 共通処理を含む層。

アプリ

  • コンポーネント: 共通ビューを含む。
  • コントローラー: 共通処理。
  • テーマ: スタイルを管理。
  • データ: リポジトリ、API、データベース、ユースケースなど、アプリ全体のデータを管理。
  • プレゼンテーション: 画面。
  • プロバイダー: リソースへのアクセスを提供し、ナビゲーションを管理。

buildSrc

アプリのすべての依存関係、バージョン、およびバージョン管理を担当。

フレームワーク

共通処理を管理:

  • ベース: ビューモデルと状態の共通ベース。
  • キャッシュ: ビュー間でデータを移動する際に使用することを推奨。
  • エクステンション: 共通のエクステンション処理。
  • プレフ: 共有プリファレンスの処理。
  • ルーム: データベースの処理。

結論

このソースコードを気に入っていただけると幸いです。フィードバックや提案があれば、GitHub で問題を開いていただくか、LinkedIn でご連絡ください。

完全なプロジェクト

以下のリンクからプロジェクトのソースコードにアクセスできます: GitHub.

ライセンス

MIT © Yoneyama SAM


2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1