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
490
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
52
「なぜかネットが遅い」を“見える化”する 〜マイ ニフティが繋ぐサポートと暮らし〜 - NIKKEI Tech Talk #39
niftycorp
PRO
0
370
InnerSource Summit 2025 Three points that promoted innersource activities
niftycorp
PRO
0
200
Maker Faire Tokyo 2025 出展うらばなし - NIFTY Tech Talk #25
niftycorp
PRO
0
83
Private Status Pageの設定と活用 〜インシデントレスポンスへの活用とStatus Page運用をどうするか?〜
niftycorp
PRO
0
130
ニフティのPagerDuty活用状況
niftycorp
PRO
0
120
会員管理基盤をオンプレからクラウド移行した時に起きた障害たち - 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
110
Other Decks in Programming
See All in Programming
Package Management Learnings from Homebrew
mikemcquaid
0
120
AgentCoreとHuman in the Loop
har1101
5
200
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
560
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
Vibe codingでおすすめの言語と開発手法
uyuki234
0
210
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
280
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
930
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
140
CSC307 Lecture 04
javiergs
PRO
0
650
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
5.8k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.2k
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
190
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
Thoughts on Productivity
jonyablonski
74
5k
Un-Boring Meetings
codingconduct
0
200
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
What's in a price? How to price your products and services
michaelherold
247
13k
Tell your own story through comics
letsgokoyo
1
800
For a Future-Friendly Web
brad_frost
182
10k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
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.