DroidKaigi 2019 DAY.01 自分ツイートまとめ

起床

Android Studio 3.3.1 が出たのでアップデートしてから家を出た。

マルチモジュールなプロジェクトでテストはどう変わる?

speakerdeck.com

これについては「そのための mock だよね」という意見を頂いた。自分が単体テストを作ってきた感覚だと対象クラスが依存するものを mock に置き換える、という使い方をしていたので、できあがっていない部分はとりあえず mock にするという観点を持てていなかった。

Unit test for ViewModel and LiveData

speakerdeck.com

アサーションライブラリ Truth は Google に入社した Jake が作ったライブラリで AssertJ ぽいもの。 ここらへんに違いが書いてある。

google.github.io

これは言葉不足。Model 内は基本的に同期でよいと考えていて、時間の掛かること、複数の処理の待ち合わせが発生するなら、Kotlin であれば suspend を使って中断可能関数にする手段が考えられるよね、と言いたかった。

LiveData と Coroutines による DDD の戦術的設計

y-anz-m.blogspot.com

BindingAdapter.kt が神のファイルになる恐れがあると前から思っているけれど、個人開発ではまだ明確な問題に遭遇していなく、1ファイルでやってしまっている。 仮に分割するとするとどのような観点で切り分けていくかは少し気になる。LayoutXML ファイル単位という観点だと、同じ処理をするメソッドが複数産まれてしまいそうだし…。

ここは会話におけるコンテキストがとても重要だと思っていて、ついでに、コンテキストが共有されていてもなんとなくの理解だとやはり齟齬が発生しそうなのでこれはちゃんと共通認識を持てるようにする知識がそもそも必要になるのかなと思った。無論、自分を含む。

FCMを使った用途に合わせたPush通知設計

speakerdeck.com

これまでの経験上、プッシュ通知を細かく取り扱うような機会に遭遇することがなかった。時間制約の厳しい、たとえば10時ちょうどにプッシュ通知が表示されるような要件を考えたとき、最近ではどのようなアプローチが適切だろうか。自分が思いつく手段としては、WorkManager を使って予めプッシュ通知が表示される Work を事前に登録しておく、というものだった。大量ユーザを対象とする練習は困難ではあるが、こういった使い方が上手くできるか検証できていないので試す必要がある。

Understanding Kotlin Coroutines

runBlocking の使いどころについてはドキュメントにも書いてあった。

It is designed to bridge regular blocking code to libraries that are written in suspending style, to be used in main functions and in tests.

kotlin.github.io