はじめに Jetpack Navigation 3(以下 Nav3)は柔軟性が高い一方で、実装方針が 1 つに定まっているわけではありません。そのため、実運用ではアプリの要件に応じて設計する場面が多く、実装が複雑になりやすいです。 本記事では、Nav3 において状態の保持...
活動
はじめに Compose で List を扱うとき、mutableStateListOf で生成される SnapshotStateList を利用することは多いでしょう。 しかし SnapshotStateList の toString / equals / hashCo...
はじめに Kotlin には Contracts という、関数の内部動作に関するヒントをコンパイラに提供する機能があります。これにより、コンパイラはスマートキャストや変数の初期化判定をより賢く行えるようになります。 通常、コンパイラは関数の内部の実装まで深く解析しませんが...
本記事は、GitHub Actions Advent Calendar 2025 の 19 日目の記事です。 はじめに GitHub Actions で生成されたファイルを保存する代表的な手段として、GitHub Actions の Artifacts や、S3 などの外...
本記事は、Kotlin Advent Calendar 2025 の 17 日目の記事です。 はじめに Kotlin Multiplatform(KMP)で iOS アプリを開発する際、Swift と Kotlin の相互運用は避けて通れません。KMP は非常に便利ですが...
はじめに Android には、ユーザーが自分の好みや特性に合わせて設定できるシステムスタイルがあります。テーマ(ダークモード)、フォントスケール(フォントサイズ)、Material You(システムカラー)、色のコントラストなどが代表例です。これらはユーザーの「見やすさ...
Composable 関数内で、Hilt によって @Provides や @Binds で提供されたオブジェクトを直接的に扱いたい場面があります。 通常、Hilt を用いた依存性注入は ViewModel を経由して行います。たとえば @HiltViewModel に依存...
Android アプリ開発において、StateFlow は UI 状態管理に不可欠です。しかし、実際の開発では以下の課題に直面することがあります: StateFlow から別の StateFlow への変換 複数の StateFlow を組み合わせた StateFlow...
モバイルアプリにおいてユーザーへの情報伝達は非常に重要です。その中でも、短時間でユーザーにフィードバックを伝える際に便利な UI 要素として Snackbar があります。 この記事では、Compose における Snackbar の基本から、画面などのスコープを意識した ...