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
Flutter × Jetpack Composeの相互運用 @ GDG Tokyo 2023
Search
Ryotaro Onoue
December 09, 2023
Programming
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Flutter × Jetpack Composeの相互運用 @ GDG Tokyo 2023
Ryotaro Onoue
December 09, 2023
More Decks by Ryotaro Onoue
See All by Ryotaro Onoue
FlutterKaigi 2025 公式アプリ&WebサイトのCDについて
yumnumm
0
130
FlutterKaigi 2025 システム裏側
yumnumm
0
2.1k
Terraform+cloud-initで自宅サーバのLXDをIaCするお話
yumnumm
2
250
FlutterKaigi 2024における開発チームの取り組み と 2025への展望
yumnumm
0
110
Dart WebAssemblyを使ったWeb API on Cloudflare Workers
yumnumm
0
130
Apple Walletでパスを作るお話
yumnumm
0
260
私がやってきたアウトプット集
yumnumm
0
210
俺/私のこだわりデスク大大大自慢LT大会 (LTFes #12)
yumnumm
0
150
仕事以外で作成したプロダクトの自慢大会
yumnumm
0
200
Other Decks in Programming
See All in Programming
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.6k
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
490
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
200
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
390
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
230
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.8k
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
110
AIが無かった頃の素敵な出会いの話
codmoninc
1
420
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
220
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
680
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
460
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
Designing for Performance
lara
611
70k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Raft: Consensus for Rubyists
vanstee
141
7.6k
4 Signs Your Business is Dying
shpigford
187
22k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
170
Thoughts on Productivity
jonyablonski
76
5.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
The browser strikes back
jonoalderson
0
1.5k
Transcript
2023.12.09 Flutter×Jetpack Compose ૬ޓӡ༻ YUMEMI Inc. Flutter Engineer - Onoue
Ryotaro @YumNumm (͙͙) GDG DevFest Tokyo 2023 LT
0. whoami - 20234݄͔Β גࣜձࣾΏΊΈͰFlutter ΤϯδχΞͱͯ͠ۈ - 202311݄ͷFlutterKaigi 2023Ͱɺ
ྛ͞Μͱొஃ
0. whoami - ؔ࿈ͷFlutterΞϓϦέʔγϣϯΛ ݸਓ։ൃ͍ͯ͠·͢ - AppStoreʹͯެ։ࡁΈ/PlayετΞ৹ࠪ ͪ -
HPɿhttps: / / eqmonitor.app - ΦʔϓϯιʔεͰ͢ - https: / / github.com/YumNumm/ EQMonitor
1. Today’s topic Flutter × Jetpack Compose
Android Platform Views 1. FlutterͰAndroidͷࢿ࢈Λར༻͢Δख๏ - ݱঢ়ͷFlutterͰඳը͕ࠔͳػೳΛ࣮͢Δͷʹར༻ -
Ex. WebView, ਤ, ө૾࠶ੜ - 3ͭͷΞϓϩʔν - Virtual Display (VD) - Hybrid Composition (HC) - Texture Hybrid Composition (TLHC) https: // github.com/flutter/flutter/wiki/Android-Platform-Views
Virtual Display OR Hybrid Composition OR Texture Layer Hybrid Composition
1. FlutterͰAndroidͷࢿ࢈Λར༻͢Δख๏ - ԾσΟεϓϨΠ (Virtual Display - VD) - Android SDK 20+ - ωΠςΟϒཁૉΛVirtual DisplayϨϯμϦϯά - > όοϑΝ͔Βग़ྗΛऔಘ - > FlutterͷΟδΣοτπϦʔ্ʹςΫενϟͱͯ͠ѻ͏ - > Android্ͰςΫε νϟͱͯ͠શମΛग़ྗ - 👍 - ύϑΥʔϚϯε͕ྑ͍ - 👎 - ΞΫηγϏϦςΟͷܽଛɾΩʔϘʔυपΓͷ੍ https: // github.com/flutter/flutter/wiki/Virtual-Display
Virtual Display OR Hybrid Composition OR Texture Layer Hybrid Composition
1. FlutterͰAndroidͷࢿ࢈Λར༻͢Δख๏ - Hybrid Composition (HC) - Android SDK 19+ - Flutter 1.20+ - ΟδΣοτπϦʔΛ2ׂ (PlatformViewͷ্ɾԼ)ͯ͠ඳը → ϓϥοτϑΥʔϜଆͰ߹ - 👍 - ωΠςΟϒͷը໘͕ͦͷ··ඳը͞ΕΔͷͰɺΞΫηγϏϦςΟɾΩʔϘʔυपΓͷ΄ ͱΜͲղܾ (VDͷ՝ղܾ) - 👎 - ύϑΥʔϚϯε͕ѱ͍ - Android 10ະຬͰߋʹύϑΥʔϚϯε͕ѱ͍ https: // github.com/flutter/flutter/wiki/Hybrid-Composition#Android
Virtual Display OR Hybrid Composition OR Texture Layer Hybrid Composition
1-1. FlutterͰAndroidͷࢿ࢈Λར༻͢Δख๏ - Hybrid Composition (HC) - API 19+ - Flutter 1.20+ - ΟδΣοτπϦʔΛ2ׂ (PlatformViewͷ্ɾԼ)ͯ͠ඳը → ϓϥοτϑΥʔϜଆͰ߹ - 👍 - ωΠςΟϒͷը໘͕ͦͷ··ඳը͞ΕΔͷͰɺΞΫηγϏϦςΟɾΩʔϘʔυपΓͷ΄ ͱΜͲղܾ (VDͷ՝ղܾ) - 👎 - ύϑΥʔϚϯε͕ѱ͍ - Android 10ະຬͰߋʹύϑΥʔϚϯε͕ѱ͍ - Voice PocochaͷΤϑΣΫτදࣔύϑΥʔϚϯε (Android 8) - VD: avg. 13.5 ms/frame - HC: avg. 43.0 ms/frame 3ഒఔͷࠩ! ը૾ɾ༰IUUQTFOHJOFFSJOHEFOBDPNCMPHWPJDFQPDPDIBPOFZFBS fl VUUFSΑΓҾ༻
Virtual Display OR Hybrid Composition OR Texture Layer Hybrid Composition
1. FlutterͰAndroidͷࢿ࢈Λར༻͢Δख๏ - Texture Layer Hybrid Composition (TLHC) - Android SDK 23+ - Flutter 3.0+ - VDͱHCͷஔ͖͑తͷͷ - > ੍ݶ͕͋ͬͨͷͰ 3ͭΊͷબࢶʹ - TLHCΛڧ੍͢ΔAPI͋Δ͕ɺجຊతʹTLHC - > ࣗಈͰHCϑΥʔϧόοΫ͢ΔAPI͕ੜ͑ͯΔ - 👍 - VD, HCͷ͍͍ͱ͜औΓ - 👎 - Android SDK 23+ - ը໘ߋ৽࣌ʹඞͣΞοϓσʔτ͞ΕΔ͜ͱ͕อূ͞Ε͍ͯͳ͍ (ௐࠪத) https: // github.com/flutter/flutter/wiki/Texture-Layer-Hybrid-Composition
Android Platform Views 1-1. FlutterͰAndroidͷࢿ࢈Λར༻͢Δख๏ - ݱঢ়ͷFlutterͰඳը͕ࠔͳػೳΛ࣮͢Δͷʹར༻ -
Ex. WebView, ਤ, ө૾࠶ੜ - 3ͭͷΞϓϩʔν - Virtual Display (VD) - Hybrid Composition (HC) - Texture Hybrid Composition (TLHC) https: // github.com/flutter/flutter/wiki/Android-Platform-Views - Hybrid Composition (HC) - Texture Hybrid Composition (TLHC)
Jetpack ComposeΛࢼ͢ 1. Androidͷࢿ࢈ . . . ? -
Android View (XML Layout) - XMLͰUIΛهड़ ɾ ྑ͘ѱ͘ϨΨγʔͳٕज़ ɾ ໋ྩత - Jetpack Compose - KotlinͰUIͱϩδοΫΛهड़ ɾ એݴతUI https: // github.com/flutter/flutter/wiki/Texture-Layer-Hybrid-Composition
Jetpack ComposeΛࢼ͢ 1. Androidͷࢿ࢈ . . . ? -
Android View (XML Layout) - XMLͰUIΛهड़ ɾ ྑ͘ѱ͘ϨΨγʔͳٕज़ ɾ ໋ྩత - Jetpack Compose - KotlinͰUIͱϩδοΫΛهड़ ɾ એݴతUI https: // github.com/flutter/flutter/wiki/Texture-Layer-Hybrid-Composition - FlutterͷPlatformViewͰ Android View Λ͏ ← ࢁ΄Ͳग़ͯ͘Δ - FlutterͷPlatformViewͰ Jetpack ComposeΛ͏ ← ͋·Γग़ͯ͜ͳ͍ (Android͋·Γৄ͘͠ͳ͍͚Ͳ) ͬͯΈΔ͔͠!
2. ·ͣΜͰΈΔ Flutter × Jetpack Compose
2. Կ࡞Δͷ? Flutterͱ͍͑ . ..
2. Կ࡞Δͷ? Flutterͱ͍͑ . .. - flutter create ͨ࣌͠ʹͰ͖ΔΧϯλʔΞϓϦ
2. Կ࡞Δͷ? Flutterͱ͍͑ . .. - flutter create ͨ࣌͠ʹͰ͖ΔΧϯλʔΞϓϦ -
Χϯλʔදࣔ෦ΛωΠςΟϒͱ࿈ಈ - ্: Jetpack ComposeͰදࣔ - Լ: FlutterͰදࣔ
Կ࡞Δͷ? Flutterͱ͍͑ . .. - flutter create ͨ࣌͠ʹͰ͖ΔΧϯλʔΞϓϦ - Χϯλʔදࣔ෦ΛωΠςΟϒ
- FloatingActionButton, AppBarFlutter - FABλοϓ࣌ʹωΠςΟϒଆ λοϓͨ͜͠ͱΛ௨ - ωΠςΟϒͰอ͍࣋ͯ͠ΔΧϯλʔΛΠϯΫϦϝϯτ͠දࣔ https: // docs.flutter.dev/platform-integration/android/platform-views
2. ࣮! PlatformView - viewΛࣝผ͢ΔͨΊͷจࣈ ྻΛviewTypeηοτ - PlatformViewsService.ini tSurfaceAndroidView API
Λ͏ - TLHC ͳ͍͠ HC Flutter side
2. ࣮! Jetpack ComposeΛ৮Δ४උ Android side https: // developer.android.com/jetpack/compose/setup?hl=ja#setup-compose
2. ࣮! Jetpack ComposeΛ৮Δ४උ Android side https: // developer.android.com/jetpack/compose/setup?hl=ja#setup-compose
- android/build.gradle, android/app/build.gradle ґଘͷ Ճ
2. ࣮! FlutterͱAndroidଆͷௐ Android side MainActivityͰɺMethodChannelΛΠϯελϯεԽ PlatformViewFactoryΛొ
2. ࣮! FlutterͱAndroidଆͷௐ Android side ViewFactoryͷcreateؔΛΦʔόʔϥΠυͯ͠ MyComposeView: PlatformViewΛฦ͢
2. ࣮! FlutterͱAndroidଆͷௐ Android side MyComposeViewͰ ComposeViewΛׂΓ ͯ -
> ComposeViewʹCounterAppΛηοτ
2. ࣮! Jetpack ComposeͰը໘࡞ Android side ComposableؔΛ༻ҙͯ͋͛͠Δ ScaffoldͰViewΛߏங͢Δ Column{
Text(), Text() }ͰTextΛॎʹฒ Δ
2. ࣮! Jetpack ComposeΛ৮Δ४උ Android side ComposableؔΛ༻ҙͯ͋͛͠Δ ScaffoldͰViewΛߏங͢Δ Column{
Text(), Text() }ͰTextΛॎʹฒ Δ ॳճίϯϙδγϣϯͰ MethodChannelͷhandlerొ “Increment”͕ୟ͔Εͨ࣌ʹɺΧϯλʔΠϯΫϦϝϯτ
2. ࣮! Jetpack ComposeΛ৮Δ४උ Android side ComposableؔΛ༻ҙͯ͋͛͠Δ ScaffoldͰViewΛߏங͢Δ Column{
Text(), Text() }ͰTextΛॎʹฒ Δ Jetpack ComposeଆͷFAB͕ԡ͞Εͨ࣌ʹɺMethodChannelͰ Flutterଆ௨
2. ࣮! Jetpack ComposeΛ৮Δ४උ Android side
3. ·ͱΊ Flutter × Jetpack Compose
·ͱΊ Flutter × Jetpack Compose - Flutter͚ͩͰશͯͷ՝ΛղܾͰ͖ΔΘ͚Ͱͳ͍ - GLSLͰFragment ShaderʹΞΫηεͨ͠Γ
Impeller Scene(experimental 3D renderer) ͕͋Δ͕ Γ·ͩͰ͖ͳ͍͜ͱ ࢁ΄Ͳ - ωΠςΟϒͷࢿ࢈Λ͋Γ͕ͨ͘ར༻͍͖ͤͯͨͩ͞·͠ΐ͏ - FlutterJetpack Compose ͲͪΒએݴతUI - FlutterΤϯδχΞʹͱͬͯ ͠Έ͍͢👍 - - > ൺֱత͔ΜͨΜʹωΠςΟϒ࣮Ͱ͖Δ - ϓϥάΠϯ͕ແ͍αʔϏεɾෳͷࢿ࢈Λෳ߹తʹར༻͢Δ߹ʹ͑Δ - Jetpack ComposeରԠ͍ͯ͠ͳ͍/BetaͳϥΠϒϥϦ͋ΔͷͰҙ
- https: / / github.com/YumNumm/flutter_compose_view ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠! Follow me on
X: @YumNumm