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 のエージェント モードでこれを試すには:
- このガイドのマークダウン バージョンをプロジェクトに保存します。
- エージェントに「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 を開発したエンジニアとのライブ Q&A(AMA)セッション。
Nav3 のスポットライト ウィークは 2025 年 12 月 1 日に始まります。
問題が見つかった場合は、こちらからご報告ください。
-
サービスに関する最新情報2025 年、Android エコシステムはスマートフォンをはるかに超えて成長しています。現在、デベロッパーは、折りたたみ式デバイス、タブレット、XR、Chromebook、対応する自動車など、5 億台以上のアクティブなデバイスにリーチできます。
Fahd Imtiaz • 所要時間: 2 分 -
サービスに関する最新情報エージェント開発が加速する中、Android エンジニアリングは、アシスト型のコード補完から、開発者の指示の下でエンドツーエンドで実行するエージェントへと移行し、エキサイティングな新しいフロンティアに到達しています。使用するモデルとエージェントを完全に選択でき、柔軟性があります。
Jason Buchel • 所要時間: 3 分 -
サービスに関する最新情報本日、Google は「単なるストアを超えた」ビジョンを次の段階に進める方法について発表しました。Google Play は、月間アクティブ ユーザー数が 2 億 5,000 万人を超える [マイページ] タブから、7 億人以上のゲーマー プロフィールをつなぐ統合ゲーム プラットフォームまで、あらゆる場所でユーザーのニーズに応えています。
Paul Feng • 所要時間: 3 分
Android 開発に関する最新の分析情報を毎週メールでお届けします。