companion object vs. top-level
JavaにはあるけれどKotlinにないものの1つに、クラスメソッドやクラス変数があります。 この記事では、そのクラスメソッドとクラス変数をKotlinではどう定義すべきかという話をします。
より詳細に言えば、メソッドや定数*1をtop-levelで宣言するのとcompanion objectに宣言するのとどちらが良いかという話です。
*1:なお、この記事ではpublicもしくはinternalなメソッドや定数について考えます。privateなものについてはどちらも大差ないという考えからです。
『Androidを支える技術』を読むべきか?
ソフトウェア・エンジニアを長くやっていると、自然と得意分野というものが出来る。 自分だったら、Androidアプリ開発やJavaの仕様についてはそれなりに知っているつもりだけれど、LinuxカーネルやGPUについて詳しいとはお世辞にも言えない。
得意分野というと聞こえはよいけれど、それは裏を返すと、他のことを学ぶのに及び腰になるということだ。さっきの例でいえば、LinuxカーネルについてもGPUについても知っておくにこしたことはない。それでも、「興味はあるけれど、いますぐに必要じゃないからいいか」という気分になって後回しにしてしまう。
この記事で紹介する『Androidを支える技術』はそういう知っておくにこしたことはないことを解説している。
続きを読むDroidGirlsでRxJavaのハンズオンをしてきました
DroidGirlsで「RxJava2」を題材に解説とハンズオンをしてきました(connpassのページ)。
続きを読むRxJava のテスト(2): RxJavaHooks, RxAndroidPlugins
これはRxJava Advent Calendar 2016の第14日目の記事です。前回はTestSubscriberやTestSchedulerを使ってRxJavaに関わる単体テストのしかたを説明しました。
この記事では、それらでは足りない場合の奥の手、スケジューラを差し替える方法について説明します。
続きを読むRxJava のテスト(1): TestSubscriber, test(), TestScheduler
これはRxJava Advent Calendar 2016の第12日目の記事です。
RxJavaは非同期処理を扱うライブラリですが、それ故にRxJavaのからむ単体テストは一筋縄でいかないところがあります。この記事と次の記事では、RxJavaでの非同期処理テスト特有の問題と、その解決方法を説明します。なお、基本的に RxJava 1.x を対象としていますが、必要に応じて RxJava 2.x についても触れます。
この記事の続編はこちらになります。
続きを読むRxJava は Subscriber を中心に捉えると理解しやすいんじゃないかという話
これは RxJava Advent Calendar 2015 の第22日目の記事です。昨日は kazy さんによる RxJava 2.xについて でした。
この記事では、 RxJava を理解するために自分が RxJava をどのように捉えているか、という話をします。なお、自分は ReactiveX や Reactive Functional Programming について詳しいわけではないので、その方面の理解の助けになるものではありません。どちらかといえば、RxJava という特定のライブラリをこう理解しておけば全体の挙動を把握しやすいのではないか、という生活の知恵のようなものになります。RxJS や他のライブラリではまた異なる実装かもしれませんのでご留意ください。
RxJava は非常に強力でよく考えられたものですが、ソースを見て挙動が直感的に分かるとは言えないライブラリです。本稿が自分のような初学者の理解の助けになれば幸いです。
続きを読む