昨日作ってた「いつなに」は、ほとんど声で経費入力、という以前作ったアプリのサブセットの機能しか無い。 で、これは典型的なSQLiteのCRUDアプリが大半となる。

以前書いたアプリのコードを持ってきてちょこちょこっと修正すれば割とすぐ出来る。 たぶん二時間くらいで出来るんじゃないか。 だが、以前書いたのはJavaのコードでListViewだ。 今ならKotlinでRecyclerViewで書きたいよな。

という事でRecyclerViewで書く事にした。 以前もRecyclerViewは使った事があるから平気だろう、と以前のコードを見ると、下がRxJavaのObservableで、Cursorじゃないとか、長押ししてContextual Action Barを発動して幾つか選択、みたいな機能もListViewでしかやった事無いとかで、意外と新規に書く部分は多く、しかも標準でいかにもありそうなのに意外と無くて自力でいろいろやらないといけなかったりする。 定型処理ではListViewよりだいぶ書かなきゃいけないコードが増えてる…

で、データベース周りもいまいち世の中のライブラリが自分の望みの物と違うと前から思っていたので、この機会に以後自分で使えるような小さくて下のCursorやSQLiteDatabaseを隠さない、でもkotlinの言語機能は活かしてインテリセンスは効いて面倒じゃないようなのを作っておこう、と思って書いた。 ちゃんとtype safe builderでクエリ組み立てられるようなの。 これはそんな大変じゃなかったが、それでもコピペでは無いのでちょっと時間はかかる。

ついでにいい機会なので以前RxJava使ってた所もasync-awaitで書き直す。 CoroutineScopeとかも標準 のドキュメントはonDestroyでキャンセルしてたが、自分の用途だとonStopの方がいいな、とかいろいろ思って、意外と考える事はある。 さらにいい機会なので以前さらっと流したawaitの実装もまぁまぁ真面目に読んでおく。

Androidでは、こういう事は結構ある。以前書いたのとだいたい似たような処理。 で、前のを持ってくればすぐ完成する。 だが幾つかはすでにdeprecatedとかobsoleteとかなっている何かを使ってたりする。 そしてそれらにはまぁまぁ新しい結構大きななにかが登場してて、 それを理解して使うのは半日から一日程度の格闘が必要となったりする。

割と似たようなもの、と思ってても、いざ使ってみると結構違ったりする。 結構大きく変えてくるのはAndroidの特徴とも思う。 この辺はWin32時代のデスクトップとはだいぶ違うよねぇ。

この手のコストはそのアプリを早く完成して使う、という観点からすれば無駄なんだが、 たまにアップデートしておくとアップデートしておいたコードの書き溜めは以後比較的長く使えるし、新しい概念も理解出来る。 ドキュメントを読んだり動画を見たりするよりも、やはり実際に使ってみる方が学ぶ事は多い。 何より新しい機能は何かご利益があるもので、それに従っておくと良い事が何かしらはあるものだ。

Androidのアプリ開発者である為には、これは必要な事なんじゃないかなぁ、と思う。 以前一度一通り理解した、という状態になったとしても、しばらく離れていると、結構分からない事は増えてそうに思う。

感覚的にはMくらいまでキャッチアップ出来てれば、新しく出た知らない事はあるにせよ、だいたい問題無い水準と思う。Mというと3年前?まぁそんな最先端である必要は無いかもしれない。 だがその位のキャッチアップはしておく必要はある気がする。

普段からアプリを作っておく、というのは結構大切と思う。 ある程度毎日使っておかないと分からない事は結構あるから。 小さいけれど新しくスクラッチから作っても良い、程度の物をちょくちょく作る、というのは良い習慣に思う。 だからなんか「こんなの欲しい」と思うようなのが定期的に出てくる人の方が、 スマホのアプリ開発は向いている気がする。 キャッチアップが自然と出来るから。