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

Dart WebAssemblyを使ったWeb API on Cloudflare Workers

Dart WebAssemblyを使ったWeb API on Cloudflare Workers

Ryotaro Onoue

April 02, 2025
Tweet

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/ - ໌೔Ҏ߱ͷͲ͔͜ͷλΠϛϯάͰఀࢭ͠·͢