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