SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
設計
こんな感じで考えています
全体像
View
Activity Fragment
View層
Application層
Domain層
Infra層
Presenter Service
UseCase
Entity
ValueObject
Repository
Memory Provider Prefs Api
SQLite
Presentation層
DDD + MVP
なぜDDDか?
ドメインロジックを
綺麗にプレゼンテーション層
と分けることができそうだっ
たから
なぜMVPか?
ActivityとFragmentをViewと
して扱えるから
ドメイン層
プレゼンテーション層
Controller
Model
View
タッチなどのイベント
Activityが
この位置に居るので
Model関連の処理を
Activityに書く事になる
Model View Controller
Activity
ドメイン層
プレゼンテーション層
Presenter
Model
View
タッチなどのイベント
Activityが
この位置に居るので
Modelと疎になり
書くべき事が減る
移譲
Model View Presenter
Activity
View、Activity、Fragment
View
Activity Fragment
View層
Application層
Domain層
Infra層
Presenter Service
UseCase
Entity
ValueObject
Repository
Memory Provider Prefs Api
SQLite
Presentation層
役割
• Viewの描画
• (イベントをPresenterに譲渡)
Presenter
View
Activity Fragment
View層
Application層
Domain層
Infra層
Presenter Service
UseCase
Entity
ValueObject
Repository
Memory Provider Prefs Api
SQLite
Presentation層
役割
• ドメイン層への伝達、Viewへの伝達
View
Activity Fragment
View層
Application層
Domain層
Presenter Service
UseCase
Entity
ValueObject
Presentation層
イベント
問い合わせ
View
Activity Fragment
View層
Application層
Domain層
Presenter Service
UseCase
Entity
ValueObject
Presentation層
結果通知
(非同期の時はEventBus)
結果をもとに
Viewへの反映依頼
UseCase
役割
• ドメインロジック
Repository
役割
• データの管理(CRUD)
ポイント
上の層のインスタンスは持てない
Domain層
Infra層
Presenter
UseCase
Repository
Presentation層
OK
OK
NG
NG
❌
❌
それをやると破綻する
実際には下の層のinterfaceを参照する
Domain層
Infra層
Presenter
UseCaseImpl
RepositoryImpl
Presentation層
<Repository>
<UseCase>
依存性をできる限りなくすため。あとテストしやすい。
参考になる
http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/
Android Clean Architecture
The Clean Architecture
http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
Androidの設計について
綺麗な設計について
GUI Architecture
http://martinfowler.com/eaaDev/uiArchs.html
Martinさんのいろんな設計手法について。MVCとかMVPとか。
http://terasolunaorg.github.io/guideline/5.0.0.RELEASE/ja/
ImplementationAtEachLayer/DomainLayer.html
ドメイン層の実装
あるFrameworkのどドメイン層の実装方法。
DDDちっくですごく勉強になる。

Weitere ähnliche Inhalte

Was ist angesagt?

Sf素人が2週間でアプリケーションビルダーに挑戦してみた
Sf素人が2週間でアプリケーションビルダーに挑戦してみたSf素人が2週間でアプリケーションビルダーに挑戦してみた
Sf素人が2週間でアプリケーションビルダーに挑戦してみた政雄 金森
 
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計Taketo Sano
 
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門Prism + ReactiveProperty入門
Prism + ReactiveProperty入門一希 大田
 
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能一希 大田
 
AngularでAmebaコミュニティサービス開発
AngularでAmebaコミュニティサービス開発AngularでAmebaコミュニティサービス開発
AngularでAmebaコミュニティサービス開発Yusuke Goto
 
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIGHayashi Yuichi
 
サーバ管理はサーバレスで
サーバ管理はサーバレスでサーバ管理はサーバレスで
サーバ管理はサーバレスでhorike37
 
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれSalesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ寛 吉田
 
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用Shinichi Tomita
 
AngularJSについて
AngularJSについてAngularJSについて
AngularJSについて昌生 高橋
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いKen Morishita
 
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)Sosuke Kimura
 
Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発友太 渡辺
 
Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発Akihiro Iwaya
 
Prism for windows runtime入門
Prism for windows runtime入門Prism for windows runtime入門
Prism for windows runtime入門一希 大田
 

Was ist angesagt? (20)

Sf素人が2週間でアプリケーションビルダーに挑戦してみた
Sf素人が2週間でアプリケーションビルダーに挑戦してみたSf素人が2週間でアプリケーションビルダーに挑戦してみた
Sf素人が2週間でアプリケーションビルダーに挑戦してみた
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
 
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門Prism + ReactiveProperty入門
Prism + ReactiveProperty入門
 
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
 
React.js + Flux
React.js + FluxReact.js + Flux
React.js + Flux
 
AngularでAmebaコミュニティサービス開発
AngularでAmebaコミュニティサービス開発AngularでAmebaコミュニティサービス開発
AngularでAmebaコミュニティサービス開発
 
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
 
サーバ管理はサーバレスで
サーバ管理はサーバレスでサーバ管理はサーバレスで
サーバ管理はサーバレスで
 
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれSalesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ
 
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
 
WPF MVVM Review
WPF MVVM ReviewWPF MVVM Review
WPF MVVM Review
 
AngularJSについて
AngularJSについてAngularJSについて
AngularJSについて
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
 
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)
 
Force.com Canvas アプリケーション
Force.com Canvas アプリケーションForce.com Canvas アプリケーション
Force.com Canvas アプリケーション
 
Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発
 
Phone gap
Phone gapPhone gap
Phone gap
 
Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発
 
Prism for windows runtime入門
Prism for windows runtime入門Prism for windows runtime入門
Prism for windows runtime入門
 

Andere mochten auch

例の縛るやつ(Data binding)
例の縛るやつ(Data binding)例の縛るやつ(Data binding)
例の縛るやつ(Data binding)shinnosuke kugimiya
 
Android development at mercari 2015
Android development at mercari 2015Android development at mercari 2015
Android development at mercari 2015Tomoaki Imai
 
これからの設計の話をしよう
これからの設計の話をしようこれからの設計の話をしよう
これからの設計の話をしようshinnosuke kugimiya
 
US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development Tomoaki Imai
 
Android cleanarchitecture
Android cleanarchitectureAndroid cleanarchitecture
Android cleanarchitectureTomoaki Imai
 

Andere mochten auch (7)

Coordinator Layout Behavior
Coordinator Layout BehaviorCoordinator Layout Behavior
Coordinator Layout Behavior
 
例の縛るやつ(Data binding)
例の縛るやつ(Data binding)例の縛るやつ(Data binding)
例の縛るやつ(Data binding)
 
Android development at mercari 2015
Android development at mercari 2015Android development at mercari 2015
Android development at mercari 2015
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
これからの設計の話をしよう
これからの設計の話をしようこれからの設計の話をしよう
これからの設計の話をしよう
 
US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development US進出でのAndroid開発inメルカリ Mercari US App Development
US進出でのAndroid開発inメルカリ Mercari US App Development
 
Android cleanarchitecture
Android cleanarchitectureAndroid cleanarchitecture
Android cleanarchitecture
 

Ähnlich wie Android Architecture

ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀増田 亨
 
Design Pattern MicroServices Architecture in Japanese
Design Pattern MicroServices Architecture in JapaneseDesign Pattern MicroServices Architecture in Japanese
Design Pattern MicroServices Architecture in JapaneseLei Xu
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
 
GUIのアーキテクチャ
GUIのアーキテクチャGUIのアーキテクチャ
GUIのアーキテクチャKentaro Inomata
 
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by Tsuyosi Kitagawa
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by  Tsuyosi KitagawaC25 SQL Server 2012 概要と Microsoft の Self-Service BI by  Tsuyosi Kitagawa
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by Tsuyosi KitagawaInsight Technology, Inc.
 
20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architectureIssei Hiraoka
 
Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Microsoft Azure Japan
 
DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~
DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~
DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~decode2016
 
RayBarcode イベント参加者デモ使い方ガイド
RayBarcode イベント参加者デモ使い方ガイドRayBarcode イベント参加者デモ使い方ガイド
RayBarcode イベント参加者デモ使い方ガイドGrapeCity, inc.
 
インフラ観点で運用を考える!Windows 10 VDI on Azure
インフラ観点で運用を考える!Windows 10 VDI on Azure インフラ観点で運用を考える!Windows 10 VDI on Azure
インフラ観点で運用を考える!Windows 10 VDI on Azure Miho Yamamoto
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について真吾 吉田
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践真吾 吉田
 
SilverlightとSharePoint2010の紹介
SilverlightとSharePoint2010の紹介SilverlightとSharePoint2010の紹介
SilverlightとSharePoint2010の紹介Tadahiro Higuchi
 
Azure Service Fabric 概要
Azure Service Fabric 概要Azure Service Fabric 概要
Azure Service Fabric 概要Daiyu Hatakeyama
 
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatformJSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatformTakahiro Fujii
 
SOLIDWORKS 2018 製品発表
SOLIDWORKS 2018 製品発表SOLIDWORKS 2018 製品発表
SOLIDWORKS 2018 製品発表Satoru Yoshida
 
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送Google Cloud Platform - Japan
 
Raybarcodeイベント参加者管理でも使い方ガイド
Raybarcodeイベント参加者管理でも使い方ガイドRaybarcodeイベント参加者管理でも使い方ガイド
Raybarcodeイベント参加者管理でも使い方ガイドGrapeCity, inc.
 
DevAx::connect はじめました
DevAx::connect はじめましたDevAx::connect はじめました
DevAx::connect はじめました政雄 金森
 
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力Akira Inoue
 

Ähnlich wie Android Architecture (20)

ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
 
Design Pattern MicroServices Architecture in Japanese
Design Pattern MicroServices Architecture in JapaneseDesign Pattern MicroServices Architecture in Japanese
Design Pattern MicroServices Architecture in Japanese
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
 
GUIのアーキテクチャ
GUIのアーキテクチャGUIのアーキテクチャ
GUIのアーキテクチャ
 
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by Tsuyosi Kitagawa
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by  Tsuyosi KitagawaC25 SQL Server 2012 概要と Microsoft の Self-Service BI by  Tsuyosi Kitagawa
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by Tsuyosi Kitagawa
 
20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture
 
Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編
 
DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~
DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~
DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~
 
RayBarcode イベント参加者デモ使い方ガイド
RayBarcode イベント参加者デモ使い方ガイドRayBarcode イベント参加者デモ使い方ガイド
RayBarcode イベント参加者デモ使い方ガイド
 
インフラ観点で運用を考える!Windows 10 VDI on Azure
インフラ観点で運用を考える!Windows 10 VDI on Azure インフラ観点で運用を考える!Windows 10 VDI on Azure
インフラ観点で運用を考える!Windows 10 VDI on Azure
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
 
SilverlightとSharePoint2010の紹介
SilverlightとSharePoint2010の紹介SilverlightとSharePoint2010の紹介
SilverlightとSharePoint2010の紹介
 
Azure Service Fabric 概要
Azure Service Fabric 概要Azure Service Fabric 概要
Azure Service Fabric 概要
 
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatformJSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
 
SOLIDWORKS 2018 製品発表
SOLIDWORKS 2018 製品発表SOLIDWORKS 2018 製品発表
SOLIDWORKS 2018 製品発表
 
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送
 
Raybarcodeイベント参加者管理でも使い方ガイド
Raybarcodeイベント参加者管理でも使い方ガイドRaybarcodeイベント参加者管理でも使い方ガイド
Raybarcodeイベント参加者管理でも使い方ガイド
 
DevAx::connect はじめました
DevAx::connect はじめましたDevAx::connect はじめました
DevAx::connect はじめました
 
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
 

Mehr von shinnosuke kugimiya

このあと滅茶苦茶LGTMした
このあと滅茶苦茶LGTMしたこのあと滅茶苦茶LGTMした
このあと滅茶苦茶LGTMしたshinnosuke kugimiya
 
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話shinnosuke kugimiya
 
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoRあの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoRshinnosuke kugimiya
 
開発効率アンチパターン
開発効率アンチパターン開発効率アンチパターン
開発効率アンチパターンshinnosuke kugimiya
 

Mehr von shinnosuke kugimiya (8)

Framework code reading
Framework code readingFramework code reading
Framework code reading
 
読むと怖くないDagger2
読むと怖くないDagger2読むと怖くないDagger2
読むと怖くないDagger2
 
このあと滅茶苦茶LGTMした
このあと滅茶苦茶LGTMしたこのあと滅茶苦茶LGTMした
このあと滅茶苦茶LGTMした
 
just one line
just one linejust one line
just one line
 
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話
 
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoRあの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
 
開発効率アンチパターン
開発効率アンチパターン開発効率アンチパターン
開発効率アンチパターン
 
Reactive android
Reactive androidReactive android
Reactive android
 

Android Architecture