nashcft's blog

時々何か書く。

Jetpack Room: One-to-many relationship の結合クエリで並び順を指定する方法のメモ

Jetpack Room で one-to-many relationship の tableを、 one 側を parent とし、 many 側を list property としてまとめて一つの結果として取得したいとき、 many 側の list の並び順を指定する方法についてのメモ、というか以下の issue のまとめ直し: Pro…

美学の入門本を読んだ、読んでる 2

前回の記事でまだ積んである本があると書いたが、そのうち2冊を読み終わったのでまた感想メモ。 nashcft.hatenablog.com 読んだのは以下の2冊: 井奥陽子 『近代美学入門』 https://www.chikumashobo.co.jp/product/9784480075840/ カロル・タロン=ユゴン 『…

Android: 16 KB page size サポートメモ

モチベーション 2025-11-01 以降、 Android 15 (API level 35) 以上を target とするアプリは 16 KB page size のサポートが必須となる。 android-developers.googleblog.com Starting November 1st, 2025, all new apps and updates to existing apps submi…

美学の入門本を読んだ、読んでる

特に強い動機があったわけでもなく、単に「そういえば美学ってどんなものなのだろう」という気持ちのためと、何かのきっかけで以下の文献リストを見たので、最近は興味の赴くままに美学に関する入門書を読むなどしていた。 morinorihide.hatenablog.com これ…

個人的 Android project における Gradle まわりの考え方2024年版

Android project で Gradle ファイルをどう書くかについて、現在の自分がどのような考えを持っているかつらつら書いてみる。 きっかけ 随分前の話だけど、以下の投稿から続く Gradle の機能採用に関する判断の考え方を読んで、そういえば自分も以前は同じよ…

Kotlin: non-packed klibs メモ

Kotlin 2.1.0 更新でちょっと躓いたので調べたことの記録として。あまり真面目に調べていないのでちゃんとしてない部分がある。 Non-packed klibs is 何 Kotlin 2.1.0 でサポートされるようになった機能。 What's new での記載は以下: https://kotlinlang.or…

Android: 新しいバージョンがリリースされる時の対応の流れに関する備忘録

何度か同じような内容を人に伝える機会に遭遇するなと思ったのでブログ記事にしてしまおう、ということで、 Android の新しいバージョンのリリースに対してどういう流れで対応を進めるかについての自分の考え方のメモ。 Android バージョンアップによって発…

Android: Photo Picker 近況

以下の記事を書いた後くらいから眺めていた photo picker 関連の issue についてのメモ。 nashcft.hatenablog.com Photo picker から返却されるファイルの並び順 issue: https://issuetracker.google.com/issues/264215151 上記の記事でも言及した result で…

Android 15 で edge-to-edge が強制されるかもという話のメモ

何のこと? どこだったかで Android 15 になったら edge-to-edge 強制になるかもって話を聞いたがこれのことか / Android 15 might force more apps to take up 100% of your screen https://t.co/3SPJRg3UVb— nash (@nashcft) March 29, 2024 www.androidaut…

Android 13 で getSerializable/getParcelable の API 置き換えが発生して、でも getParcelable にはバグがあって、その後

Android 13 のリリースに関して以下のような Serializable / Parcelable の扱いがしんどいという話があった。この記事ではその後どうなったかについて簡単に記録しておこうと思う。 speakerdeck.com 先に結論を書いておくと、 AndroidX Core に compatible A…

Klock の今

Kotlin multiplatform 向け datetime ライブラリの Klock は昨年の8月にリリースされた 4.0.10 以降リリースされていないように見える。 参考: https://mvnrepository.com/artifact/com.soywiz.korlibs.klock/klock 実際は現在もメンテが継続されており、 ko…

Dependabot: 設定の備忘録

最近 dependabot でライブラリ更新を自動化している repository の dependabot.yml を手入れしていたのでそのメモ。 Gradle: settings.gradle で依存取得先を設定している場合に更新検知できないライブラリがある 2024-02-19 追記 以下の修正によって depend…

READ_MEDIA_IMAGES と READ_MEDIA_VIDEO の使用に制限がつくらしい

API level 33 からアプリ外のメディアファイルへのアクセスに必要な permission として READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO が追加された*1が、これらの内 READ_MEDIA_IMAGES と READ_MEDIA_VIDEO の使用に関するポリシーの追加が 2023-…

Kover 触ったメモ

DroidKaigi 2023 公式アプリなどで触ったので所感などを書き残しておく。この記事の内容は Kover 0.7.3 時点の機能に基づいている。 書いてたら思ったより長くなったので先に結論を書いておくと「簡単なので使う場合は各自でいい感じにやっといてください」…

Kotlin: runCatching と coroutine

内容的には以下の issue で議論されていることの抜粋のようなものだが、つまるところ現状 Kotlin Coroutines と runCatching (より詳細には runCatching の block 内で suspend function を呼んだ場合) の食い合わせが悪い問題に対してどういう対処ができる…

Apollo Kotlin: エラーハンドリングのプラクティスと union type とコード生成方式

以前 Android で GraphQL あまり嬉しくないのでは的な tweet をいくつかしていて、その中でエラーの扱いに困るなというものがあった。 GraphQL の error response は実質任意の構造の object って感じなので kotlin と相性悪いなって思った— nash (@nashcft)…

Jetpack DataStore で保存する値はキャッシュされている

タイトルの通りで、実用性を考えたらそれはそうでしょというものなんだけど、確認のために実装を読んだのでそのメモ。というのをしばらく放置していたら実装がガッと書き換えられてしまったので書き換え以前 (= 1.1.0-alpha01 時点) と書き換え後両方の実装…

Android project で Gradle 8.0 に更新するために Java toolchain の設定をする

ある日 Android project の Gradle を 7.6 から 8.0 (この記事を書いている時点での最新は 8.0.1) に更新したところ以下のようなエラーと共にビルドに失敗した: 'compile{Variant}JavaWithJavac' task (current target is 1.8) and 'kaptGenerateStubs{Varia…

Android 13 から導入された per-app language preferences について

文脈 github.com 触ったのでついでに調べてまとめることにした。 Per-app language preferences って何 端末全体の言語設定とは別にアプリ毎の言語設定を system 側で管理してくれる機能。 developer.android.com System settings から設定できるようにする …

Android/Kotlin で GraphQL バックエンドと会話する時に嬉しくないと思ってることメモ

ダラーっと tweet してたもののまとめ Android で native = Apollo Kotlin を client library として使う想定で書いている。他の cross-platform な開発環境 (React Native とか Flutter) だと事情は異なる、はず (経験ないので)。 Android アプリでバックエ…

最近触った Gradle 関連の機能

備忘録のようなもの。 Gradle Version catalogs docs.gradle.org Project root の build.gradle で ext に生やしたり buildSrc や composite build 用 module 内に object declaration で定義されたりするような慣習のあった依存ライブラリの定義用の機能。 …

2021年振り返り

過去の 2019: https://nashcft.hatenablog.com/entry/2019/12/31/235500 2020: https://nashcft.hatenablog.com/entry/2020/12/31/235425 先に書くことがはっきりしていた買ったものについて書いていたらめちゃくちゃ長くなったので他はざっくり

AGP 4.0.0 以降で発生する local aar 起因のビルドエラーについて

起こってること AGP 4.0.0 から local aar に依存している library module をビルドすると失敗するようになった。 Local aar というのは libs/ 以下に .aar が置いてあって以下のように依存してるみたいなやつ。 dependendencies { implementation(files("li…

JitPack で AGP 7.0 以上の Android project を扱う時の注意点

さっき投稿した記事でエラーの原因を調査していたときに JitPack の document を読んでて気づいたのだけど、 JitPack の build 環境では JDK はデフォルトで 1.8 となっているようだ。 https://jitpack.io/docs/ANDROID/ Builds are run with Java 8 by defa…

Android project を Gradle 7.0 にしたら JitPack で publish できなくなった

tl;dr maven plugin を使ってない Android project で Gradle 7.0 を使うと JitPack で publish できなくなる Maven Publish Plugin で publication の設定を自分で書こう この辺読んでね https://developer.android.com/studio/build/maven-publish-plugin …

Jetpack ViewModel はいつ clear されるか

tl;dr onPause ↓ onStop ↓ (onDestroyView) ↓ onCleared ↓ onDestroy Jetpack ViewModel のドキュメント には Activity と紐つけた際の owner の lifecycle event と ViewModel の生存期間の関係についての図が載っている。 https://developer.android.com/t…

実装の詳細をテストすることについての所感

下書きにずっと残ってたので供養。本当は色々書くつもりだったけど量的にも内容的にも一生まとまりそうになかったから自分の主張分だけ少し体裁を整えて出すことにした。 実装の詳細のテストは書いてもいい ただし成果物をコミットするまでには消しておいた…

Software Design 2021年3月号

gihyo.jp 第1特集「Java でもう一度学び直すオブジェクト指向プログラミング」を読むために購入。 オブジェクト指向プログラミング一生わからないので今月のSD誌買った、いまから読みます— nash (@nashcft) February 21, 2021 SD誌のオブジェクト指向プログ…

InstantTaskExecutorRule がやってること

社で何これって聞かれてした説明を見えるところに文章で残しておこうと思ったもの。 👀 ドキュメント: https://developer.android.com/reference/androidx/arch/core/executor/testing/InstantTaskExecutorRule コード: https://cs.android.com/androidx/platf…

2020年振り返り

去年もやってたし今年も。 転職 nashcft.hatenablog.com 前職を辞めた理由の9割は前職全く関係ないし、残りの1割も (会社側にとって) 殆どとばっちりのようなものなので、大変な時期に突然辞めるねってなってしまったことは申し訳なく思う。一方転職後は割と…