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
FlutterKaigi 2025 システム裏側
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ryotaro Onoue
November 13, 2025
Programming
0
1.6k
FlutterKaigi 2025 システム裏側
リポジトリはこちら:
https://github.com/FlutterKaigi/2025
前日に半分寝ながらスライドを作っていたので、文章として成立しない箇所, おかしな表現があります🙏
Ryotaro Onoue
November 13, 2025
Tweet
Share
More Decks by Ryotaro Onoue
See All by Ryotaro Onoue
FlutterKaigi 2025 公式アプリ&WebサイトのCDについて
yumnumm
0
61
Terraform+cloud-initで自宅サーバのLXDをIaCするお話
yumnumm
2
170
FlutterKaigi 2024における開発チームの取り組み と 2025への展望
yumnumm
0
68
Dart WebAssemblyを使ったWeb API on Cloudflare Workers
yumnumm
0
95
Apple Walletでパスを作るお話
yumnumm
0
210
私がやってきたアウトプット集
yumnumm
0
170
俺/私のこだわりデスク大大大自慢LT大会 (LTFes #12)
yumnumm
0
110
仕事以外で作成したプロダクトの自慢大会
yumnumm
0
140
Cloudflare Workers でプリントシール機の画像共有システムを制作したお話 @serverlessF
yumnumm
0
270
Other Decks in Programming
See All in Programming
Deno Tunnel を使ってみた話
kamekyame
0
340
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
380
Basic Architectures
denyspoltorak
0
560
CSC307 Lecture 03
javiergs
PRO
1
480
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
440
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.5k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
660
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
130
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
160
Graviton と Nitro と私
maroon1st
0
170
Oxlintはいいぞ
yug1224
4
850
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
5.6k
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
0
470
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
2.9k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
120
Paper Plane
katiecoart
PRO
0
45k
First, design no harm
axbom
PRO
2
1.1k
Statistics for Hackers
jakevdp
799
230k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
59
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
140
sira's awesome portfolio website redesign presentation
elsirapls
0
130
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.4k
The Language of Interfaces
destraynor
162
26k
Transcript
2025.11.12 FlutterKaigi 2025 γεςϜཪଆ FlutterKaigi 2025 લࡇLT
0. ࣗݾհ • ඌ্ ྒྷଠ࿕ (͓ͷ͏͑ Γΐ͏ͨΖ͏) • X:
@YumNumm (͙͙) • 2004.09.17ੜ·Ε (21ࡀ) • ਆಸݝࡏॅ --- Memo --- ɾۀͰFlutter, ϓϥΠϕʔτͰTS, Πϯϑ ϥपΓͰ༡Ϳ ɾਂ×ૣேۦಈ։ൃ ɾࣗϥοΫαʔόຽ
0. ࣗݾհ • Ԭࢁ ୡ࠸ (͓͔· ͨͭ) • X:
@blendthink • 1991.12.16ੜ·Ε (33ࡀ) • େࡕࡏॅ --- Memo --- ɾকعɾຑɾϓϩάϥϛϯά ɾ࠺ͱϚϦΦΧʔτότϧָ͠Έ ɾFlutter ͷσεΫτοϓͰϚϧνΟϯυରԠ ೖͬͨͷͰ͍ͬͺ͍σεΫτοϓΞϓϦ࡞Γ͍ͨ
γεςϜߏ mise-en-place - ڥߏங... ໘... - mise-en-place(MEEZͱൃԻ) Λར༻ͯ͠ɺ FlutterҎ֎ͷ։ൃऀπʔϧ, ݴޠΛͯ͢
ཧ - bun, flutter, node, swift, uv, terraformͳͲͳͲ https://mise.jdx.dev/
γεςϜߏ mise-en-place - ڥߏங... ໘... - mise-en-placeΛར༻ͯ͠ɺFlutterҎ ֎ͷ։ൃऀπʔϧ, ݴޠΛͯ͢ཧ -
bun, flutter, node, swift, uv, terraformͳͲͳͲ - ڥมͷઃఆ... ໘... - sopsΛར༻ͯ͠ɺ֤छڥมΛ҉߸Խ͠ ͯɺgitͰཧ - SupabaseͷDB Password, Access TokenͳͲΛཧͤ͞Δ - miseͱ࿈ܞͯ͠ɺ伴Λอ༗͍ͯ͠Δਓࣗಈ Ͱڥมʹઃఆ͞ΕΔ https://github.com/getsops/sops
- DartͱTypeScriptͷ߹ٕͤ - apps/app: ެࣜΞϓϦ (Android, iOS, macOS, Web) -
apps/website: ެࣜΣϒαΠτ (Jaspr) - bff/*: TypeScriptͷAPIͱύοέʔδ܈(BFFͱݴ͍ͭͭAPIͳͷποί·ͳ͍Ͱ΄͍͠) - packages/*: DartͷPackage - ύοέʔδཧ - Dart melos 3 + Pub Workspaces - TypeScriptBun Workspaces + Turborepo - 7ͭ΄Ͳ͋ΔAPI(ޙड़)ΛҰൃͰσϓϩΠ σΟϨΫτϦߏ
APIߏ Cloudflare Workers + ͘͞ΒΠϯλʔωοτ App Run - ڈɺͯ͢ͷAPIΛTypeScriptͰॻ͍͍ͯͨ -
ࠓ 💙Dart💙 🎯 - DartΛར༻͢Δ͜ͱͰ͜Μͳخ͍͜͠ͱ͕͋Δ - ΞϓϦͳͲͱݴޠ͕ಉ͡ͳͷͰɺܕϥΠϒϥϦ, طଘࢿ࢈Λڞ௨ԽͰ͖Δ
APIߏ Cloudflare Workers + ͘͞ΒΠϯλʔωοτ App Run - ڈɺͯ͢ͷAPIΛTypeScriptͰॻ͍͍ͯͨ -
ࠓ 💙Dart💙 🎯 - DartΛར༻͢Δ͜ͱͰ͜Μͳخ͍͜͠ͱ͕͋Δ - ΞϓϦͳͲͱݴޠ͕ಉ͡ͳͷͰɺܕϥΠϒϥϦ, طଘࢿ࢈Λڞ௨ԽͰ͖Δ - ͜͏͍͏ॴͰڳΛுͬͯʮDartͰAPI࡞ͬͯ·ͬ͢!ʯͬͯݴ͑Δ - ͨͩɺͯ͢ͷ࣮ͰDart͕༗ޮͳ༁Ͱແ͍ - طଘͷϥΠϒϥϦ͕ڧ͗͢Δ߹: Stripe APIͱͷΓऔΓ, Walletύεͷൃߦ - ར༻͢ΔαʔϏεͱͷ݉Ͷ߹͍: νέοτߪೖޙͷॲཧ(Cloudflare Workflows) - Docker imageΛ͘͞ΒΠϯλʔωοτͷApp RunʹσϓϩΠ͢Δ - Cloudflare WorkersͰϦΫΤετΛड͚औΓɺApp RunʹϓϩΩγͯ͠ॲཧ͢Δ ͪͳΈʹ... Dart WebAssemblyΛCloudflare WorkersͰಈ͔࣮͢ -> Dart VMΛCloudflare Containers(linux/amd64)Ͱಈ͔͢ -> Dart VMΛ͘͞ΒΠϯλʔωοτ App Run β/CR൛(linux/amd64)Ͱಈ͔͢ ͷΑ͏ʹɺ։ൃ్தʹߏΛେ͖͘ม͑ͨΓ͍ͯ͠·͢
APIߏ
ৄ͍ٕ͠ज़తͳɺ·Ͱʹٕज़هࣄॻ͖·͢! -> ϥΠϒσϞ
:: ࢿࡐஔ͖ ::
APIߏ - جຊతʹ΄΅ͯ͢ͷϦΫΤετɺCloudflare Workers͕ड͚Δ - ͜Ε͕࣮࣭తͳBFF - ޙड़͢Δ͕ɺDBఀࢭޙͷରࡦ -
·ͨɺ͘͞ΒͷApp RunͰো͕ى͖ͨͱ͖ʹɺ͜͜ͰΞΫηεઌΛΓସ͑ͯ͋͛Δ͜ͱՄೳ - (Cloudflare Workers͕୯Ұোʹͳ͍ͬͯΔ) APIͷྲྀΕ
APIߏ - جຊతʹ΄΅ͯ͢ͷϦΫΤετɺCloudflare Workers͕ड͚Δ - ͜Ε͕࣮࣭తͳBFF - ޙड़͢Δ͕ɺDBఀࢭޙͷରࡦ -
·ͨɺ͘͞ΒͷApp RunͰো͕ى͖ͨͱ͖ʹɺ͜͜ͰΞΫηεઌΛΓସ͑ͯ͋͛Δ͜ͱՄೳ - (Cloudflare Workers͕୯Ұোʹͳ͍ͬͯΔ) - DartͷAPI͕ϦΫΤετΛॲཧ
APIߏ - جຊతʹ΄΅ͯ͢ͷϦΫΤετɺCloudflare Workers͕ड͚Δ - ͜Ε͕࣮࣭తͳBFF - ޙड़͢Δ͕ɺDBఀࢭޙͷରࡦ -
·ͨɺ͘͞ΒͷApp RunͰো͕ى͖ͨͱ͖ʹɺ͜͜ͰΞΫηεઌΛΓସ͑ͯ͋͛Δ͜ͱՄೳ - (Cloudflare Workers͕୯Ұোʹͳ͍ͬͯΔ) - DartͷAPI͕ϦΫΤετΛॲཧ - Supabase Cloud(Postgres)ͱ௨৴͠ɺσʔλϕʔεͷॲཧΛߦ͏
APIߏ - Ұ෦ͷಛघͳϦΫΤετɺinternal-api-proxyΛ௨ͯ͡Cloudflare WorkersʹϦΫΤετΛసૹ - internal-api-proxy֎ͷΠϯλʔωοτʹ࿐ग़͍ͯ͠Δ - HTTP Header(X-API-KEY)Λར༻ͯ͠ɺBFF͔ΒͷϦΫΤετ͔ͦ͏Ͱͳ͍͔Λࣝผ
-
APIߏ - internal-api-proxyɺ Cloudflareʹଘࡏ͢Δ֤छ WorkerʹϦΫΤετΛసૹ r2-internal-api: ΦϒδΣΫτετ Ϩʔδ(R2)ͷૢ࡞Λߦ͏ stripe-internal-api:
ܾࡁURLͷ ൃߦ, ܾࡁྃޙͷWebhookड͚औΓ& ॲཧ Websocket-api: ΞϓϦ͔ΒΞΫηε ՄೳͳWebSocketΤϯυϙΠϯτɻೖ ࣌,ϓϩϑΟʔϧަ࣌ͳͲʹϖΠ ϩʔυΛૹ৴͢Δ profile-share— internal-api: ϓϩϑΟʔ ϧަͷॲཧΛ୲͏
νέοτಡΈऔΓ ಡΈऔΒΕΔଆ(ࠨ)Ͱɺೖॲཧྃޙʹ௨&ೖࡁΈදࣔʹΓସΘΔ
ϓϩϑΟʔϧަ ࠨ2ͭ(εϚϗ)͕ݸਓΞΧϯτ, PCผͷΞΧϯτ ඵޙʹө͞ΕΔ͜ͱ͕Θ͔Δɻ
None
FlutterKaigiऴྃޙ - SupabaseͷDBΛͣͬͱಈ͔ͬ͠ͺͳ ͠ʹ͢Δͷݱ࣮తͰͳ͍ - FlutterKaigi͕ऴΘͬͯམͪண͍ ͨΒDBΛࢭΊ͍ͨ -> GETܥAPIͷεφοϓγϣοτΛ ࡱͬͯɺBFFʹຒΊࠐΈͪ͠Ό͏
-> Cloudflare Workersܹ҆ͳͷ Ͱɺϥϯχϯάίετ΄΅0ͷ·· APIΛੜ͖ͤ͞ΒΕΔ (Read-only)
Terraform APIܥΛIaC - FlutterKaigi 2025ͰɺTerraformΛར༻ͯ͠ ΠϯϑϥϦιʔεΛίʔυͰཧ͠·ͨ͠(IaC) - IaC (Infrastructure as
a Code) - SupabaseͷΠϯελϯε, FirebaseͷϓϩδΣΫτ, ͘͞ΒΠϯλʔωοτͷApp RunͳͲΛ TerraformͰཧ - ͜ΕʹΑΓɺΠϯελϯεͷ্ཱͪ͛͠ͳͲΛ؆୯ʹߦ͑ΔΑ͏ʹͳͬͨ - ·ͨɺΠϯϑϥϦιʔεͷૢ࡞͕git্ʹΔͨΊɺཧ͍͢͠ - ഁյ͢Δͱ͖ terraform destroyίϚϯυͰҰൃരൃ!
CD Using GitHub Actions - FlutterKaigi 2025ͷެࣜΞϓϦ, WebαΠτͳͲ GitHub ActionsΛ௨ͯࣗ͡ಈσϓϩΠ
- [iOS, macOS] Xcode managed CertificatesΛར༻ͯ͠ɺূ໌ॻͷཧͳ͠ʹΞϓϦΛσϓϩΠ - [Android] [TODO] Google CloudͷWorkload Identity࿈ܞΛར༻ͯ͠ɺӅಗใ(αʔϏεΞΧ ϯτͷJSON, TokenͳͲ)Λઃఆ͢Δ͜ͱͳ͘ɺPlay StoreʹόΠφϦΛΞοϓϩʔυ - [Web] Cloudflare WorkersΛར༻ͯ͠ɺPR࡞࣌ʹϓϨϏϡʔΛσϓϩΠ ...