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
110
FlutterKaigi 2025 システム裏側
yumnumm
0
2.1k
Terraform+cloud-initで自宅サーバのLXDをIaCするお話
yumnumm
2
230
FlutterKaigi 2024における開発チームの取り組み と 2025への展望
yumnumm
0
96
Dart WebAssemblyを使ったWeb API on Cloudflare Workers
yumnumm
0
130
Apple Walletでパスを作るお話
yumnumm
0
250
私がやってきたアウトプット集
yumnumm
0
200
俺/私のこだわりデスク大大大自慢LT大会 (LTFes #12)
yumnumm
0
140
仕事以外で作成したプロダクトの自慢大会
yumnumm
0
190
Other Decks in Programming
See All in Programming
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.8k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
410
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
350k
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
1
320
Performance Engineering for Everyone
elenatanasoiu
0
220
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
120
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.5k
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
300
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.4k
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
610
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
220
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Practical Orchestrator
shlominoach
191
11k
Technical Leadership for Architectural Decision Making
baasie
3
420
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
How to train your dragon (web standard)
notwaldorf
97
6.7k
A Tale of Four Properties
chriscoyier
163
24k
How STYLIGHT went responsive
nonsquared
100
6.2k
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