sky’s 雑記

主にAndroidとサーバーサイドの技術について記事を書きます

Kotlin

LiveDataのこれまで

Coroutinesのアップデートが盛んに行われており、昨今のAndroid界隈でLiveDataからFlowへ乗り換える機運が高まっているように感じます。今一度Flowへの乗り換えをスムーズに行うためにもLiveDataが発表された経緯など歴史を振り返りたいと思います。 Archite…

kotlinx-coroutines-testのrunBlockingTestについて

前回に引き続きCoroutinesの単体テストの話です。 kotlinx-coroutines-testのDispatchers.setMainについて - sky’s 雑記 今回はrunBlockingTest[1]について取り扱いたいと思います。 ⚠理解が曖昧な状態で記述している可能性があります、間違いがあれば訂正お…

Kotlin 1.4.20-M2でDeprecatedとなったKotlin Android Extensionsを弔う

表題の通りKotlin 1.4.20-M2でKotlin Android ExtensionsがDeprecatedとなりました、個人的には好きな技術だったので弔いがてら記事にしたいと思います。 概要 Kotlin Android Extensions[1]はKotlin用のView参照機構で、findViewByIdによるViewの参照の問題…

Coroutine Suspending Functionsを理解したい2

続きの記事です。 Coroutine Suspending Functionsを理解したい1 - sky’s 雑記 振り返り fun main(args: Array<String>) { CoroutineScope(Dispatchers.Main).launch { println("start") greet() println("end") } } suspend fun greet() { println("suspended!!") }</string>…

Coroutine Suspending Functionsを理解したい1

導入 今更ながらCoroutineのsuspendを不思議に感じることが増えてきて、なんとなくステートマシンで動いているらしいとかいう曖昧な理解のまま使っているのも癪なので本腰入れて調べてみることにする。タイトルに1と書いてあるのはちょっとずつでもアウトプ…

koinのインスタンス管理について

Android開発していて体験的に特に不満はないんだが,単体テストの書き味だけはrspecに劣るなと思っている.特にfactory_botによるテスト用のオブジェクト生成はtraitによる拡張とか含めシンプルで好きだった.サーバーサイドだとDBという状態の塊をテストする必…

レシーバ付き関数リテラルのおさらい

kotlin製ライブラリを読んでいると頻出の文法だが,混乱して毎回復習してる気がする. レシーバ付き関数リテラルの説明のためにletとapplyの比較が良くされており, 実装でも良く使う文法で馴染み深いから混乱したらここに立ち返ると良い. public inline fun <T, R> T</t,>…

Spekラムダ内でKoinモジュールをinjectする

Androidのユニットテストネタ. TL;DL KoinTestを継承したRootクラスと、それをレシーバとするラムダを引数に持つ抽象クラスを実装する。 class KoinRoot(val root: Root) : KoinTest, Root by root abstract class KoinSpek(koinSpec: KoinRoot.() -> Unit) …

javaとkotlinの世界のstaticとsingleton

javaでよくあるユーティリティクラスをkotlinに移植しようと思ったときに気づきがあったのでまとめておく。 javaユーティリティクラスのkotlin convert objectとcompanion objectのおさらい objectとcompanion objectはjavaでどう解釈されるか object compan…