Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Jetpack Composeを導入して 見えた利点と課題
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ニフティ株式会社
PRO
September 26, 2022
Video
Resources
Programming
0
500
Jetpack Composeを導入して 見えた利点と課題
ニフティ株式会社
PRO
September 26, 2022
Tweet
Share
Video
Resources
NIFTY Tech Talk #5 iOS/Androidアプリ開発LT
https://nifty.connpass.com/event/259697/
More Decks by ニフティ株式会社
See All by ニフティ株式会社
なぜISPでオリジナルカードゲームを作ったのか?制作者と対談 - NIFTY Tech Talk #25
niftycorp
PRO
0
69
「なぜかネットが遅い」を“見える化”する 〜マイ ニフティが繋ぐサポートと暮らし〜 - NIKKEI Tech Talk #39
niftycorp
PRO
0
440
InnerSource Summit 2025 Three points that promoted innersource activities
niftycorp
PRO
0
240
Maker Faire Tokyo 2025 出展うらばなし - NIFTY Tech Talk #25
niftycorp
PRO
0
93
Private Status Pageの設定と活用 〜インシデントレスポンスへの活用とStatus Page運用をどうするか?〜
niftycorp
PRO
0
150
ニフティのPagerDuty活用状況
niftycorp
PRO
0
130
会員管理基盤をオンプレからクラウド移行した時に起きた障害たち - asken tech talk vol.13
niftycorp
PRO
0
2.6k
モニタリング統一への道のり - 分散モニタリングツール統合のためのオブザーバビリティプロジェクト
niftycorp
PRO
1
1.1k
2025-07-08 InnerSource Commons Japan Meetup #14 【OST】チームの壁、ぶっ壊そ!壁の乗り越え方、一緒に考えよう!
niftycorp
PRO
0
120
Other Decks in Programming
See All in Programming
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
450
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
320
TipKitTips
ktcryomm
0
150
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
370
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
390
並行開発のためのコードレビュー
miyukiw
2
2.2k
NOT A HOTEL - 建築や人と融合し、自由を創り出すソフトウェア
not_a_hokuts
2
540
AI巻き込み型コードレビューのススメ
nealle
2
2.5k
Geminiの機能を調べ尽くしてみた
naruyoshimi
0
190
コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions
handlename
0
150
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
16
9.3k
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
220
Featured
See All Featured
Navigating Team Friction
lara
192
16k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
210
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
310
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
120
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Typedesign – Prime Four
hannesfritz
42
3k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
140
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
180
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
280
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
73
Transcript
Copyright © NIFTY Corporation All Rights Reserved. Jetpack Composeを導入して 見えた利点と課題
山田良介 2022/09/26
Copyright © NIFTY Corporation All Rights Reserved. About Me 2
山田 良介 会員システムグループ 第1開発チーム • @search 開発運用 / Androidアプリ全般 開発補助 • マイ ニフティ チーム内テックリード
Copyright © NIFTY Corporation All Rights Reserved. マイ ニフティ 3
「気になる」をすばやく確認 ニフティ会員様向けアプリ 料金・ポイント確認などよく利用する機能を提供 接続回線開通前の状況確認も iOS版 2021年12月リリース Android版 2022年3月リリース
Copyright © NIFTY Corporation All Rights Reserved. Android版 実装前の社内課題 4
10年前から変わらない基本設計 主なAndroid開発部隊が子会社へ分離 Android開発自体が後回しに 最新の技術標準を積極的に取り入れ 社内アプリの足がかりとしたい
Copyright © NIFTY Corporation All Rights Reserved. 主な技術スタック 5 従来
マイ ニフティ 言語 Java Kotlin UI View XML Jetpack Compose 画面遷移 FragmentTransaction Jetpack Compose Navigation 非同期処理 Volley Kotlin Coroutines / Flow / Retrofit JSON処理 Gson Kotlinx Serialization ローカル永続化 preference / sqlite DataStore / Room DI なし Hilt
Copyright © NIFTY Corporation All Rights Reserved. Jetpack Compose 6
• 2021年に登場したばかりの宣言的UIツールキット • UIにXMLを使わず、全てKotlinの関数で定義 • 状態に応じたUI表示を定義するだけで良い ◦ 差分更新はComposeが自動的に行う
良かったこと
Copyright © NIFTY Corporation All Rights Reserved. 良かったこと 8 •
UIコーディングが爆速 ◦ 記述がシンプル ◦ レイアウトのネストの深さを気にする必要がない ◦ リスト部分のコード量が激減 • Reactに近い開発体験 ◦ 書き味がほぼReact(Hooks) ◦ Storybookのように使っていけるPreview • 公式ドキュメントの充実 ◦ Pathway・公式サンプルで十分な知識が得られる
Copyright © NIFTY Corporation All Rights Reserved. 例: リストの場合 9
Android View Layout XML RecyclerView.Adapter
Copyright © NIFTY Corporation All Rights Reserved. 例: リストの場合 10
Compose リスト要素Composable リストComposable
Copyright © NIFTY Corporation All Rights Reserved. プレビューも容易 11
Copyright © NIFTY Corporation All Rights Reserved. 考慮事項 12 •
コーディングルールは決めておいた方が良い ◦ classでない分、個人による差異が出がち ◦ 例: ▪ ディレクトリ構造・命名規則 ▪ 引数順 ▪ プレビューを行う単位 • Reactに慣れておくとベター ◦ コンポーネント分割などの参考に
Copyright © NIFTY Corporation All Rights Reserved. 考慮事項 13 •
Accompanistでの補助が現状は必要 ◦ https://github.com/google/accompanist ◦ 公式composeライブラリで足りない機能を補う ◦ 例: ▪ Pager (ViewPager) ▪ Swipe to Refresh (SwipeRefreshLayout) ▪ Navigation Animation
微妙なところ
Copyright © NIFTY Corporation All Rights Reserved. 微妙なところ 15 •
画面遷移(Navigation)が辛い ◦ すべてがstring ◦ 遷移アニメーションが不自然 • AppBarの取り扱いが難しい ◦ ページ側からAppBarを操作できない • Viewが混じると辛い ◦ 例: Nested Scroll
Copyright © NIFTY Corporation All Rights Reserved. 例 16 1画面移動するだけの
シンプルな画面遷移
Copyright © NIFTY Corporation All Rights Reserved. 画面遷移(Navigation) 17 Jetpack
Navigation Navigation XML 遷移コード
Copyright © NIFTY Corporation All Rights Reserved. 18 Jetpack Navigation
自動生成クラスで遷移先を担保 • ビルド時に安全性が担保される
Copyright © NIFTY Corporation All Rights Reserved. 画面遷移(Navigation) 19 Compose
Navigation ナビゲーション用Composable 遷移コード
Copyright © NIFTY Corporation All Rights Reserved. 画面遷移(Navigation) 20 Compose
Navigation 遷移先を文字列で指定 • ビルド時の保証はない • リファクタリングに弱い
Copyright © NIFTY Corporation All Rights Reserved. 遷移時の引数 21 Jetpack
Navigation Navigation XML 遷移コード
Copyright © NIFTY Corporation All Rights Reserved. 遷移時の引数 22 XMLで遷移Actionに対して引数を定義
• 自動生成クラスで型安全性が担保される • 実装としてはBundle Jetpack Navigation
Copyright © NIFTY Corporation All Rights Reserved. 遷移時の引数 23 Compose
Navigation ナビゲーション用Composable 遷移コード
Copyright © NIFTY Corporation All Rights Reserved. 遷移時の引数 24 Compose
Navigation 画面に対してURL文字列で指定 • ビルド時に型安全性が担保されない • シリアライズ・デシリアライズを自前で行う必要あり ◦ URLエスケープ ◦ バイナリのBASE64変換
Copyright © NIFTY Corporation All Rights Reserved. 遷移アニメーション 25 Jetpack
Navigation Compose Navigation * Accompanist使用
Copyright © NIFTY Corporation All Rights Reserved. まとめ 26 •
Jetpack Composeは開発速度向上に効果あり ◦ コード量(特にリスト)の低減 ◦ 新人の入りやすさ • Navigation周りには正直難あり ◦ 画面遷移は従来通りActivityとFragmentで行うのも一手 ◦ 無理にFull Jetpack Composeにする必要はない
Copyright © NIFTY Corporation All Rights Reserved.