プロダクト ニュース

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

3 分で読了
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 のエージェント モードで試すには:

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

AI エージェントによる変更は必ず慎重に確認してください。間違える可能性があります。

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

一般的なシナリオに対応するナビゲーション レシピ

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

code-recipes.png

現在、次の 19 個のレシピがあります。

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

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

まとめ

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

  • モジュール化、アニメーション、アダプティブ レイアウトをカバーする API の詳細な動画。
  • Nav3 を構築したエンジニアとのライブ Ask Me Anything(AMA)。

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


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

作成者:

続きを読む