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 のエージェント モードでこれを試すには:
- このガイドの Markdown バージョンをプロジェクトに保存します。
- 「Migrate this project to Navigation 3 using 」というプロンプトをエージェントに貼り付けます(ただし、Enter キーは押さないでください)。
- 「@migration-guide.md」と入力します。これにより、ガイドがエージェントのコンテキストとして提供されます。
AI エージェントが行った変更は必ず慎重に確認してください。AI エージェントは間違えることがあります。
お客様またはエージェントの対応についてご意見をお聞かせください。こちらからフィードバックをお送りください。
一般的なシナリオ向けのナビゲーション レシピ
一般的だがニュアンスのあるユースケースについては、レシピ リポジトリがあります。これは、特定の方法で 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 Studio Quail の最終安定版リリースです。Android Studio の新機能を使用すると、AI を活用したプレミアム アプリを効率的かつ効果的に構築できます。
Amman Asfaw • 所要時間: 5 分 -
プロダクト ニュース健全な Android エコシステムを維持することは、すべてのアプリとゲームが役割を果たすべき共通の取り組みです。
Raghavendra Hareesh Pottamsetty • 所要時間: 4 分
Android 開発に関する最新の分析情報を毎週メールでお届けします。