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 バージョンをプロジェクトに保存します。
- このプロンプトをエージェントに貼り付けます(Enter キーは押さないでください)。「 を使用して、このプロジェクトを Navigation 3 に移行します。」
- @migration-guide.md と入力します。これにより、ガイドがエージェントのコンテキストとして提供されます。
AI エージェントによる変更は必ず慎重に確認してください。間違える可能性があります。
エージェントのパフォーマンスについて、こちらからフィードバックをお寄せください。
一般的なシナリオに対応するナビゲーション レシピ
一般的ですがニュアンスのあるユースケースについては、レシピ リポジトリがあります。Nav3 API を特定の方法で組み合わせる方法を示しています。レシピを選択または変更して、特定のニーズに対応できます。レシピが人気を集めた場合は、ニュアンスのない部分をコア Nav3 ライブラリまたはアドオン ライブラリに「昇格」させることを検討します。
現在、次の 19 個のレシピがあります。
現在、ディープリンク レシピとKoin 統合に取り組んでおり、他にも多くの計画があります。JetBrains のエンジニアは、レシピの Compose Multiplatform バージョンも公開しています。
レシピが必要な一般的なユースケースがある場合は、レシピ リクエストを送信してください。
まとめ
Nav3 を使い始めるには、ドキュメントとレシピをご覧ください。さらに、次のような技術コンテンツを 1 週間にわたって公開します。
- モジュール化、アニメーション、アダプティブ レイアウトをカバーする API の詳細な動画。
- Nav3 を構築したエンジニアとのライブ Ask Me Anything(AMA)。
Nav3 スポットライト ウィークは 2025 年 12 月 1 日に開始します。
問題が見つかった場合は、こちらからご報告ください。
続きを読む
-
プロダクト ニュース
2025 年、Android エコシステムはスマートフォンをはるかに超えて成長しました。現在、デベロッパーは、折りたたみ式デバイス、タブレット、XR、Chromebook、互換性のある自動車など、5 億台を超えるアクティブなデバイスにリーチできます。
-
プロダクト ニュース
デベロッパーの AI ワークフローとニーズはそれぞれ異なるため、AI が開発にどのように役立つかを選択できることが重要です。1 月に、ローカルまたはリモートの AI モデルを選択して Android Studio の AI 機能に利用できる機能が導入されました。
Matthew Warner • 2 分で読了
-
プロダクト ニュース
Android Studio Panda 3 が安定版となり、本番環境で使用できる準備が整いました。このリリースでは、AI を活用したワークフローの制御とカスタマイズがさらに強化され、高品質の Android アプリをこれまで以上に簡単に構築できます。
Matt Dyor • 3 分で読了
メールを受け取る
Android 開発に関する最新の分析情報を毎週メールでお届けします。