Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FlutterKaigi 2025 システム裏側
Search
Ryotaro Onoue
November 13, 2025
Programming
0
1.4k
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
38
Terraform+cloud-initで自宅サーバのLXDをIaCするお話
yumnumm
2
150
FlutterKaigi 2024における開発チームの取り組み と 2025への展望
yumnumm
0
59
Dart WebAssemblyを使ったWeb API on Cloudflare Workers
yumnumm
0
84
Apple Walletでパスを作るお話
yumnumm
0
200
私がやってきたアウトプット集
yumnumm
0
160
俺/私のこだわりデスク大大大自慢LT大会 (LTFes #12)
yumnumm
0
94
仕事以外で作成したプロダクトの自慢大会
yumnumm
0
120
Cloudflare Workers でプリントシール機の画像共有システムを制作したお話 @serverlessF
yumnumm
0
270
Other Decks in Programming
See All in Programming
モダンJSフレームワークのビルドプロセス 〜なぜReactは503行、Svelteは12行なのか〜
fuuki12
0
200
開発に寄りそう自動テストの実現
goyoki
1
670
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
160
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
220
connect-python: convenient protobuf RPC for Python
anuraaga
0
370
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
350
CSC509 Lecture 14
javiergs
PRO
0
220
Level up your Gemini CLI - D&D Style!
palladius
1
180
ID管理機能開発の裏側 高速にSaaS連携を実現したチームのAI活用編
atzzcokek
0
200
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
180
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
290
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
36
22k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
73
5k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
4 Signs Your Business is Dying
shpigford
186
22k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
The Invisible Side of Design
smashingmag
302
51k
Music & Morning Musume
bryan
46
7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Scaling GitHub
holman
464
140k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
86
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࡞࣌ʹϓϨϏϡʔΛσϓϩΠ ...