サービスに関する最新情報

Jetpack Navigation 3 が安定版になりました

所要時間: 3 分
Don Turner のプロフィールを表示
Don Turner デベロッパー リレーション エンジニア

Jetpack Navigation 3 バージョン 1.0 が安定版になりました 🎉。今すぐ本番環境のアプリで使用できます。JetBrains は、すでに KotlinConf アプリでこれを使用しています。

Navigation 3 は、Jetpack Compose の状態をサポートするためにゼロから構築された新しいナビゲーション ライブラリです。バックスタックを完全に制御でき、ナビゲーション状態を保持しやすくなり、アダプティブ レイアウト(リストと詳細など)を簡単に作成できます。JetBrains のクロスプラットフォーム バージョンもあります。

新しいライブラリが必要な理由

オリジナルの Jetpack Navigation ライブラリ(現在の Nav2)は 7 年前に設計されました。当初の目標を十分に達成し、繰り返し改善されてきましたが、アプリの構築方法は根本的に変化しています。

宣言型 UI を使用したリアクティブ プログラミングが標準になりました。Nav3 はこのアプローチを採用しています。たとえば、NavDisplay(画面を表示する Nav3 UI コンポーネント)は、Compose 状態に基づくキーのリスト(各キーは画面を表します)を監視し、そのリストが変更されると UI を更新します。

nav-display.png

また、Nav2 には独自の内部状態があるため、ナビゲーション状態の信頼できる唯一の情報源を確保することが難しくなる可能性があります。Nav3 では、独自の状態を指定できるため、完全に制御できます。

最後に、柔軟性とカスタマイズ性の向上を求める声にお応えして、Nav3 は、単一のモノリシックな API ではなく、複雑な機能を構築するために組み合わせることができる、より小さく、分離された API(「ビルディング ブロック」)を提供します。Nav3 自体は、これらのビルディング ブロックを使用して、明確に定義されたナビゲーション ユースケースに適切なデフォルトを提供します。

この方法では、以下のことが可能です。

設計と機能について詳しくは、リリース時のブログ記事をご覧ください。

Navigation 2 からの移行

すでに Nav2(特に Navigation Compose)を使用している場合は、Nav3 への移行を検討してください。この移行をサポートする移行ガイドが用意されています。主な手順は以下のとおりです。

  1. Navigation 3 の依存関係を追加します。
  2. ナビゲーション ルートを更新して NavKey を実装します。Nav3 を使用するためにルートでこのインターフェースを実装する必要はありませんが、実装すると、Nav3 の rememberNavBackStack 関数を利用して永続的なバックスタックを作成できます。
  3. ナビゲーション状態を保持、変更するクラスを作成します。ここにバックスタックが保持されます。
  4. NavController をこれらのクラスに置き換えます。
  5. デスティネーションを NavHost の NavGraph から entryProvider に移動します。
  6. NavHost を NavDisplay に置き換えます。

AI エージェントの移行を試す

AI エージェントを使用して移行ガイドを読み、プロジェクトで手順を実行することもできます。Gemini in Android Studio のエージェント モードでこれを試すには:

  • このガイドのマークダウン バージョンをプロジェクトに保存します。
  • エージェントに「Migrate this project to Navigation 3 using 」というプロンプトを貼り付けます(Enter キーは押さないでください)。
  • 「@migration-guide.md」と入力します。これにより、ガイドがコンテキストとしてエージェントに提供されます。

AI エージェントは間違えることもあるため、AI エージェントによる変更は必ず慎重に確認してください。

お客様またはエージェントのパフォーマンスについて、こちらからフィードバックをお寄せください。

一般的なシナリオ向けのナビゲーション レシピ

一般的ではあるものの、ニュアンスが異なるユースケースについては、レシピ リポジトリをご覧ください。このレシピは、Nav3 API を特定の方法で組み合わせる方法を示しています。これにより、特定のニーズに合わせてレシピを選択または変更できます。レシピが人気を博した場合、そのレシピのニュアンスのない部分をコア Nav3 ライブラリまたはアドオン ライブラリに「卒業」させることを検討します。

code-recipes.png

現在、19 種類のレシピが用意されています。

現在、ディープリンク レシピと Koin 統合に取り組んでおり、他にも多くの計画があります。JetBrains のエンジニアが、Compose マルチプラットフォーム バージョンのレシピも公開しています。

レシピが必要な一般的なユースケースがある場合は、レシピ リクエストを提出してください。

概要

Nav3 の使用を開始するには、ドキュメントとレシピをご覧ください。また、1 週間にわたって、次のような技術的なコンテンツが提供されます。

  • モジュール化、アニメーション、アダプティブ レイアウトをカバーする、API に関する特集動画。
  • Nav3 を開発したエンジニアとのライブ Q&A(AMA)セッション。

Nav3 のスポットライト ウィークは 2025 年 12 月 1 日に始まります。


問題が見つかった場合は、こちらからご報告ください。

作成者:
続きを読む