Jetpack Navigation 3 バージョン 1.0 が安定版になりました 🎉。今すぐ本番環境のアプリで使用できます。JetBrains は、すでに KotlinConf アプリでこれを使用しています。
Navigation 3 は、Jetpack Compose の状態に対応するためにゼロから構築された新しいナビゲーション ライブラリです。バックスタックを完全に制御でき、ナビゲーション状態を保持し、アダプティブ レイアウト(リストと詳細など)を簡単に作成できます。JetBrains のクロスプラットフォーム バージョンもあります。
新しいライブラリが必要な理由
オリジナルの Jetpack Navigation ライブラリ(現在の Nav2)は 7 年前に設計されたもので、当初の目標を十分に達成し、繰り返し改善されてきましたが、アプリの構築方法は根本的に変化しています。
宣言型 UI を使用したリアクティブ プログラミングは、今や標準となっています。Nav3 はこのアプローチを採用しています。たとえば、NavDisplay(画面を表示する Nav3 UI コンポーネント)は、Compose 状態に基づくキーのリスト(各キーは画面を表します)を監視し、そのリストが変更されると UI を更新します。
また、Nav2 には独自の内部状態があるため、ナビゲーション状態の信頼できる唯一の情報源を確保することが難しくなる可能性があります。Nav3 では、独自の状態を指定できるため、完全に制御できます。
最後に、柔軟性とカスタマイズ性の向上を求める声にお応えして、Nav3 は、単一のモノリシックな API ではなく、より小さく、分離された API(「ビルディング ブロック」)を提供します。これらを組み合わせることで、複雑な機能を作成できます。Nav3 自体は、これらのビルディング ブロックを使用して、明確に定義されたナビゲーション ユースケースに適切なデフォルトを提供します。
この方法では、以下のことが可能です。
- グローバル レベルと個別レベルの両方で画面アニメーションをカスタマイズ
- 複数のペインを同時に表示し、Scenes API を使用して柔軟なレイアウトを作成します。
- カスタム動作が必要な場合は、Nav3 コンポーネントを独自の実装に簡単に置き換えることができます。
設計と機能について詳しくは、リリース時のブログ記事をご覧ください。
Navigation 2 からの移行
すでに Nav2(特に Navigation Compose)を使用している場合は、Nav3 への移行を検討してください。移行をサポートする移行ガイドが用意されています。主な手順は以下のとおりです。
- Navigation 3 の依存関係を追加します。
- ナビゲーション ルートを更新して NavKey を実装します。Nav3 を使用するためにルートでこのインターフェースを実装する必要はありませんが、実装すると、Nav3 の rememberNavBackStack 関数を利用して永続的なバックスタックを作成できます。
- ナビゲーション状態を保持、変更するクラスを作成します。ここにバックスタックが保持されます。
- NavController をこれらのクラスに置き換えます。
- デスティネーションを NavHost の NavGraph から entryProvider に移動します。
- NavHost を NavDisplay に置き換えます。
AI エージェントの移行をテストする
AI エージェントを使用して移行ガイドを読み、プロジェクトで手順を実行してみることもできます。Gemini in Android Studio のエージェント モードでこれを試すには:
- このガイドのマークダウン バージョンをプロジェクトに保存します。
- エージェントに次のプロンプトを貼り付けます(ただし、Enter キーは押さないでください)。「Migrate this project to Navigation 3 using 」
- 「@migration-guide.md」と入力します。これにより、ガイドがコンテキストとしてエージェントに提供されます。
AI エージェントは間違えることもあるため、AI エージェントによる変更は必ず慎重に確認してください。
ご自身またはエージェントのパフォーマンスについて、こちらからフィードバックをお寄せください。
一般的なシナリオ向けの Tasty ナビゲーション レシピ
一般的ではあるものの、ニュアンスが異なるユースケースについては、レシピ リポジトリをご覧ください。このレシピは、Nav3 API を特定の方法で組み合わせる方法を示しています。このレシピを特定のニーズに合わせて選択または変更できます。レシピが人気を博した場合、そのレシピのニュアンスのない部分をコア Nav3 ライブラリまたはアドオン ライブラリに「卒業」させることを検討します。
現在、19 種類のレシピが用意されています。
- 複数のバックスタック
- モジュール化と依存関係インジェクション
- ナビゲーション引数を ViewModel に渡す(Koin の使用を含む)
- イベントと共有状態による画面からの結果の返却
現在、ディープリンクのレシピと Koin の統合に取り組んでおり、他にも多くのレシピを計画しています。JetBrains のエンジニアが、Compose マルチプラットフォーム バージョンのレシピも公開しています。
レシピが必要な一般的なユースケースがある場合は、レシピ リクエストを送信してください。
概要
Nav3 の使用を開始するには、ドキュメントとレシピをご覧ください。また、1 週間にわたって、以下のような技術的なコンテンツが提供されます。
- API に関する特集動画: モジュール化、アニメーション、アダプティブ レイアウト
- Nav3 を開発したエンジニアによるライブの質問募集(AMA)セッション。
Nav3 のスポットライト ウィークは 2025 年 12 月 1 日に始まります。
問題が見つかった場合は、こちらからご報告ください。
-
サービスに関する最新情報2025 年、Android エコシステムはスマートフォンをはるかに超えて成長しています。現在、デベロッパーは、折りたたみ式デバイス、タブレット、XR、Chromebook、対応する自動車など、5 億台以上のアクティブなデバイスにリーチできます。
Fahd Imtiaz • 所要時間: 2 分 -
サービスに関する最新情報自宅での完全な没入感から、外出先での一目でわかるエクスペリエンスまで、Android XR を基盤に構築することで、空間アプリケーションのあらゆる場面でユーザーにリーチできます。Android Developer Summit で、XREAL AURA のリリースというエキサイティングなマイルストーンを達成しました。
Amy Zeppenfeld, Vinny DaSilva • 所要時間: 3 分 -
サービスに関する最新情報インテリジェンスの時代において、ユーザーはアプリをタップするだけでなく、高度な目標を表現し、Gemini のような AI エージェントが、デバイス上の複数のアプリにまたがることもあるマルチステップのワークフローを完了することを期待しています。
Jingyu Shi • 所要時間: 4 分
Android 開発に関する最新の分析情報を毎週メールでお届けします。