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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ryotaro Onoue
November 13, 2025
Programming
0
1.8k
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
78
Terraform+cloud-initで自宅サーバのLXDをIaCするお話
yumnumm
2
180
FlutterKaigi 2024における開発チームの取り組み と 2025への展望
yumnumm
0
74
Dart WebAssemblyを使ったWeb API on Cloudflare Workers
yumnumm
0
100
Apple Walletでパスを作るお話
yumnumm
0
220
私がやってきたアウトプット集
yumnumm
0
180
俺/私のこだわりデスク大大大自慢LT大会 (LTFes #12)
yumnumm
0
120
仕事以外で作成したプロダクトの自慢大会
yumnumm
0
150
Cloudflare Workers でプリントシール機の画像共有システムを制作したお話 @serverlessF
yumnumm
0
280
Other Decks in Programming
See All in Programming
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
2
180
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
120
TROCCOで実現するkintone+BigQueryによるオペレーション改善
ssxota
0
120
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
180
CSC307 Lecture 11
javiergs
PRO
0
590
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.4k
朝日新聞のデジタル版を支えるGoバックエンド ー価値ある情報をいち早く確実にお届けするために
junkiishida
1
350
AI活用のコスパを最大化する方法
ochtum
0
120
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
180
オブザーバビリティ駆動開発って実際どうなの?
yohfee
3
680
猫の手も借りたい!ので AIエージェント猫を作って社内に放した話 Claude Code × Container Lambda の Slack Bot "DevNeko"
naramomi7
0
240
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
280
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
93
Building AI with AI
inesmontani
PRO
1
760
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
65
The Curious Case for Waylosing
cassininazir
0
260
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
210
Utilizing Notion as your number one productivity tool
mfonobong
4
240
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
140
The Cult of Friendly URLs
andyhume
79
6.8k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
970
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
310
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࡞࣌ʹϓϨϏϡʔΛσϓϩΠ ...