More Related Content
Similar to Androidアプリ開発にクリーンアーキテクチャを取り入れよう
Similar to Androidアプリ開発にクリーンアーキテクチャを取り入れよう (20)
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
- 4. 様々なアーキテクチャと開発手法
基礎
PofEAA(Patterns of Enterprise Application Architecture) - Martin Fowler
DDD(Domain Driven Design) - Eric Evans
UCDD(Use Case Driven Design)
MVCの発展形
MVVM(Model-View-ViewModel)
MVP(Model-View-Presenter)
テスティング
TDD(Test Driven Development) - Kent Beck
BDD(Behavior Driven Development)
非同期処理
FRP(Functional Reactive Programing)
Rx(Reactive Extentions)
- 6. クリーンアーキテクチャを取り入れよう
依存関係逆転の原則(DIP:the Dependency Inversion Principle)
interfaceを使って、オブジェクト間の依存関係を疎に保ち、IoCコンテナで結合する。
関心の分離(SoC: Separation Of Concerns)
UIとビジネスロジック - まぜるな危険!
ビジネスロジックとモデル - 特定のデータベースに依存しないように!
IoC(DI)って、何が便利なの?
・ユニットテストが簡単。
・モックオブジェクトでとりあえず、結合できるので、まだ未完成な部分の完成を待つことなく、開発できる。
・初期化のボイラープレートがなくなる。
開発は、様々なオープンソースライブラリを利用することになるが、開発中に急に使えないと判断せざるえない場合が
ある。
そんなときでも、代替のライブラリが利用できるようにしておくことが重要。
オープンソースを利用するなら、最悪は自分でソースコードを修正するぐらいの覚悟が必要。
- 9. ヴュー
Fragment,CustomViewからビジネスロジックを追い出す。
Button button = (Button)v.findViewById(R.id.some_button);
button.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
ここにだらだら、ロジックを書かず、プレゼンタへまかせる。
操作中の状態を保持するような変数も全てプレゼンタで定義する(ViewModel)
presenter.doSomeAction();
}
}
);
// AndroidStudioなら、SAM(Single Abstract Method)型はlambdaで書ける。
// Retrolambda(backport tool)を使うとJava8のlambdaで書ける。