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
Compose Multiplatform 1.0.0
Search
Yuta Tomiyama
December 11, 2021
Programming
0
140
Compose Multiplatform 1.0.0
2021/12/11 Zli 大LTにて発表
Yuta Tomiyama
December 11, 2021
Tweet
Share
More Decks by Yuta Tomiyama
See All by Yuta Tomiyama
なんでもやってみる勇気
yt8492
0
32
Android Autoが思ったよりしんどい話
yt8492
0
140
apollo-kotlinにcontributeした話
yt8492
0
70
DMM TVのSDカードダウンロード機能を実装した話
yt8492
1
690
今だからこそ知りたいKotlin Multiplatform
yt8492
0
230
State management and API calls in Jetpack Compose: Learning Apollo + Jetpack Compose through React Hooks
yt8492
0
1.1k
サーバーフレームワークの仕組みが気になったので車輪の再発明をしてみた
yt8492
0
170
Compose for Webを始めよう
yt8492
0
350
Kotlin/NativeからCの標準ライブラリを呼び出そう
yt8492
0
320
Other Decks in Programming
See All in Programming
Competitionsだけじゃない! Kaggle Notebooks Grandmasterのすすめ
corochann
1
290
게임 개발하던 학생이이 세계에선 안드로이드 개발자?
pangmoo
0
110
RemixとCloudflare Stack におけるFile Upload
ossamoon
1
130
モジュラモノリス、その前に / Modular monolith, before that
euglena1215
6
690
MLOps in Mercari Group’s Trust and Safety ML Team
cjhj
1
120
Cancel Next.js Page Navigation: Full Throttle
ypresto
1
190
実践Dash - 手を抜きながら本気で作るデータApplicationの基本と応用 / Dash for Python and Baseball
shinyorke
2
440
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
10
1.4k
ACES Meet におけるリリース作業改善の取り組み
fukucheee
0
130
NEWTにおけるiOS18対応の進め方
ryu1sazae
0
230
ROS 2のZenoh対応とZenohのROS 2対応
takasehideki
2
300
UnJSで簡単に始めるCLIツール開発 / cli-tool-development-with-unjs
aoseyuu
2
300
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
787
250k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
249
21k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
7.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
The Brand Is Dead. Long Live the Brand.
mthomps
53
38k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Testing 201, or: Great Expectations
jmmastey
38
7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
327
21k
For a Future-Friendly Web
brad_frost
174
9.3k
Web development in the modern age
philhawksworth
205
10k
Designing the Hi-DPI Web
ddemaree
280
34k
Transcript
Compose Multiplatform 1.0.0 2021/12/11 Zli 大LT
自己紹介 HN: マヤミト ID: yt8492 会津大学 学部4年 任意の言語でフロントエンドをやる人間が増えてきて楽しいね GitHub: https://github.com/yt8492
趣味: Kotlin, Twitter, ウマ娘 ウマ娘のガチャを天井まで回すのが得意です Twitter: yt8492 yt8492.com
今日言いたいこと
None
これだけです
で終わるわけにもいかないので
Compose Multiplatformとは - Jetpack Composeをベースとした、高速かつリアクティブな、デスクトップとWebの UIフレームワーク - KotlinでDesktopとWebの開発ができるよ!やったね! - Compose
for DesktopとCompose for Webで構成されている - Compose for Desktop - JVMで動く - レンダリングにSkiaを使用 - AndroidとUIコンポーネントの共有が可能 - Compose for Web - JSにトランスパイルする - DOMベース - わりとReactに近い - 1.0.0 Release🎉
覚えていますか
実際どこまでできるのか - Compose for Desktop - 標準で用意されている UIコンポーネントに関しては Androidと同じものが使える -
Scaffold, Column, Text, Button, etc… - マウスイベントの取得など Desktop向けのAPIが用意されている - Swingと相互運用可能 - ルーティングまわりなどを外部ライブラリに頼れば UI層のコードをかなり共通化できる - Decomposeなど - Windows, Linux, MacOSに対応 - Jetbrainsは既にJetBrains Toolbox Appでプロダクション導入している
実際どこまでできるのか - Compose for Web - ReactのようにHTMLのタグに対応したUIコンポーネントが用意されている - スタイルはAndroidやDesktopとは違いCSSのDSLを書くかCSSを書いてclassを指定する -
素のReactを触っている感覚に近い - 周辺ライブラリが全然ないのが厳しい - DesktopやAndroidとのUIコンポーネントの共有は今の所できなさそう - ちょっと前はできたんだけど Deprecatedになってた😢 - Jimさんが将来的にサポートするとは Twitterで言っていた - まだプロダクション導入するには早そう - そもそも選択肢にあるのか
Todoリストを実装してみる - こんな感じのやつ
AndroidとDesktopの共通化 - 見慣れたコードがAndroidとDesktopで 動く - Decomposeでロジック含め共通化できた
Webの実装 - CSSが間に合わなかったです(小声)
Webの実装(WIP)
今回のリポジトリ - yt8492/todoCompose - https://github.com/yt8492/todoCompose
やってみた感想 - Desktopはやってて特に違和感は感じなかった - AndroidのJetpack Compose経験がある人なら今すぐにでも始められそう - UI共通化は画面全部を共通化するよりも部品単位で共通化するのがいいかも - DesktopやAndroidに合わせたUIを組む
- Webはちょっと辛そう - 書き味がだいぶReact寄りなのでJetpack Composeの感覚からちょっと遠くなる - 周辺ライブラリの不足 - 現状まだkotlin-reactに軍配があがりそう - ルーティングにDecompose以外の選択肢が出てきた - 今回はWebの実装にHashRouterとBrowserRouterを提供するライブラリを使った - https://github.com/hfhbd/routing-compose - Decomposeはルーティングを提供する関数が Web未対応(そもそも今後対応するのか? )
当面の目標 - kotlin-reactで作った自作ブログをCompose for Webに移行する