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
120
FlutterKaigi 2025 システム裏側
yumnumm
0
2.1k
Terraform+cloud-initで自宅サーバのLXDをIaCするお話
yumnumm
2
240
FlutterKaigi 2024における開発チームの取り組み と 2025への展望
yumnumm
0
100
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
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.4k
初めてのKubernetes 本番運用でハマった話
oku053
0
130
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
360
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
260
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
140
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
フィードバックで育てるAI開発
kotaminato
1
120
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
0
220
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
340
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
560
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
140
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
How to make the Groovebox
asonas
2
2.3k
Un-Boring Meetings
codingconduct
0
350
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Done Done
chrislema
186
16k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
Utilizing Notion as your number one productivity tool
mfonobong
4
430
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Design in an AI World
tapps
1
260
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.8k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
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