Weitere ähnliche Inhalte
Ähnlich wie DroidKaigi アプリの内部を見る (20)
DroidKaigi アプリの内部を見る
- 15. 使われているライブラリ
• Support Library
• com.android.support:support-v4
• com.android.support:appcompat-v7
• com.android.support:design
• com.android.support:cardview-v7
• com.android.support:customtabs
• com.android.support.constraint:constraint-layout
• com.android.support:multidex
• com.android.support:support-emoji-appcompat
• com.android.support:preference-v7
• com.android.support:preference-v14
15
ざっくり…
・下位互換担保
・UI パーツ
が中心
- 16. 使われているライブラリ
• Support Library
• com.android.support:support-v4
• com.android.support:appcompat-v7
• com.android.support:design
• com.android.support:cardview-v7
• com.android.support:customtabs
• com.android.support.constraint:constraint-layout
• com.android.support:multidex
• com.android.support:support-emoji-appcompat
• com.android.support:preference-v7
• com.android.support:preference-v14
16
ざっくり…
・下位互換担保
・UI パーツ
が中心
- 39. RxJava
• Java でリアクティブプログラミングをするためのライブラリ
• データやイベントが流れてきて、それを加工して処理する
39
【発火】クリック!
↓(イベント通知)
【加工】 今の値を取得
↓(数字)
【加工】 :値+1
↓(数字)
【購読】:流れて来た数字で表示を更新
←イベントのコールバックで手続きを書く
←データが流れて来たら
どう加工するか記述
購読者:何を表示するか知らせてね。
(加工手順は関心がない)
【Rx】
- 40. 通信で RxJava
• API 呼び出し
↓
• API レスポンス取得
↓(コールバック通知)
• レスポンスデータを DB に保存
↓(データの加工)
• View に表示を反映(購読)
40
流れ
購読者
値が変わったら、反映するから、
そのタイミングで値を教えてね。
- 41. 使われているライブラリ
• Structure
• Kotshi:Kotlin での json パーサー
• Lifecycle:ライフサイクルを扱いやすくしたライブラリ
• Room:データベース。SQLite を便利にしたやつ
• RxJava:リアクティブプログラミングを実現するためのライブラリ
• DataBinding:データと View を紐付けるライブラリ(自動更新)
• PlayService.map:Google Map 表示
• Firebase:アプリを迅速に開発できるモバイルプラットフォーム
• Threetenadp:Java8 の日付周りの便利な関数が使えるライブラリ
• Kotpref:端末キャッシュの SharedPreferences を扱いやすく
41
- 42. Lifecycle(android.arch.lifecycle)
• Google I/O 2017 で発表された、よりよい設計実現のライブ
ラリの Android Architecture Components の1つ
• ライフサイクルを感知するコンポーネント
• ライフサイクルの例
• onCreate:作られた
• onResume:最前面に来た
• onPause:バックグラウンドに行った
• onDestroy:破棄された
• ライフサイクルを持つオブジェクトは LifecycleOwner
42
- 44. • 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
44
Lifecycle(android.arch.lifecycle)
用事が発生着信
対応可能
発信者
購読者
- 45. • 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
45
Lifecycle(android.arch.lifecycle)
用事が発生
対応可能
(購読中)
発信者
購読者
購読開始
購読終了
用があったらどうぞ!
続きはまた明日!
自分で購読開始・終了しなければいけない
(よく終了し忘れる)
- 46. • 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
46
Lifecycle(android.arch.lifecycle)
用事が発生着信
対応可能
(購読中)
発信者
購読者
購読終了忘れ
帰宅したにも関わらず
電話が掛かってくる・・・
- 47. • 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
47
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
- 48. • 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
48
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
- 49. • 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
49
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
- 50. • 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
50
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
- 51. • 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
51
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
- 52. • 例えば人の一日
• 起きた
• 仕事始め
• 仕事終わり
• 寝た
52
Lifecycle(android.arch.lifecycle)
対応可能
発信者
購読者
LifecycleOwner
LiveData
LiveData を使うと
Lifecycle の状態
をみて自動で購読
開始・終了してく
れる。
購読者のライフサイクルが
変わるタイミングで
購読の開始・終了をしなくて良い!
- 53. • Android Architecture Components の1つ
• SQLite をパワフルにしたライブラリ
• SQL 文をアノテーションで記述してシンプルなコードに!
• RxJava2 対応
• テーブルに変更があったら通知してくれる
53
Room(android.arch.persistence)
- 57. ここまでの部分の組み合わせ
• 例)スポンサー一覧画面
57
LifecycleOwner
• Mixi GROUP
• XFLAG
• Minimo
• Diverse
• nohana
• mericari
:
:
LiveData Room
• Mixi GROUP
• XFLAG
• Minimo
• Diverse
• nohana
• mericari
:
:
APIサーバ
RetrofitRx
Kotshi
Activity/Fragment AAC ViewModel Repository
ライブラリ名 設計上のレイヤー名
- 60. 設計とデータフロー
• データは全て Result 型で扱われる
(実データはラップされている)
• Result は次の3種( seald class )
• InProgress:取得中
• Success:取得成功(実データが取れる)
• Failure:取得失敗
60
LiveData<Result>
- 62. 設計とデータフロー
62
• Repository ->API, Repository ->DB
• https://github.com/DroidKaigi/conference-app-2018#repository---api-repository---db
• DB ->Repository
• https://github.com/DroidKaigi/conference-app-2018#db---repository
• Repository ->ViewModel
• https://github.com/DroidKaigi/conference-app-2018#repository---viewmodel
参照下さい。
- 69. 使われているライブラリ
• Debug
• com.facebook.stetho:stetho
• 画面構成や端末内の情報をブラウザで見ることができるライブラリ
• com.crashlytics.sdk.android:crashlytics
• クラッシュ状況を Web で確認できるライブラリ
• com.jakewharton.timber:timber
• ログ出力を柔軟に・良い感じにできるライブラリ
• com.squareup.leakcanary:leakcanary-android
• メモリリークを検出できるライブラリ
69
- 74. 使われているプラグイン
• (標準的なモノは省略)
• org.jlleitschuh.gradle.ktlint
• Kotlin コードのスタイルチェック
• com.google.gms.oss.licenses.plugin
• 使っているライブラリのライセンス表記画面を作ってくれるライブラリ
• com.github.ben-manes.versions
• 使っているライブラリの最新版がないかチェック
• deploygate
• テスト版配信プラットフォーム
• com.github.triplet.play
• Google Play へのデプロイツール
74