Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dart WebAssemblyを使ったWeb API on Cloudflare Workers

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Dart WebAssemblyを使ったWeb API on Cloudflare Workers

Avatar for Ryotaro Onoue

Ryotaro Onoue

April 02, 2025

More Decks by Ryotaro Onoue

Other Decks in Programming

Transcript

  1. 0. whoami  - ඌ্ ྒྷଠ࿕ (͓ͷ͏͑ Γΐ͏ͨΖ͏) - גࣜձࣾ

    ΏΊΈ 2023೥৽ଔ - Flutter Ϧʔυ(ϚΠελʔΤϯδχΞ) - FlutterKaigi - 2023: ొஃ & ελοϑ(WebαΠτνʔϜ) - 2024: ελοϑ (WebαΠτϦʔμʔ & ν έοτγεςϜ) - 2025: ελοϑ (ΠϯϑϥνʔϜϦʔμʔ)
  2. 0. whoami  - EQMonitor ͱ͍͏஍਒ؔ࿈ͷΞϓϦ έʔγϣϯΛݸਓ։ൃ͍ͯ͠·͢ - Flutter੡ -

    Φʔϓϯιʔε - https: / / github.com/YumNumm/ EQMonitor - DB͸Supabase CloudΛ࢖༻த - API(BFF)ͱͯ͠Cloudflare WorkersΛڬΜͰ͍·͢ - (࠷ۙߋ৽ΛαϘ͍ͬͯΔ) - (4݄தʹΞοϓσʔτΛެ։͍ͨ͠)
  3.  ࠓ೔ͷ͓͠ͳ͕͖ 1.[લ൒] Cloudflare ͱ Dart Wasmʹ͍ͭͯ 2.σϞϓϩάϥϜͷ֓ཁ + ྲྀΕʹ͍ͭͯ

    3.ʮDartΛCloudflare WorkersͰಈ͔͢ʯͷ᠘ 4.[ޙ൒] ϥΠϒσϞ 5.·ͱΊ
  4. αʔόϨεͷ࣮ߦ؀ڥ - Cloudflare Workers  1. Cloudflareͱ͸? -αʔόϨε!? ෺ཧαʔόͳ͍ͷ!? -

    ͍͍͑ɺ͋Γ·͢ - Cloudflare͕༗͢ΔɺΤοδ࣮ߦ؀ڥͰJavaScriptΛ࣮ߦ - AWSͷLambda@Edge, GCPͷCloud Run౳ͱࣅͨίϯηϓτ - Cloudflareͷ৭ΜͳαʔϏεͱ࿈ܞ -͔͠΋ܹ҆! - Workers Free: 10ສreq/day(10msͷCPU) - Workers Paid: 1000ສreq/month free + $0.3/100ສreq - 3000ສ msͷCPU free + $0.02/100ສms CPU - > ͜͜Ͱ DartΛಈ͔ͯ͠APIΛ࡞Γ͍ͨ! DartΛಈ͔͍͕ͨ͠Ͳ͏͢Ε͹ . . ?
  5. WebAssembly  1. WASMͱ͸? - WebAssembly(Wasm) - ݴޠඇґଘ, ϙʔλϒϧ, ҆શ,

    ߴ଎ͳ Ծ૝Ϛγϯ༻όΠφϦ࣮ߦܗࣜ - C/C + + , C#, JavaScript, Go, Rust, Dart౳ͷݴޠ͔ΒίϯύΠϧՄೳ - ϓϩάϥϜ͕WasmόΠτίʔυ(Ϟδϡʔϧ)ʹίϯύΠϧ͞Εɺ༷ʑͳΞʔΩςΫνϟͷWasm RuntimeͰ࣮ߦՄೳ - Πϝʔδతʹ͸JVMɻͨͩɺWasm͸ରԠݴޠ͕ଟ͍, αϯυϘοΫε؀ڥͰ͋Δ఺ͳͲ͕ҟͳΔ - V8ΤϯδϯͰWasmΛಈ͔ͤΔ αʔόͳΒwasmtime౳ͷϥϯλΠϜ͕࢖͑Δ - Ϣʔεέʔε - Unity, Google Earth౳ͷϦονͳॲཧ͕ඞཁͳWebΞϓϦέʔγϣϯ - ϒϥ΢β্ͷಈը/Իָฤू - ΫϥεϓϥοτϑΥʔϜΞϓϦέʔγϣϯ
  6. WebAssembly  1. Dart(Flutter) ͱ Wasm - Dart - >

    Wasm͸StableαϙʔτࡁΈ - ಺෦తʹ͸JavaScriptʹґଘ͍ͯ͠ΔͨΊɺඇJS؀ڥͷ WebAssembly RuntimeͰ͸ಈ͔ͳ͍ - Ex. wasmer, wasmtime - https: / / github.com/dart-lang/sdk/issues/ 53884
  7. WebAssembly  1. Dart(Flutter) ͱ Wasm - Flutter - >

    Wasm΋ରԠࡁΈ - Wasm (GC)ඇରԠ؀ڥ༻ʹJSʹ΋ίϯύΠϧ͞Ε Δ - ͜ΕʹΑΓ Flutter WebͷύϑΥʔϚϯε͕޲্
  8. WebAssembly  1. WASMͱ͸? - WebAssembly(Wasm) - ܰྔͰ҆શͳ Ծ૝Ϛγϯ༻ͷόΠφϦ໋ྩܗࣜ -

    C/C + + , C#, JavaScript, Go, Rust, Dart౳ͷݴޠ͔ΒίϯύΠϧՄೳ - Javaͷιʔείʔυ͕JavaόΠτίʔυʹίϯύΠϧ͞Εɺ༷ʑͳΞʔΩςΫνϟͷJVM(Java Virtual Machine: JavaԾ૝Ϛγϯ)Ͱ࣮ߦͰ͖Δͷͱࣅͨײ͡ - ϓϩάϥϜ͕WasmόΠτίʔυ(Ϟδϡʔϧ)ʹίϯύΠϧ͞Εɺ༷ʑͳΞʔΩςΫνϟͷWasm RuntimeͰ࣮ߦՄೳ - ωΠςΟϒฒΈʹߴ଎ dart compile wasm [file] ͰίϯύΠϧͰ͖Δ
  9. WebAssembly  1. WASMͱ͸? - WebAssembly(Wasm) - ܰྔͰ҆શͳ Ծ૝Ϛγϯ༻ͷόΠφϦ໋ྩܗࣜ -

    C/C + + , C#, JavaScript, Go, Rust, Dart౳ͷݴޠ͔ΒίϯύΠϧՄೳ - Javaͷιʔείʔυ͕JavaόΠτίʔυʹίϯύΠϧ͞Εɺ༷ʑͳΞʔΩςΫνϟͷJVM(Java Virtual Machine: JavaԾ૝Ϛγϯ)Ͱ࣮ߦͰ͖Δͷͱࣅͨײ͡ - ϓϩάϥϜ͕WasmόΠτίʔυ(Ϟδϡʔϧ)ʹίϯύΠϧ͞Εɺ༷ʑͳΞʔΩςΫνϟͷWasm RuntimeͰ࣮ߦՄೳ - ωΠςΟϒฒΈʹߴ଎ -h Ͱ͸ग़ྗ͞Εͳ͍͕ɺ-OʹΑΔ࠷దԽϨϕϧ΋બ΂Δ -O0: ଟ͘ͷ࠷దԽΛແޮԽ -O1: σϑΥϧτͷ࠷దԽ -O2: O1ΑΓ΋ڧ͍࠷దԽ (ͨͩ͠ɺ҆શͳ࠷దԽ: minify) -O3: ҉໧తͳܕνΣοΫΛলུ (ܕΤϥʔͰ Ϋϥογϡ͢ΔՄೳੑUP) -O4: ΑΓੵۃతͳ࠷దԽ https: / / dart.dev/tools/dart-compile
  10. WebAssembly  1. WASMͱ͸? - WebAssembly(Wasm) - ܰྔͰ҆શͳ Ծ૝Ϛγϯ༻ͷόΠφϦ໋ྩܗࣜ -

    C/C + + , C#, JavaScript, Go, Rust, Dart౳ͷݴޠ͔ΒίϯύΠϧՄೳ - Javaͷιʔείʔυ͕JavaόΠτίʔυʹίϯύΠϧ͞Εɺ༷ʑͳΞʔΩςΫνϟͷJVM(Java Virtual Machine: JavaԾ૝Ϛγϯ)Ͱ࣮ߦͰ͖Δͷͱࣅͨײ͡ - ϓϩάϥϜ͕WasmόΠτίʔυ(Ϟδϡʔϧ)ʹίϯύΠϧ͞Εɺ༷ʑͳΞʔΩςΫνϟͷWasm RuntimeͰ࣮ߦՄೳ - ωΠςΟϒฒΈʹߴ଎ DartίʔυΛwasmʹίϯύΠϧ
  11. WebAssembly  1. Dart(Flutter) ͱ Wasm - Flutter - >

    Wasm΋ରԠࡁΈ - Flutter Web (WASM)Ͱ΋ಉ༷ʹWASM͕ੜ੒͞ΕɺରԠ؀ڥͰ͸ಡΈࠐ·ΕΔ
  12. ͭ͘Δ΋ͷ  2. DartΛCloudflare WorkersͰಈ͔͢ - ஍਒ཤྺΛฦ͢API - GET /earthquake/list

    - SupabaseʹΞΫηε͠ʹߦ͖ɺ݁ՌΛฦ͢ - Cloudflare Workers্Ͱಈ͔͢ - Dart WasmΛ࢖͍ɺϝΠϯͷίʔυ͸DartͰॻ͘ - Shelf RouterΛ࢖͏ - ໨త - DartΛΤοδ؀ڥͰಈ͔͢஌ݟΛಘΔ - Dart͔ΒHTTP௨৴Ͱ͖Δ͔Λௐ΂Δ (=Sub-request) - Dart WasmͰಈ͔͢ࡍͷΦʔόʔϔου(ύϑΥʔϚϯεྼԽ)Λܭଌ͢Δ
  13. ͭ͘Δ΋ͷ  2. DartΛCloudflare WorkersͰಈ͔͢ - ஍਒ཤྺΛฦ͢API - GET /v1/earthquake/list

    - SupabaseʹΞΫηε͠ʹߦ͖ɺ݁ՌΛฦ͢ - Cloudflare Workers্Ͱಈ͔͢ - Dart WasmΛ࢖͍ɺϝΠϯͷίʔυ͸DartͰॻ͘ - ໨త - DartΛΤοδ؀ڥͰಈ͔͢஌ݟΛಘΔ - Dart͔ΒHTTP௨৴Ͱ͖Δ͔Λௐ΂Δ (=Sub-request) - Dart WasmͰಈ͔͢ࡍͷΦʔόʔϔου(ύϑΥʔϚϯεྼԽ)Λܭଌ͢Δ (1) Ϣʔβ͔ΒͷϦΫΤετ͸JavaScriptͷ fetchؔ਺ʹ౉͞ΕΔ
  14. ͭ͘Δ΋ͷ  2. DartΛCloudflare WorkersͰಈ͔͢ - ஍਒ཤྺΛฦ͢API - GET /v1/earthquake/list

    - SupabaseʹΞΫηε͠ʹߦ͖ɺ݁ՌΛฦ͢ - Cloudflare Workers্Ͱಈ͔͢ - Dart WasmΛ࢖͍ɺϝΠϯͷίʔυ͸DartͰॻ͘ - ໨త - DartΛΤοδ؀ڥͰಈ͔͢஌ݟΛಘΔ - Dart͔ΒHTTP௨৴Ͱ͖Δ͔Λௐ΂Δ (=Sub-request) - Dart WasmͰಈ͔͢ࡍͷΦʔόʔϔου(ύϑΥʔϚϯεྼԽ)Λܭଌ͢Δ (2)Dart WasmΛىಈ (import mod from “build/main.wasm”;) (2)ϦΫΤετ৘ใΛ __ dart_cf_workersม਺ ʹηοτ
  15. ͭ͘Δ΋ͷ  2. DartΛCloudflare WorkersͰಈ͔͢ - ஍਒ཤྺΛฦ͢API - GET /v1/earthquake/list

    - SupabaseʹΞΫηε͠ʹߦ͖ɺ݁ՌΛฦ͢ - Cloudflare Workers্Ͱಈ͔͢ - Dart WasmΛ࢖͍ɺϝΠϯͷίʔυ͸DartͰॻ͘ - ໨త - DartΛΤοδ؀ڥͰಈ͔͢஌ݟΛಘΔ - Dart͔ΒHTTP௨৴Ͱ͖Δ͔Λௐ΂Δ (=Sub-request) - Dart WasmͰಈ͔͢ࡍͷΦʔόʔϔου(ύϑΥʔϚϯεྼԽ)Λܭଌ͢Δ (3) Dart Wasm಺ͷmainؔ਺Λ࣮ߦ
  16. ͭ͘Δ΋ͷ  2. DartΛCloudflare WorkersͰಈ͔͢ - ஍਒ཤྺΛฦ͢API - GET /v1/earthquake/list

    - SupabaseʹΞΫηε͠ʹߦ͖ɺ݁ՌΛฦ͢ - Cloudflare Workers্Ͱಈ͔͢ - Dart WasmΛ࢖͍ɺϝΠϯͷίʔυ͸DartͰॻ͘ - ໨త - DartΛΤοδ؀ڥͰಈ͔͢஌ݟΛಘΔ - Dart͔ΒHTTP௨৴Ͱ͖Δ͔Λௐ΂Δ (=Sub-request) - Dart WasmͰಈ͔͢ࡍͷΦʔόʔϔου(ύϑΥʔϚϯεྼԽ)Λܭଌ͢Δ (4) Shelf RouterͰϦΫΤετΛॲཧͯ͠ ݁ՌΛJS ʹฦ͢ + Ϣʔβʹฦ͢
  17. ᠘  2. DartΛCloudflare WorkersͰಈ͔͢ - Cloudflare Workers͔ΒଞͷAPIΛୟ࣌͘ʹ͍͔ͭ͘᠘͕͋Γ·͢ 1. package:http/http.dart

    ͷstableόʔδϣϯ͸ Cloudflare WorkersͷFetch APIʹରԠ͍ͯ͠ͳ ͍ - window.fetch ؔ਺Λୟ͍͍ͯΔ͕ɺCloudflare Workers͸ϒϥ΢βͰ͸ͳ͍ͷͰ window API͸ͳ͍
  18. ᠘  2. ʮDartΛCloudflare WorkersͰಈ͔͢ʯ ͷ᠘ - Cloudflare Workers͔ΒଞͷAPIΛୟ࣌͘ʹ͍͔ͭ͘᠘͕͋Γ·͢ 1.

    package:http/http.dart ͷstableόʔδϣϯ͸ Cloudflare WorkersͷFetch APIʹରԠ͍ͯ͠ͳ ͍ - https: / / github.com/dart-lang/http/pull/1715 Fix browser clients in workers (2025.02.14)
  19. ᠘  2. DartΛCloudflare WorkersͰಈ͔͢ - Cloudflare Workers͔ΒଞͷAPIΛୟ࣌͘ʹ͍͔ͭ͘᠘͕͋Γ·͢ 1. package:http/http.dart

    ͷstableόʔδϣϯ͸ Cloudflare WorkersͷFetch APIʹରԠ͍ͯ͠ͳ ͍ - https: / / github.com/dart-lang/http/pull/1715 Fix browser clients in workers (2025.02.14) άϩʔόϧίϯςΩετͷfetch APIΛୟ͘Α͏ʹͳͬͨ
  20. ᠘  - Cloudflare Workers͔ΒଞͷAPIΛୟ࣌͘ʹ͍͔ͭ͘᠘͕͋Γ·͢ 1. package:http/http.dart ͷstableόʔδϣϯ͸ Cloudflare WorkersͷFetch

    APIʹରԠ͍ͯ͠ͳ ͍ - https: / / github.com/dart-lang/http/pull/1715 Fix browser clients in workers (2025.02.14) 2. Cloudflare WorkersͰ͸άϩʔόϧίϯςΩετ͔Β I/Oૢ࡞(Ex. Fetch API)Λୟ͚ͳ͍ 2. ʮDartΛCloudflare WorkersͰಈ͔͢ʯ ͷ᠘
  21. ᠘  2. DartΛCloudflare WorkersͰಈ͔͢ - Cloudflare Workers͔ΒଞͷAPIΛୟ࣌͘ʹ͍͔ͭ͘᠘͕͋Γ·͢ 1. package:http/http.dart

    ͷstableόʔδϣϯ͸ Cloudflare WorkersͷFetch APIʹରԠ͍ͯ͠ͳ ͍ - https: / / github.com/dart-lang/http/pull/1715 Fix browser clients in workers (2025.02.14) 2. Cloudflare WorkersͰ͸άϩʔόϧίϯςΩετ͔Β I/Oૢ࡞(Ex. Fetch API)Λୟ͚ͳ͍ υΩϡϝϯτʹ΋ॻ͍ͯ͋Δɻ ͕ͨͬͯ͠ɺfetch APIΛάϩʔόϧίϯςΩετ͔Βݺͼग़ͤͳ͍ DartͰ͍͏ͳΒ͹ɺάϩʔόϧؔ਺͔Βݺͼग़͢ͱΤϥʔʹͳΔ https: / / developers.cloudflare.com/workers/runtime-apis/fetch/
  22. ᠘  - Cloudflare Workers͔ΒଞͷAPIΛୟ࣌͘ʹ͍͔ͭ͘᠘͕͋Γ·͢ 1. package:http/http.dart ͷstableόʔδϣϯ͸ Cloudflare WorkersͷFetch

    APIʹରԠ͍ͯ͠ͳ ͍ - https: / / github.com/dart-lang/http/pull/1715 Fix browser clients in workers (2025.02.14) 2. Cloudflare WorkersͰ͸άϩʔόϧίϯςΩετ͔Β I/Oૢ࡞(Ex. Fetch API)Λୟ͚ͳ͍ - JS Interop(DartͷJS૬ޓӡ༻ػೳ)ͰؤுΔ - Dart Wasmʹ౉͢ΦϒδΣΫτͷதʹɺϦΫΤετϋϯυϥʔ಺Ͱfetch APIΛݺͼग़ؔ͢਺Λ౉͢ 2. ʮDartΛCloudflare WorkersͰಈ͔͢ʯ ͷ᠘
  23. ᠘  2. DartΛCloudflare WorkersͰಈ͔͢ - Cloudflare Workers͔ΒଞͷAPIΛୟ࣌͘ʹ͍͔ͭ͘᠘͕͋Γ·͢ 1. package:http/http.dart

    ͷstableόʔδϣϯ͸ Cloudflare WorkersͷFetch APIʹରԠ͍ͯ͠ͳ ͍ - https: / / github.com/dart-lang/http/pull/1715 Fix browser clients in workers (2025.02.14) 2. Cloudflare WorkersͰ͸άϩʔόϧίϯςΩετ͔Β I/Oૢ࡞(Ex. Fetch API)Λୟ͚ͳ͍ - JS Interop(DartͷJS૬ޓӡ༻ػೳ)ͰؤுΔ - Dart Wasmʹ౉͢ΦϒδΣΫτͷதʹɺϦΫΤετϋϯυϥʔ಺Ͱfetch APIΛݺͼग़ؔ͢਺Λ౉͢ JS Dart ϦΫΤετϋϯυϥʔ಺ͷؔ਺ͱͯ͠ݺͼग़ͤΔΑ͏ʹͳͬͨ
  24. ᠘  - Cloudflare Workers͔ΒଞͷAPIΛୟ࣌͘ʹ͍͔ͭ͘᠘͕͋Γ·͢ 1. package:http/http.dart ͷstableόʔδϣϯ͸ Cloudflare WorkersͷFetch

    APIʹରԠ͍ͯ͠ͳ͍ - https: / / github.com/dart-lang/http/pull/1715 Fix browser clients in workers (2025.02.14) 2. Cloudflare WorkersͰ͸άϩʔόϧίϯςΩετ͔Β I/Oૢ࡞(Ex. Fetch API)Λୟ͚ͳ͍ - ਖ਼֬ʹ͸ɺಉ࣌ʹϦΫΤετΛૹΔͱΤϥʔʹͳͬͨ (͓ͦΒ͘ Dart WasmͷΠϯελϯεΛ࢖͍·Θ͠ ͍ͯΔ͔Β) - JS Interop(DartͷJS૬ޓӡ༻ػೳ)ͰؤுΔ - Dart Wasmʹ౉͢ΦϒδΣΫτͷதʹɺϦΫΤετϋϯυϥʔ಺Ͱfetch APIΛݺͼग़ؔ͢਺Λ౉͢ - > ղܾ! (ͪͳΈʹɺ2ͭ໨ͷόάʹؾ͕͍ͭͨͷ͸ ࠓ೔ՈΛग़Δ15෼લ) 2. ʮDartΛCloudflare WorkersͰಈ͔͢ʯ ͷ᠘
  25. ύϑΥʔϚϯε  2. ʮDartΛCloudflare WorkersͰಈ͔͢ʯ ͷ᠘ CPU࣌ؒ(1ϦΫΤετ͋ͨΓͷCPUαΠΫϧ࣌ؒ) ͕10ഒఔ౓ଟ͍ Cloudflare Workers͸͍͕҆

    େྔϦΫΤετΛࡹ͘ͱͳΔͱؾʹͳΔ eqapi-dart-edge (TypeScript+Dart Wasm API) EQMonitor༻ͷAPI (TypeScript API) ※ ͨͩ͠ɺࠓճͷAPIͱEQMonitor༻APIͰॲཧ͍ͯ͠Δ಺༰͕ҟͳΔͨΊ ୯७ൺֱͰ͖ͳ͍͜ͱʹ஫ҙ
  26. Dart Wasm x Cloudflare Workers  ·ͱΊ - DartΛWebAssemblyʹίϯύΠϧͰ͖ΔΑ͏ʹͳͬͨ͜ͱͰɺ༷ʑͳϓϥοτϑΥʔϜͰಈ͔ͤΔΑ͏ʹ ͳͬͨ

    - DartͷJSInteropͷ͓͔͛Ͱ Dart͔ΒJSͷࢿ࢈Λݺͼग़͢ͷ΋؆୯ - Cloudflare Workers্Ͱಈ͔͢͜ͱʹΑΓɺDartΛ࢖͍Web APIΛ࡞੒Ͱ͖ΔΑ͏ʹͳͬͨ - Dartͷطଘͷࢿ࢈Λ༗ޮ׆༻Ͱ͖Δ - ͨͩ͠ɺ dart:io ʹґଘ͢Δίʔυ͸ಈ͔ͤͳ͍ - ΞϓϦέʔγϣϯͱͷAPIܕఆٛΛڞ௨ԽͰ͖ΔͨΊ ͪΐͬͱָʹͳΔ - ͱ͸͍͑ɺ༷ʑͳน͕͋Γ ProductionͰಈ͔͢ʹ͸ෆ͕҆࢒Δ - ಛʹɺWebAssemblyΛڬΉ͜ͱʹΑΔ CPU࣌ؒ+Ϩεϙϯε࣌ؒͷ૿Ճ - DartͰॏ͍ॲཧΛ࣮ߦ͢ΔͷͰ͋Ε͹ ૉͷJavaScriptͰ࣮ߦ͢ΔΑΓ΋ߴύϑΥʔϚϯεʹͳΔ Մೳੑ͸͋Δ (Ex. ը૾ॲཧ) - > ٕज़తʹ͸݁ߏ໘ന͍ͷͰɺͥͻΈͳ͞Μ DartͰAPIΛ૊ΜͰ༡ΜͰΈ͍ͯͩ͘͞
  27. FlutterKaigi 2025  એ఻ - FlutterKaigi 2025ͷελοϑ΍ͬͯ·͢ - ΠϯϑϥνʔϜ(νέοτγεςϜɾσʔλϕʔεɾAPI)ͷϦʔμʔ΍ͬͯ·͢ -

    ࠓ೥౓ͷFlutterKaigi 2025Ͱ͸ νέοτγεςϜ౳ͷAPIΛ Dart Λ࢖͍ߏங͢Δ༧ఆͰ͢! - ৄ͍͜͠ͱ͸·ܾͩΊ͍ͯ·ͤΜ͕ɺࠓճ঺հͨ͠ Cloudflare Workers + Dart WasmΛ࢖͏͔΋Ͱ͢! - 4.26ʹژ౎ͰΠϕϯτ΍Γ·͢ - 2024ͷνέοτγεςϜ + 2025ͷల๬ʹ͍͓ͭͯ࿩͠·͢!
  28.  ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠! - ࢀߟࢿྉ - https: / / github.com/a-skua/cf_workers.dart -

    εϥΠυ಺ͷURL - ࠓճ࡞੒ͨ͠αϯϓϧϓϩάϥϜ - GitHub: https: / / github.com/YumNumm/eqapi-dart-edge - API: https: / / eqapi-dart-edge.yumnumm.workers.dev/ - ໌೔Ҏ߱ͷͲ͔͜ͷλΠϛϯάͰఀࢭ͠·͢