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 バージョンをプロジェクトに保存します。
- 「このプロジェクトを Navigation 3 に移行する」というプロンプトをエージェントに貼り付けます(ただし、Enter キーは押さないでください)。
- 「@migration-guide.md」と入力します。これにより、ガイドがエージェントのコンテキストとして提供されます。
AI エージェントが行った変更は必ず慎重に確認してください。AI エージェントは間違えることがあります。
お客様またはお客様のエージェントのパフォーマンスについて、ぜひこちらからフィードバックをお送りください。
一般的なシナリオのナビゲーション レシピ
一般的だがニュアンスのあるユースケースについては、レシピ リポジトリがあります。これは、特定の方法で Nav3 API を組み合わせる方法を示しています。レシピを選択または変更して、特定のニーズに対応できます。レシピが人気を集めた場合は、そのレシピのニュアンスのない部分をコアの Nav3 ライブラリまたはアドオン ライブラリに「昇格」させることを検討します。
現在、次のレシピを含む 19 個のレシピがあります。
- 複数のバックスタック
- モジュール化と依存関係インジェクション
- ViewModel にナビゲーション引数を渡す(Koin の使用を含む)
- イベントと共有状態による画面からの結果の返信
現在、ディープリンクのレシピと Koin の統合に取り組んでおり、他にも多くの計画があります。JetBrains のエンジニアが、Compose Multiplatform バージョンのレシピも公開しています。
レシピの作成を希望する一般的なユースケースがある場合は、レシピ リクエストを送信してください。
概要
Nav3 を使い始めるには、ドキュメントとレシピをご覧ください。また、1 週間を通して、以下のような技術コンテンツもご用意しています。
- モジュール化、アニメーション、アダプティブ レイアウトをカバーする API の詳細な動画。
- Nav3 を構築したエンジニアとのライブ質問募集セッション(AMA)。
Nav3 スポットライト ウィークは 2025 年 12 月 1 日に開始されます。
いつものように、問題が見つかった場合は、こちらからご報告ください。
続きを読む
-
プロダクト ニュース
2025 年、Android エコシステムはスマートフォンをはるかに超えて成長しました。現在、デベロッパーは、折りたたみ式、タブレット、XR、Chromebook、対応する自動車など、5 億台を超えるアクティブなデバイスにリーチできます。
Fahd Imtiaz • 所要時間: 2 分
-
プロダクト ニュース
本日、The Android Show で発表されたように、Android はオペレーティング システムからインテリジェンス システムへと移行し、アプリのエンゲージメントを高める機会を増やしています。
Matthew McCullough • 所要時間: 4 分
-
プロダクト ニュース
モバイル エコシステムは常に進化しており、新たな機会と新たな脅威の両方をもたらしています。これらの変更を通じて、Android と Google Play は、数十億のユーザーが安心してアプリを利用し続け、デベロッパーのイノベーションが発展し続けられるよう、引き続き取り組んでまいります。
Vijaya Kaza • 所要時間: 3 分
最新情報の入手
Android 開発に関する最新の分析情報を毎週メールでお届けします。