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

Androidアプリ開発にクリーンアーキテクチャを取り入れよう

Avatar for kan kan
February 18, 2016

 Androidアプリ開発にクリーンアーキテクチャを取り入れよう

アーキテクチャ編

Avatar for kan

kan

February 18, 2016
Tweet

More Decks by kan

Other Decks in Programming

Transcript

  1. 様々なアーキテクチャと開発手法 基礎 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)
  2. クリーンアーキテクチャを取り入れよう 依存関係逆転の原則(DIP:the Dependency Inversion Principle) interfaceを使って、オブジェクト間の依存関係を疎に保ち、IoCコンテナで結合する。 関心の分離(SoC: Separation Of Concerns)

    UIとビジネスロジック - まぜるな危険! ビジネスロジックとモデル - 特定のデータベースに依存しないように! IoC(DI)って、何が便利なの? ・ユニットテストが簡単。 ・モックオブジェクトでとりあえず、結合できるので、まだ未完成な部分の完成を待つことなく、開発できる。 ・初期化のボイラープレートがなくなる。 開発は、様々なオープンソースライブラリを利用することになるが、開発中に急に使えないと判断せざるえない場合が ある。 そんなときでも、代替のライブラリが利用できるようにしておくことが重要。 オープンソースを利用するなら、最悪は自分でソースコードを修正するぐらいの覚悟が必要。
  3. ヴュー 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で書ける。