Enviar búsqueda
Cargar
Androidアプリ開発にクリーンアーキテクチャを取り入れよう(OSS編)
•
3 recomendaciones
•
2,040 vistas
kan-notice
Seguir
アーキテクチャ編の続編。クライアント企業様向け資料をアップロードしています。
Leer menos
Leer más
Software
Vista de diapositivas
Denunciar
Compartir
Vista de diapositivas
Denunciar
Compartir
1 de 11
Descargar ahora
Descargar para leer sin conexión
Recomendados
Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発
kan-notice
Laravelを使ってみた
Laravelを使ってみた
Jaeseop Jeong
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
mikakane
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
Syouta Tada
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
apkiban
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
究極にして至高のWAF
究極にして至高のWAF
Yuki Ishikawa
Recomendados
Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発
kan-notice
Laravelを使ってみた
Laravelを使ってみた
Jaeseop Jeong
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
mikakane
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
Syouta Tada
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
apkiban
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
究極にして至高のWAF
究極にして至高のWAF
Yuki Ishikawa
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Laravel の学び方と得られる学び
Laravel の学び方と得られる学び
Masaru Matsuo
.NET vNext
.NET vNext
信之 岩永
Laravel5.1 Release
Laravel5.1 Release
Yuuki Takezawa
Java EE 再入門
Java EE 再入門
minazou67
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
Taichi Watanabe
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
Developers Summit
CakePHP3で学ぶAPIマネジメント #phpconfuk
CakePHP3で学ぶAPIマネジメント #phpconfuk
Yuta Matsumura
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
広がる .Net
広がる .Net
信之 岩永
Empower every App and every Developer in a Mobile-first, Cloud-first World.
Empower every App and every Developer in a Mobile-first, Cloud-first World.
Akira Inoue
AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
kenjis
マジックビーンズ
マジックビーンズ
Akira Suenami
Java SE 再入門
Java SE 再入門
minazou67
dotnetconfJP2017_netcore2
dotnetconfJP2017_netcore2
Yusuke Fujiwara
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめた
Yuta Ohashi
PHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さ
Shinichi Takahashi
Laravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージ
Yuta Nagamiya
One ASP.NET の今とこれから
One ASP.NET の今とこれから
Akira Inoue
Windows10時代のクロスプラットフォーム開発
Windows10時代のクロスプラットフォーム開発
Kazushi Kamegawa
RDRA DDD Agile
RDRA DDD Agile
増田 亨
Android開発者とデザイナーの効率的な連携について
Android開発者とデザイナーの効率的な連携について
lychee .
Más contenido relacionado
La actualidad más candente
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Laravel の学び方と得られる学び
Laravel の学び方と得られる学び
Masaru Matsuo
.NET vNext
.NET vNext
信之 岩永
Laravel5.1 Release
Laravel5.1 Release
Yuuki Takezawa
Java EE 再入門
Java EE 再入門
minazou67
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
Taichi Watanabe
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
Developers Summit
CakePHP3で学ぶAPIマネジメント #phpconfuk
CakePHP3で学ぶAPIマネジメント #phpconfuk
Yuta Matsumura
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
広がる .Net
広がる .Net
信之 岩永
Empower every App and every Developer in a Mobile-first, Cloud-first World.
Empower every App and every Developer in a Mobile-first, Cloud-first World.
Akira Inoue
AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
kenjis
マジックビーンズ
マジックビーンズ
Akira Suenami
Java SE 再入門
Java SE 再入門
minazou67
dotnetconfJP2017_netcore2
dotnetconfJP2017_netcore2
Yusuke Fujiwara
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめた
Yuta Ohashi
PHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さ
Shinichi Takahashi
Laravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージ
Yuta Nagamiya
One ASP.NET の今とこれから
One ASP.NET の今とこれから
Akira Inoue
Windows10時代のクロスプラットフォーム開発
Windows10時代のクロスプラットフォーム開発
Kazushi Kamegawa
La actualidad más candente
(20)
今日から始めるLaravel
今日から始めるLaravel
Laravel の学び方と得られる学び
Laravel の学び方と得られる学び
.NET vNext
.NET vNext
Laravel5.1 Release
Laravel5.1 Release
Java EE 再入門
Java EE 再入門
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
CakePHP3で学ぶAPIマネジメント #phpconfuk
CakePHP3で学ぶAPIマネジメント #phpconfuk
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
広がる .Net
広がる .Net
Empower every App and every Developer in a Mobile-first, Cloud-first World.
Empower every App and every Developer in a Mobile-first, Cloud-first World.
AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
マジックビーンズ
マジックビーンズ
Java SE 再入門
Java SE 再入門
dotnetconfJP2017_netcore2
dotnetconfJP2017_netcore2
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめた
PHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さ
Laravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージ
One ASP.NET の今とこれから
One ASP.NET の今とこれから
Windows10時代のクロスプラットフォーム開発
Windows10時代のクロスプラットフォーム開発
Similar a Androidアプリ開発にクリーンアーキテクチャを取り入れよう(OSS編)
RDRA DDD Agile
RDRA DDD Agile
増田 亨
Android開発者とデザイナーの効率的な連携について
Android開発者とデザイナーの効率的な連携について
lychee .
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
Developers Summit
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
Sinap Talk Project Design "IA" 20080902
Sinap Talk Project Design "IA" 20080902
Takashi Sakamoto
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
Software Engineering And Role of Agile
Software Engineering And Role of Agile
Kenji Hiranabe
シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015
シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015
Sociomedia
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
Yasuharu Seki
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
典子 松本
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Shin Ogata
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
Shingo Kitayama
これって、ドメイン駆動設計?
これって、ドメイン駆動設計?
Michitaka Yumoto
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
paiza
ネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConView
Rakuten Group, Inc.
ニコニコ超デザイン-Metro考察編-
ニコニコ超デザイン-Metro考察編-
Mizushima Kazuhiro
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
HironoriTAKEUCHI1
OSS Market Momentum In Japan
OSS Market Momentum In Japan
MKT International Inc.
Similar a Androidアプリ開発にクリーンアーキテクチャを取り入れよう(OSS編)
(20)
RDRA DDD Agile
RDRA DDD Agile
Android開発者とデザイナーの効率的な連携について
Android開発者とデザイナーの効率的な連携について
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Sinap Talk Project Design "IA" 20080902
Sinap Talk Project Design "IA" 20080902
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Software Engineering And Role of Agile
Software Engineering And Role of Agile
シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015
シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
これって、ドメイン駆動設計?
これって、ドメイン駆動設計?
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
ネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConView
ニコニコ超デザイン-Metro考察編-
ニコニコ超デザイン-Metro考察編-
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
OSS Market Momentum In Japan
OSS Market Momentum In Japan
Androidアプリ開発にクリーンアーキテクチャを取り入れよう(OSS編)
1.
Androidアプリ開発にクリーン アーキテクチャを取り入れよう (OSS編) 2016/02/25 notice,inc. http://www.notice.co.jp/ @notice_inc
2.
アーキテクチャ編の復習 質問がありましたので、ディスカッションしておきましょう。 Q.1 「オニオンアーキテクチャと同じくたまねぎのようなレイヤー構成になっているが、その意味は?」 Domain Modelをコアとしたアーキテクチャだからです。 上下ではなく、コア(interface)を実装(implement)が包み込んでいく(DI)メタファ。 Q.2
「データベースは、下位層ではなく外界とすれば、いいのでは?」 The Onion Architecture - Jeffrey Palermo http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ その通り! “The database is not the center. It is external. ” じゃあ、センターはなに? “Remember that the Domain Model is the very center.”
3.
Day1 Keynote in
DroidKaigi 2016 これ見てくれたら、今日は話すことなし。 「OSSの動向を捉えた実装方針」 https://speakerdeck.com/wasabeef/day1-keynote- in-droidkaigi-2016 でも、お仕事します。 クリーンアーキテクチャを支える OSSのご紹介
4.
開発環境 Android Studio Eclipse+ADTはオワコン 新しいSDKを使うなら、Android Studioを選択。 Gradle※(build
tool)でOSSを簡単にインポート。 ※グラドルではないよ。グレイドル Retrolambda(レトロラムダ) Android Studioなら、SAM(Single Abstract Method)型はlambdaで書けるけど、 Retrolambda(backport tool)を使うとJava8のlambdaで書ける。 SAM型なら、こんなに簡単に書ける。 before: button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { … } } after: button.setOnClickListener(v -> { … });
5.
Binding/DI ButterKnife – Jake
Wharton 面倒なfindViewById()のボイラープレートを抹殺 @Bind(R.id.button) Button button リスナーもbindできるよ。 @OnClick(R.id.submit) public void submit(View view) Dagger2 – Google/Square Component/Module単位にDIできる。 使ってみたけど正直、難解 バターナイフではケガしないが、短剣は危険(笑)
6.
Networking Okhttp3+Retrofit2 – Square/J.W. API作成最適コンビ。Retrofit2はbeta4まできたね。 http://square.github.io/okhttp/ http://square.github.io/retrofit/ 拙記事:「Retrofit2のRxJavaCallアダプタを試す」
beta<=2での話。 http://qiita.com/notice_inc/items/74a7e98b54dd2838c559 Picasso(ピカソ) - Square 画像ダウンロード・キャッシュ Volley(ボレー) - Google HTTPクッキーの扱いにバグがあるんで、セッション使うアプリはやめといたほうがいいよ。 自分でHttpStackつくれってよ。えぇ、これ仕様?? 特にLaravelは、セッションキー以外にXSRFトークンがクッキーされるんで、つぶしてしまいます。 弊社では独自パッチして使ったよ(非公開)。 NetworkResponse does not support multiple cookies https://github.com/mcxiaoke/android-volley/issues/87
7.
Reactive eXtentions/Promise RxJava/RxAndroid/RxBinding Rxbinding –
Jake Wharton TextViewの入力文字列を文字列があるかどうかの真偽値に変換(map)して、 サーチボタンを活性・不活性する。 @Bind(R.id.text) TextView textView; @Bind(R.id.search) Button search; RxTextView.textChanges(textView) .map(text -> text.length() > 0) .subscribe(enabled -> search.setEnabled(enabled)) jdeferred/android-promise まだ、使ったことないけど、試してみるか。
8.
View/Presenter Mortar(モルタル) - Square Bundleサービスを提供してくれる。 永続化できるViewPresenterが利用できる。 Dagger2と相性よし。 Flow/Path
– Square FragmentManagerの代替。 スクリーン・画面遷移を抽象化したフレームワーク。 ヒストリーも扱える。 Mortarとあわせて、画面状態・画面スタックを保存・復元。 リクリエーション地獄から解放される。 実際使うには、もう少し内部の理解が必要そう。 Flow and Mortar – Thorben Primke https://realm.io/jp/news/using-flow-mortar/
9.
Database Realm(レルム) SQLiteの代替データベース。ActiveRecordのように利用できる。 autoincrementなし。offset,limitなし。cascadingもなし。
SQLをガンガン使いたいなら、止めた方がいい。 Realmエンティティのメンバへの代入が即データベースに反映する (トランザクション必要)。便利だか、逆に切り離したいとき不便。そ もそも、エンティティをモデルとして利用すべきではない(でも、面 倒だし)。 iOS/Swiftでも使えるが、Objective-Cが混在すると、Objective-C版し か使えないのが、残念。 いまんとこ、Objective-C版しか使ったことないけど。
10.
Others Gson(ジーサン) - Google Json-POJO間をシリアライズ・デシリアライズする。 Timber(ティンバー)
- Jake Wharton ログファサードとして利用できる。 Logと違って、フォーマットできる。 Timber.d(“[%s] %d”, “hoge”, n) Logクラスを使うと、リリース時のログ抑制ができなくなる。 拙記事:「アンドロイドアプリのログ出力にTimber+Log4Jを使う」 http://www.notice.co.jp/archives/3852
11.
Testing ActivityInstrumentationTestCase2 • ユニットテストでアクティビティが必要なら、こ のクラスを継承して、Activityのユニットテスト ができます。 • 非同期APIのテストは、CountDonwLatchを利 用してウェイトします(ウェイトクラス作成)。
Descargar ahora