iOS、Android アプリを新規開発時にフォルダ(パッケージ)構成に迷うことが多くあります。
私も多くのプロジェクトを開発しましたが、現場によって違います。
その度にどの構成が良いのか迷ったり、調べたりして時間を消費してしまっていました。
また、同じことを調べてたりしていたこともあったので、この際、自分の知見をまとめ、経験をアップデートした方が効率が良いなと思い、まとめて公開しました。
まずは、どの構成が正解なのか真剣に考えたことがなかったので調査しました。
調査に関しては下記の事を調べました。
・コーディング規約等でオススメされているフォルダ(パッケージ)構成
・他の方がオススメしているフォルダ構成
・アプリ開発のデザインパターン
・過去のプロジェクトを調査
調査の結果
・他のコーディング規約、オススメ構成を調べたが、以外と異なる。
・過去のプロジェクトを調査したが現場によって違う。
・MVC、MVVMやモデル、デザインパターン、オブジェクト思考の考え方によって違う。
・過去、モダンによって設計概念が異なるのでその時、その時によって少しずつ異なる。
つまり、まだまだ世の中的にも教科書的な答えはなく日々みんな試行錯誤の途中なのかなと思いました。また、人によって考え方の違いや好き嫌いもありますのでこれと言った正解はないようです。
だったら自分なりに新規プロジェクトにて困らないように経験、調査を元にルールを作成しても良いのかなと思い調査の結果と自分の経験を元にまとめ、作成しました。
たたき台に困っている方はご利用して頂ければと思います。
ただし、現場のビジネスロジックの考え方でも変わってくるので少々変更も必要になるとは思いますので、これを元に調整をすれば効率が良いのかなと思います。
※ iOS、Android での説明ですが、概念なので他のクライアント系のアプリケーションでもたたき台として利用できると思います。
調査結果に伴うフォルダ構成
Application └ Application.java └ Config └ Config.java Resources └ Image └ StaticData domain └ model └ top.java └ dao └ db └ UserDao.java └ DbManager.java └ api └ UserDao.java └ pref └ json └ cache └ entity └ UserEntity.java └ util └ NetWork.java service util └ StringUtil.java view └ activity └ adapter └ custom └ fragment └ bar └ widget └ notification
フォルダ構成の解説
■ Application └ Application.java └ Config └ Config.java
・アプリ全体の設定やメインプログラム用
・iOS の場合は「AppDelegate」
・「Config」にはサーバのURLや設定変数を格納
■ Resources └ Image
・iOS の場合、イメージを格納
└ StaticData
・アプリで利用するモジュールの設定ファイル。「analytics.json」とか。
■ domain
・ビジネスロジックを格納
・データ、共通ロジック以外のビジネスロジック
└ model └ top.java
・データ、共通ロジック以外のビジネスロジック
└ dao
・データアクセス用のロジック、場合によってはシングルトンの共通マネージャークラスを要する。
└ db └ UserDao.java └ DbManager.java
・データベース用のロジック
└ api └ UserDao.java
・API用のロジック
└ pref
・ローカルメモリ用のロジック
└ json
・JSON用のロジック
└ cache
・独自のキャッシュ等を利用する場合
└ entity └ UserEntity.java
・ビジネスロジック全体で利用するデータ
└ util └ NetWork.java
・ビジネスロジックで使う共通ロジック
■ service
・Android にて Service を利用する場合
■ util └ StringUtil.java
・ビジネスロジック、View で利用する共通ロジック
■ view └ activity └ adapter └ custom └ fragment └ bar └ widget └ notification └ ViewController └ View
・View 用
・プロジェクトの大きさによってサブフォルダは作成してもしなくても良い。
まとめ
最終的にはプロジェクトの設計によってフォルダ構成は変わってくると思いますので、完全な設計はありません。また、初心者の方でどうして良いのか困っている方はこの構成ををまずは試し自分なりに調整することをオススメします。