Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
5分で完全理解するNav3との向き合い方
Search
Tomoki Yamashita
June 25, 2025
Technology
310
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
5分で完全理解するNav3との向き合い方
Tomoki Yamashita
June 25, 2025
More Decks by Tomoki Yamashita
See All by Tomoki Yamashita
ハードウェア連携が必要なプロダクトにおける自動テストの書き方
tomorrowkey
0
150
STORES_決済端末2ってAndroidなんでしょ__ほんとうかな__.pdf
tomorrowkey
0
76
モバイルとRubyとわたし
tomorrowkey
0
83
BiDiってなんだ?
tomorrowkey
2
790
文字列操作の達人になる ~ Kotlinの文字列の便利な世界 ~ - Kotlin fest 2025
tomorrowkey
2
1.9k
Ebisu mobile #11 - Predictive Backに対応する
tomorrowkey
1
170
AI協同時代にモバイルエンジニアが備えるべき開発環境の話
tomorrowkey
2
460
テストを楽に書きたい
tomorrowkey
2
450
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
1.5k
Other Decks in Technology
See All in Technology
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
460
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
170
Codex概要
ymiya55
0
110
Claude起点の仕様駆動開発
tanakaseiya
0
230
Meet AgentCore Identity Consent Portal
hironobuiga
2
140
Terraformを用いたJamf Pro構成のIaC, GitOps化への挑戦
yukun
0
120
Swap and Memory Reclaim - Squeezing Out More RAM
ennael
PRO
1
1.4k
ボードゲームの遊び相手をFoundation Modelsで作る / iOSDC Japan 2026
genda
0
240
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
1
260
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
640
CI/CDではもう遅い - 人とAIが迂回しないDevSecOps Verify基盤の再設計 -
kintotechdev
1
500
覗いてみよう 関数型ビジュアル言語×2Dグラフィックスの世界
yohyamasaki
0
150
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
490
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Balancing Empowerment & Direction
lara
6
1.3k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
410
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
450
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
710
The Cult of Friendly URLs
andyhume
79
7k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
430
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Transcript
STORES 株式会社 5分で完全理解するNav3との向き合い方 Ebisu mobile #10 〜WWDC & Google I/O
スペシャル!〜 2025.06.26 @tomorrowkey
自己紹介
自己紹介 • 山下智樹 / @tomorrowkey • STORES株式会社 - STORES ブランドアプリ
• Android エンジニア 3
Nav3の話をしたい
Jetpack Navigationってなに • 画面遷移を実現するためのAndroidのライブラリ • NavigationはFragmentベースの時代に作られたライブラリであり、XMLに 画面の遷移先や引数を定義して、画面遷移を宣言的に書けるライブラリだっ た。 • Navigation
Composeの登場によりCompose時代でも画面遷移を定義できる ようになった。 5
Nav2のデメリット • Fragment時代に作られたライブラリなので、Jetpack Composeとの親和性 が完全ではなかった。 • バックスタックの管理がライブラリ任せであり、テクニカルな画面遷移を実装 しようとすると、高度な知識とワークアラウンドが必要となった。 • Nav2では画面をNavHostいっぱいに表示するため、TabletやFoldableなど画
面の大きさを活かしたレイアウトを表示をさせることが難しかった。 6
Nav3の誕生
たった2つのNav3のポイント You own the back stack バックスタックはただのListです。 その管理はライブラリではなく自分自身で所有し、コントロールします。 Get out
of your way どのようにナビゲーションしたいかは、開発者である自分自身が一番分かっている。 Nav3ではオープンで拡張可能なように設計されているため、そのアプリのユースケースに併せてカスタマイズが可能になりました。 8
サンプルコード val backStack = remember { mutableStateListOf<Any>(RouteA) } NavDisplay( backStack
= backStack, onBack = { backStack.removeLastOrNull() }, entryProvider = entryProvider { entry<RouteA> { ContentGreen("Welcome to Nav3") { Button(onClick = { backStack.add(RouteB("123")) }) { Text("Click to navigate") } } } entry<RouteB> { key -> ContentBlue("Route id: ${key.id} ") } } ) 9
Nav3はすべてを解決するのか • Nav3ではすべてのアプリのユースケースをカバーするアプローチではなく、 多くのユースケースをカバーするためのコンポーネントが提供されるように なった。 • 一見柔軟性が増えたように聞こえるが、これまでライブラリで管理されていた DeepLinkや状態の管理は開発者が行わないといけなくなった。 10
Nav3にどう立ち向かうか https://github.com/android/nav3-recipes によくあるユースケースのためのサ ンプルコードがあります。 - NavigationRail or NavigationBar - ログインを題材にした条件付き画面遷移
- Scenes を複雑なカスタムレイアウト - DeepLinks (まだコードはない) - Android XR Support (まだコードはない) - 画面間の戻り値 (まだコードはない) 11
これからのNav3に期待 - まだAlpha版なのでプロダクションユースは推奨されていません - 触ってみてフィードバックをIssue Trackerになげましょう 12
おわり
参考文献 - Android Developers Blog: Announcing Jetpack Navigation 3 https://android-developers.googleblog.com/2025/05/announcing-jetpack-navigation-3-for-compose.html
- android/nav3-recipes: Implement common use cases with Jetpack Navigation 3 https://github.com/android/nav3-recipes - Navigating the future with Jetpack Navigation 3 - Core Concepts - YouTube https://www.youtube.com/watch?v=opLYavQHBB8 14