SlideShare a Scribd company logo
Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
2022/04/27

toranoana.deno #6 



虎の穴ラボ

奥谷 一陽

Supabase Edge Functions と Netlify Edge Functions

を使ってみる

– 機能とその比較 –

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
自己紹介

奥谷 一陽

所属:虎の穴ラボ株式会社

担当:とらコインSHOPなど新規事業系の開発

興味:TypeScript、Deno

おすすめコンテンツ:

  『プラネテス』

  『暴太郎戦隊ドンブラザーズ』



Twitter:@okutann88

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
News

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
News

- Supabase とNetlify が deno deployをインフラとしたサービスを
公開








参考: https://deno.com/blog 

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
アジェンダ

- Supabase Edge Functions 触ってみる
- Netlify Edge Functions 触ってみる
- まとめ



Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Supabase Edge Functions 触ってみる

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Supabase とは?

- ‘The Open Source Firebase Alternative’ を掲げる
BasS(Backend As A Service)

- postgress データベースや、認証、ストレージなどの機能を提供し
てくれる

参考: https://supabase.com/

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Supabase Edge Functions とは?

- Supabase が提供してくれるエッジコンピューティング

- Supabase Edge Functions のインフラは、

Deno Deploy 上に構築されている



すなわち、Deno Deploy + バックエンドインフラのサービス

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
触ってみましょう

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
前提

- Supabase には、アカウントを持っているものとします

- supabase CLI は、インストール済みとします

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Function の作成

コマンドを実行して関数を作成

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
supabase/functions/first-function/index.ts 

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
デプロイ

一旦 Supabase へログイン





続けてデプロイ

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
アクセスする





test-function.ts の記述通りの結果が返ってきます

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
データベースにアクセスしてみる

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
準備

supabase の Table editor で適当なテーブルを作ります。





Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
実装













supabaseのリソースアクセスに必要な値を環境変数として

提供してくれます

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
アクセス







supabaseが提供するデータベースから情報を取得できました

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
いいところ/気がついたこと

- 用意されているリソースへのアクセスがとにかく容易

- 特定のリソースへのアクセスに関わる処理はある程度まとめた単位で
の実装が向いていそう

- バックエンドサービスとしての API 提供が目的とされているDeno
Deploy を直接使うと可能なブラウザ向けのページ生成/配信には向か
ない

- supabase functions new sub/same-function のような、サブディレクトリ
で関数を作成できない

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Netlify Edge Functions 触ってみる

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Netlify とは?

- ‘Build the future of the web’ を掲げる、

静的サイトホスティングサービスを代表とする 企業

- 静的 Web サイトホスティングサービス、

だけでなくサーバーレス実行環境を提供

参考:https://www.netlify.com/

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Netlify Edge Functions とは?

- Netlify が提供する エッジコンピューティング

- Netlify Edge Functions のインフラは、Deno Deploy 上に構築され
ている

- 現在 Beta 公開

強化されているのは、Web サイト/ページとしての要素

サーバレスWebアプリ/ページを作ることを前提とした、

より簡潔な記述の支援と機能

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
触ってみましょう

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
前提

- Netlify にアクセス済みで、サイトが作成されていること

- github もしくは、何かのリポジトリサービスと連携済みであること

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Function の作成 1

以下の構成で、ディレクトリとファイルを作成します

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Function の作成 2

関数本体 netlify/edge-functions/test-function.ts





関数とパスを関連付けする netlify.toml

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
デプロイ

github へ push を行うと、作成したNetlifyのサイトに展開されます。

こちらは、ブラウザでアクセスできます。



[デモ用のURLは後で貼ります。youtube live のタイムラインにも乗せ
てもらいます]

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
これだけです

Supabase Edge Functions では「サーバーアプリケーション」を書きました

Netlify Edge Functions では、「関数」をデフォルトエクスポートするだけです


Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
少し掘り下げ

デフォルトエクスポートする関数は、次のようにする必要があります









ポイントになるのは Context オブジェクト

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
Context オブジェクトが、Netlify Edge Functions の特徴

Contextオブジェクトには、次のものが含まれている

- cookies

- geo

- json(value)

- log(...values)

- next()

- rewrite(url)

参考
:https://docs.netlify.com/netlify-labs/experimental-features/edge-functions/
api/#netlify-specific-context-object

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
実装例 geo の利用

geo を使って、アクセス元の情報は、次のように取得できます













https://superb-khapse-e6709a.netlify.app/geo-cookies

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
実装例 geo の利用

geo を使って、アクセス元の情報は、次のように取得できます













https://superb-khapse-e6709a.netlify.app/geo-cookies

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
実装例 ルーティング

ルーティングは、次のように処理できます













Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
実装例 ルーティング

パスと、関数の関連付けは、ワイルドカードを使用します。









https://superb-khapse-e6709a.netlify.app/route/a/
https://superb-khapse-e6709a.netlify.app/route/b/
https://superb-khapse-e6709a.netlify.app/route/c/123

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
実装例 tsx/jsx

Netlify Edge Functions は、tsx/jsxを実行する対象の関数として読み
込んでくれていないようです。

ts/js で記述し、tsx/jsxを呼び出すようにする必要がありました。

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
実装例 tsx/jsx

https://main--superb-khapse-e6709a.netlify.app/tsx



Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
いいところ/気がついたところ

- cookiesや、jsonでのレスポンスなど Web API として欲しい機能が
デフォルトで導入済み

- 独自拡張として、アクセス元の取得などができる

- 関数単位での実装ができる => スコープが小さい

比較した supabase は、supabase Edge Servers といえるくらいに、最
小の関数をデプロイする思想

Copyright  (C) 2021 Toranoana Inc. All Rights Reserved.
まとめ

- Deno Deploy ベースのインフラを使った、特色の異なるサービスが公開されま
した

- Deno Deploy が単純に使われているわけではないサービスとしての特色を
持っています

- 用途がかなり異なるので、何をしたいのか?を検討が必要

- Deno Deploy 本体で十分なケースもあり得る

- Netlify Edge Functions で、NextやNuxt、SvelteKit などが、動作がすると紹介
されているので、期待してます


More Related Content

PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PPTX
Redisの特徴と活用方法について
PPTX
MLflowで学ぶMLOpsことはじめ
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PDF
ストリーム処理を支えるキューイングシステムの選び方
PDF
Dockerからcontainerdへの移行
PPTX
先駆者に学ぶ MLOpsの実際
SPAセキュリティ入門~PHP Conference Japan 2021
Redisの特徴と活用方法について
MLflowで学ぶMLOpsことはじめ
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ストリーム処理を支えるキューイングシステムの選び方
Dockerからcontainerdへの移行
先駆者に学ぶ MLOpsの実際

What's hot (20)

PDF
TLS, HTTP/2演習
PDF
イミュータブルデータモデルの極意
PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
PPTX
世界一わかりやすいClean Architecture
PPTX
Dockerからcontainerdへの移行
PDF
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
PPTX
本当は恐ろしい分散システムの話
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
PDF
Oss貢献超入門
PDF
詳説データベース輪読会: 分散合意その2
PDF
Docker Compose 徹底解説
PDF
Pythonによる黒魔術入門
PDF
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
暗号技術の実装と数学
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
PDF
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
TLS, HTTP/2演習
イミュータブルデータモデルの極意
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
世界一わかりやすいClean Architecture
Dockerからcontainerdへの移行
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
本当は恐ろしい分散システムの話
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
Oss貢献超入門
詳説データベース輪読会: 分散合意その2
Docker Compose 徹底解説
Pythonによる黒魔術入門
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
コンテナ未経験新人が学ぶコンテナ技術入門
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
暗号技術の実装と数学
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
Ad

Similar to Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 – (20)

PDF
Deno で始めるフロントエンド
PDF
Deno 向け WEB 開発用のツールを作ったので 紹介します
PDF
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
PDF
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
PDF
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
PDF
○○ as Code(LL Diver)
PDF
AWS Proton を使ってみた
PPTX
Dangerでpull requestレビューの指摘事項を減らす
PPTX
革新的ブラウザゲームを支えるプラットフォーム技術
PDF
Unity開発で週イチ呑み会を支える技術
PPTX
IIJGIO x ビヨンドのオススメポイント
PDF
インフラ刷新プロジェクト「Neco」が目指す最高のクラウドとは
PDF
yui-frameworks cloundservice-2010-06-13
PDF
React + Amplifyで アプリ開発
PPTX
Riot.jsを用いたweb開発 takusuta tech conf #1
PPTX
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
PDF
【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる
PDF
チラシルiOSでの広告枠開発
PDF
Amplify Studioを使ってみた
PPTX
DeNA private cloudのその後 #denatechcon
Deno で始めるフロントエンド
Deno 向け WEB 開発用のツールを作ったので 紹介します
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
○○ as Code(LL Diver)
AWS Proton を使ってみた
Dangerでpull requestレビューの指摘事項を減らす
革新的ブラウザゲームを支えるプラットフォーム技術
Unity開発で週イチ呑み会を支える技術
IIJGIO x ビヨンドのオススメポイント
インフラ刷新プロジェクト「Neco」が目指す最高のクラウドとは
yui-frameworks cloundservice-2010-06-13
React + Amplifyで アプリ開発
Riot.jsを用いたweb開発 takusuta tech conf #1
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる
チラシルiOSでの広告枠開発
Amplify Studioを使ってみた
DeNA private cloudのその後 #denatechcon
Ad

More from 虎の穴 開発室 (20)

PDF
FizzBuzzで学ぶJavaの進化
PDF
Railsのデバッグ どうやるかを改めて確認する
PDF
虎の穴ラボ エンジニア採用説明資料 .pdf
PDF
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
PDF
toranoana.deno #6 アジェンダ 採用説明
PDF
GCPの画像認識APIの紹介
PDF
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
PDF
GitHub APIとfreshで遊ぼう
PDF
通販開発部の西田さん「通販開発マネジメントの5ルール」
PDF
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
PDF
セキュリティを強化しよう!CloudArmorの機能解説
PDF
いいテスト会 (スプリントレビュー) をやろう!
PDF
【Saitama.js】Denoのすすめ
PDF
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
PDF
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
PDF
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
PDF
【20220120 toranoana.deno#4】denoでffiの続き
PDF
虎の穴ラボ エンジニア採用説明資料
PDF
虎の穴ラボにおけるリモートワークの働き方
PDF
【20211202_toranoana.deno#3】denoでFFI
FizzBuzzで学ぶJavaの進化
Railsのデバッグ どうやるかを改めて確認する
虎の穴ラボ エンジニア採用説明資料 .pdf
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
toranoana.deno #6 アジェンダ 採用説明
GCPの画像認識APIの紹介
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
GitHub APIとfreshで遊ぼう
通販開発部の西田さん「通販開発マネジメントの5ルール」
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
セキュリティを強化しよう!CloudArmorの機能解説
いいテスト会 (スプリントレビュー) をやろう!
【Saitama.js】Denoのすすめ
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
【20220120 toranoana.deno#4】denoでffiの続き
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボにおけるリモートワークの働き方
【20211202_toranoana.deno#3】denoでFFI

Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –

  • 1. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 2022/04/27
 toranoana.deno #6 
 
 虎の穴ラボ
 奥谷 一陽
 Supabase Edge Functions と Netlify Edge Functions
 を使ってみる
 – 機能とその比較 –

  • 2. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 自己紹介
 奥谷 一陽
 所属:虎の穴ラボ株式会社
 担当:とらコインSHOPなど新規事業系の開発
 興味:TypeScript、Deno
 おすすめコンテンツ:
   『プラネテス』
   『暴太郎戦隊ドンブラザーズ』
 
 Twitter:@okutann88

  • 3. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. News

  • 4. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. News
 - Supabase とNetlify が deno deployをインフラとしたサービスを 公開 
 
 
 
 参考: https://deno.com/blog 

  • 5. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. アジェンダ
 - Supabase Edge Functions 触ってみる - Netlify Edge Functions 触ってみる - まとめ
 

  • 6. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Supabase Edge Functions 触ってみる

  • 7. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Supabase とは?
 - ‘The Open Source Firebase Alternative’ を掲げる BasS(Backend As A Service)
 - postgress データベースや、認証、ストレージなどの機能を提供し てくれる
 参考: https://supabase.com/

  • 8. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Supabase Edge Functions とは?
 - Supabase が提供してくれるエッジコンピューティング
 - Supabase Edge Functions のインフラは、
 Deno Deploy 上に構築されている
 
 すなわち、Deno Deploy + バックエンドインフラのサービス

  • 9. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 触ってみましょう

  • 10. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 前提
 - Supabase には、アカウントを持っているものとします
 - supabase CLI は、インストール済みとします

  • 11. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Function の作成
 コマンドを実行して関数を作成

  • 12. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. supabase/functions/first-function/index.ts 

  • 13. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. デプロイ
 一旦 Supabase へログイン
 
 
 続けてデプロイ

  • 14. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. アクセスする
 
 
 test-function.ts の記述通りの結果が返ってきます

  • 15. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. データベースにアクセスしてみる

  • 16. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 準備
 supabase の Table editor で適当なテーブルを作ります。
 
 

  • 17. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 実装
 
 
 
 
 
 
 supabaseのリソースアクセスに必要な値を環境変数として
 提供してくれます

  • 18. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. アクセス
 
 
 
 supabaseが提供するデータベースから情報を取得できました

  • 19. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. いいところ/気がついたこと
 - 用意されているリソースへのアクセスがとにかく容易
 - 特定のリソースへのアクセスに関わる処理はある程度まとめた単位で の実装が向いていそう
 - バックエンドサービスとしての API 提供が目的とされているDeno Deploy を直接使うと可能なブラウザ向けのページ生成/配信には向か ない
 - supabase functions new sub/same-function のような、サブディレクトリ で関数を作成できない

  • 20. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Netlify Edge Functions 触ってみる

  • 21. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Netlify とは?
 - ‘Build the future of the web’ を掲げる、
 静的サイトホスティングサービスを代表とする 企業
 - 静的 Web サイトホスティングサービス、
 だけでなくサーバーレス実行環境を提供
 参考:https://www.netlify.com/

  • 22. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Netlify Edge Functions とは?
 - Netlify が提供する エッジコンピューティング
 - Netlify Edge Functions のインフラは、Deno Deploy 上に構築され ている
 - 現在 Beta 公開
 強化されているのは、Web サイト/ページとしての要素
 サーバレスWebアプリ/ページを作ることを前提とした、
 より簡潔な記述の支援と機能

  • 23. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 触ってみましょう

  • 24. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 前提
 - Netlify にアクセス済みで、サイトが作成されていること
 - github もしくは、何かのリポジトリサービスと連携済みであること

  • 25. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Function の作成 1
 以下の構成で、ディレクトリとファイルを作成します

  • 26. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Function の作成 2
 関数本体 netlify/edge-functions/test-function.ts
 
 
 関数とパスを関連付けする netlify.toml

  • 27. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. デプロイ
 github へ push を行うと、作成したNetlifyのサイトに展開されます。
 こちらは、ブラウザでアクセスできます。
 
 [デモ用のURLは後で貼ります。youtube live のタイムラインにも乗せ てもらいます]

  • 28. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. これだけです
 Supabase Edge Functions では「サーバーアプリケーション」を書きました
 Netlify Edge Functions では、「関数」をデフォルトエクスポートするだけです 

  • 29. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 少し掘り下げ
 デフォルトエクスポートする関数は、次のようにする必要があります
 
 
 
 
 ポイントになるのは Context オブジェクト

  • 30. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. Context オブジェクトが、Netlify Edge Functions の特徴
 Contextオブジェクトには、次のものが含まれている
 - cookies
 - geo
 - json(value)
 - log(...values)
 - next()
 - rewrite(url)
 参考 :https://docs.netlify.com/netlify-labs/experimental-features/edge-functions/ api/#netlify-specific-context-object

  • 31. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 実装例 geo の利用
 geo を使って、アクセス元の情報は、次のように取得できます
 
 
 
 
 
 
 https://superb-khapse-e6709a.netlify.app/geo-cookies

  • 32. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 実装例 geo の利用
 geo を使って、アクセス元の情報は、次のように取得できます
 
 
 
 
 
 
 https://superb-khapse-e6709a.netlify.app/geo-cookies

  • 33. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 実装例 ルーティング
 ルーティングは、次のように処理できます
 
 
 
 
 
 

  • 34. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 実装例 ルーティング
 パスと、関数の関連付けは、ワイルドカードを使用します。
 
 
 
 
 https://superb-khapse-e6709a.netlify.app/route/a/ https://superb-khapse-e6709a.netlify.app/route/b/ https://superb-khapse-e6709a.netlify.app/route/c/123

  • 35. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 実装例 tsx/jsx
 Netlify Edge Functions は、tsx/jsxを実行する対象の関数として読み 込んでくれていないようです。
 ts/js で記述し、tsx/jsxを呼び出すようにする必要がありました。

  • 36. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. 実装例 tsx/jsx
 https://main--superb-khapse-e6709a.netlify.app/tsx
 

  • 37. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. いいところ/気がついたところ
 - cookiesや、jsonでのレスポンスなど Web API として欲しい機能が デフォルトで導入済み
 - 独自拡張として、アクセス元の取得などができる
 - 関数単位での実装ができる => スコープが小さい
 比較した supabase は、supabase Edge Servers といえるくらいに、最 小の関数をデプロイする思想

  • 38. Copyright  (C) 2021 Toranoana Inc. All Rights Reserved. まとめ
 - Deno Deploy ベースのインフラを使った、特色の異なるサービスが公開されま した
 - Deno Deploy が単純に使われているわけではないサービスとしての特色を 持っています
 - 用途がかなり異なるので、何をしたいのか?を検討が必要
 - Deno Deploy 本体で十分なケースもあり得る
 - Netlify Edge Functions で、NextやNuxt、SvelteKit などが、動作がすると紹介 されているので、期待してます