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
Jetpack Compose + Decomposeで始めるクロスプラットフォーム開発
Search
Yuta Tomiyama
July 10, 2021
Programming
540
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jetpack Compose + Decomposeで始めるクロスプラットフォーム開発
Zli 夏の大LT 2021 にて発表
Yuta Tomiyama
July 10, 2021
More Decks by Yuta Tomiyama
See All by Yuta Tomiyama
ビルドプロセスをデバッグしよう!
yt8492
2
520
モバイルアプリ開発を始めよう!
yt8492
0
130
Git勉強会
yt8492
0
240
なんでもやってみる勇気
yt8492
0
140
Android Autoが思ったよりしんどい話
yt8492
0
260
apollo-kotlinにcontributeした話
yt8492
0
210
DMM TVのSDカードダウンロード機能を実装した話
yt8492
1
1.1k
今だからこそ知りたいKotlin Multiplatform
yt8492
0
360
State management and API calls in Jetpack Compose: Learning Apollo + Jetpack Compose through React Hooks
yt8492
0
1.4k
Other Decks in Programming
See All in Programming
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
170
Performance Optimization With LLMs
xleitix
0
230
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
6k
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
310
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
190
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
650
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.6k
Railsバージョンを4倍にした話
optim
0
840
golang-bob.pdf
iwatsukayura
0
150
最近”作らせてる” ローカルAIアプリの話
akit37
0
520
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.2k
GraphQL の onError と Nullability のこれから
quramy
0
200
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
sira's awesome portfolio website redesign presentation
elsirapls
0
480
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
610
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.4k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
460
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Context Engineering - Making Every Token Count
addyosmani
9
1.3k
Transcript
Jetpack Compose + Decomposeで始める クロスプラットフォーム開発 2021/07/10 Zli 大LT
自己紹介 HN: マヤミト ID: yt8492 会津大学 学部4年 去年までZliの代表やってました GitHub: https://github.com/yt8492
趣味: Kotlin, Twitter, ウマ娘に狂う 後輩に完全にTwitterの人と認識されてしまっており、謎 深夜帯が賑やかなアカウント Twitter: yt8492
Jetpack Compose使ったことある人
Android以外のCompose使ったことある人
Jetpack Composeって何? - Android のネイティブ UI を構築するための最新のツールキット(公式より) https://developer.android.com/jetpack/compose - Kotlinと宣言的UIでAndroidのネイティブ開発ができる
- そろそろstableリリースされる - 最近Android界隈で流行っているので調べると記事が結構出てくると思います
Compose for 〇〇 の登場 - 去年11月、Compose for Desktopが登場 - Kotlin/JVMで動く
- Swing上でSkiaを動かしている - 今年5月、Compose for Webの登場 - Kotlin/JSで動く - DOMベース - Android, Desktop, WebでUIのコード共有が可能に(ココ重要)
UIコード共有の例
UIコード共有の例 common android desktop web
問題点 - ルーティングをどうするか - Androidにはnavigation-composeがある - AndroidのNavigationの仕組みに依存している - DesktopとWebどうする🤔 -
ルーターがないとキツイ - 既存のライブラリのラッパーを書く? - 自分で実装するのはしんどい
Decompose - Kotlin/MPP向けの、プラットフォームに依存しないlifecycle-awareなビジネスロ ジックコンポーネント+ルーターを提供するライブラリ - https://github.com/arkivanov/Decompose - 豊富な対応target - Android
- JVM - iosX64, iosArm64 - macosX64 - tvosX64, tvosArm64 - watchosArm32, watchosArm64, watchosX86, watchosX64 - JavaScript
Decomposeでルーティングを実装する - ルーティングを表す型を定義する - 直和型を使うと便利 - ルーティングに引数をもたせたい場合はここで定義する - ルーティングごとのビジネスロジックコンポーネントを定義する -
ViewModelみたいな役割にするとよさそう? - ルートのコンポーネントでルーティングの型からコンポーネントへのマッピングをす る - ルートのComposable関数でコンポーネントからページごとのComposable関数 へのマッピングをする
TODOアプリを実装してみよう
ルーティングを表す型を定義する
ルーティングごとのコンポーネントを定義する
ルーティングの型からコンポーネントへマッピングをする
コンポーネントからComposable関数へのマッピング
今回のリポジトリ - 全てを解説していたらLTではなくセッションになってしまうため - https://github.com/yt8492/todoCompose - 公式のサンプルよりシンプルに作っています - 時間なくてもろもろ雑だけどゆるして……
時間があればデモ
使ってみた感想 - Jetpack Composeで型安全にルーティングが実現できて最高〜〜〜〜〜 - navigation-compose、文字列でのルーティングなのしんどくないすか? - Androidだけのプロジェクトでもこれ使いたいレベル - Kotlinでのクロスプラットフォーム開発の夢が広がるわね
- ビジネスロジックのコンポーネントの名前がComponentなのちょっとだけしんどい - 宣言的UIだとUIの部品にもcomponentという名前使いがち - 初見でどっち?となる - 思い切ってViewModelという命名にしてしまうのもアリ?
まとめ - Jetpack Composeでクロスプラットフォーム開発をするにはDecomposeがよさそ う - Jetpack Compose、iOSにも対応してくれという気持ち - Kotlin/MPPで全てを実装する未来はすぐそこに(ほんまか?)
あわせて読みたい - 過去の登壇資料 - Kotlin/MPP関連でいっぱい登壇してるのでぜひ参考にしてください - https://speakerdeck.com/yt8492