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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
源内ハンズオン概要編
hideg
0
190
Foundation Models frameworkで画像分析
ryodeveloper
1
620
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
530
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
200
テーブルをDELETEした
yuzneri
0
140
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
260
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
160
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
400
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
290
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
300
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
100
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
370
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Making the Leap to Tech Lead
cromwellryan
135
10k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
Bash Introduction
62gerente
615
220k
The Limits of Empathy - UXLibs8
cassininazir
1
610
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
490
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
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