くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Android Best Practiceを学ぶ - ディレクトリ構成編

今更ながらGitHubにあるAndroid Best Practiceに、いろいろ学んで見る。 - futurice/android-best-practices · GitHub

手がつけやすいとこからやっているので、順序はてきとー。

その備忘録

参考にした偉大なるサイト様

ディレクトリ構成編

ディレクトリ構成関連については、2つある。 1. プロジェクトのディレクトリ構成 1. パッケージのディレクトリ構成

プロジェクトのディレクトリ構成

Practiceな構成は以下な感じ。Gradle & Android Studioの構成。

new-structure
├─ library-foobar
├─ app
│  ├─ libs
│  ├─ src
│  │  ├─ androidTest
│  │  │  └─ java
│  │  │     └─ com/futurice/project
│  │  └─ main
│  │     ├─ java
│  │     │  └─ com/futurice/project
│  │     ├─ res
│  │     └─ AndroidManifest.xml
│  ├─ build.gradle
│  └─ proguard-rules.pro
├─ build.gradle
└─ settings.gradle

AndroidStudioで自動的に作られるものと同等だが、個人的な気付きは以下の2つ

  • 該当するアプリケーションはappとする
  • 内部のライブラリは、library-*<foobar>*と接頭語にlibrary-で命名する

パッケージのディレクトリ構成

Practiceな構成は以下な感じ。MVCのコンセプトに基づいたディレクトリ構成。

個人的には、tomoima525's blogさんのアレンジも好きなので取り込んだ結果こうなった

com.futurice.project
├─ activities
├─ networks
├─ models
│ ├─ prefs
│ ├─ db
│ ├─ apis
│ └─ provider
├─ managers
├─ utils
├─ services
├─ fragments
├─ views
│ ├─ adapters
│ ├─ actionbar
│ ├─ widgets
│ └─ notifications
└──  Application.java
dir/file description
activities Activityクラスのパッケージ
networks バックエンドとインタラクティブに反応するクラスのパッケージ
models MVCのModel的クラスを配置。prefs,db,apis,providerなど、元情報ごとにサブディレクトリがある
managers アプリ内で多様に使われAndroidシステムに密接なコントローラクラス
utils お馴染みのUtilクラスのパッケージ
services Serviceクラスのパッケージ
fragments Fragmentクラスのパッケージ
views Viewクラスのパッケージ。カスタムViewやViewをつなぐadapterなどもサブパッケージに分けて配置
Appication.java TopのActivityクラス。複数ある場合は、それ以外をactivityパッケージに配置

自分のアプリや思想に合わせて、もう少しチューニングできそうだけど、まずはこんな感じで!

MVPやDDDとか、MVC以外の概念のほうがうまく行きそうとかもあるので、そっちも見てみたい。。。 - AndroidではMVCよりMVPの方がいいかもしれない - Konifar's WIP - An MVP Pattern for Androidを訳してみた - ナカザンドットネット - DDD - MVCの流れを簡単にまとめてみる - Qiita

とりあえず、今回はここまで!以上!