はじめに Jetpack Navigation 3(以下Nav3)は、Composeによる状態管理を前提に構築された新しい画面遷移ライブラリです。高い柔軟性とカスタマイズ性を備えています。 この記事では、Nav3による画面遷移の設計について、個人的な結論1に至るまでの試行...
Kotlin
はじめに Jetpack Navigation 3(以下Nav3)は柔軟性が高い一方で、実装方針が1つに定まっているわけではありません。そのため、実運用ではアプリの要件に応じて設計する場面が多く、実装が複雑になりやすいです。 本記事では、Nav3において状態の保持と描画を...
はじめに Composeで List を扱うとき、mutableStateListOf で生成される SnapshotStateList を利用することは多いでしょう。 しかし SnapshotStateList の toString / equals / hashCod...
はじめに KotlinにはContractsという、関数の内部動作に関するヒントをコンパイラに提供する機能があります。これにより、コンパイラはスマートキャストや変数の初期化判定をより賢く行えるようになります。 通常、コンパイラは関数の内部の実装まで深く解析しませんが、co...
本記事は、Kotlin Advent Calendar 2025の17日目の記事です。 はじめに Kotlin Multiplatform(KMP)でiOSアプリを開発する際、SwiftとKotlinの相互運用は避けて通れません。KMPは非常に便利ですが、トラブルなく使い...
Composable関数内で、Hiltによって @Provides や @Binds で提供されたオブジェクトを直接的に扱いたい場面があります。 通常、Hiltを用いた依存性注入はViewModelを経由して行います。たとえば @HiltViewModel に依存性注入し、...
Androidアプリ開発において、StateFlow はUI状態管理に不可欠です。しかし、実際の開発では以下の課題に直面することがあります: StateFlow から別の StateFlow への変換 複数の StateFlow を組み合わせた StateFlow の作...
モバイルアプリにおいてユーザーへの情報伝達は非常に重要です。その中でも、短時間でユーザーにフィードバックを伝える際に便利なUI要素としてSnackbarがあります。 この記事では、ComposeにおけるSnackbarの基本から、画面などのスコープを意識したSnackbar...
はじめに Navigation Compose 2.8.0以降では、シリアル化可能なクラスを用いて、型安全に画面間でデータを渡せるようになりました。 本記事では、「画面遷移時の引数を ViewModel でどの受け取るか」に焦点を当て、4つの方法を紹介し比較します。すべて...