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
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
APNsからLive Activityを開始する話
yumnumm
0
170
FlutterKaigi 2025 公式アプリ&WebサイトのCDについて
yumnumm
0
160
FlutterKaigi 2025 システム裏側
yumnumm
0
2.2k
Terraform+cloud-initで自宅サーバのLXDをIaCするお話
yumnumm
2
270
FlutterKaigi 2024における開発チームの取り組み と 2025への展望
yumnumm
0
120
Dart WebAssemblyを使ったWeb API on Cloudflare Workers
yumnumm
0
150
Apple Walletでパスを作るお話
yumnumm
0
280
私がやってきたアウトプット集
yumnumm
0
230
俺/私のこだわりデスク大大大自慢LT大会 (LTFes #12)
yumnumm
0
170
Other Decks in Programming
See All in Programming
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
130
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
Are APIs Still Relevant in the AI Era?
soyuka
0
460
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
730
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
16k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
22
22k
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
370
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Unsuck your backbone
ammeep
672
58k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
620
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
260
New Earth Scene 8
popppiees
4
2.7k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
We Have a Design System, Now What?
morganepeng
55
8.4k
Documentation Writing (for coders)
carmenintech
77
5.6k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
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