Supabaseとは06:社内備品管理アプリに自動メール送信機能追加!Edge Function機能も使いこなそう。

supabaseの使い方

Supabase(スーパーベース・スパベース)の使い方6回目となります。

今回はこれまで作成してきたWebアプリに、自動メール送信機能を搭載します。

ここで、Edge Function(エッジファンクションという機能を使います。

Edge Function使うと、またできることが色々広がるんだよね~

くまみ
くまみ

あら、なにそれ?教えて!

なお前回までの記事を見ていない方は、まずはこちらをチェックしておいてくださいね。

SupabaseのEdge Functionとは

SupabaseのEdge Functionとは、AWSのLambdaと同じようなサーバーレス関数です。

フロントエンド(React等)だけでは難しい処理、例えば「外部のAPIを呼ぶ」「画像をリサイズしてから保存」「定期的に自動処理を実行」などサーバー側で実行できます。

Laravelユーザーの皆様なら、Laravelのサーバーサイド(バックエンド側)処理を実装できると考えると分かりやすいかもしれません。

ChatGPTと会話する機能を埋め込むとか、色々できるよ。

くまみ
くまみ

あら、夢広がるわー

今回は、前回までで作成した社内備品管理システムに、「新たな備品登録時に管理者にメール送信する」機能を搭載してみましょう。

くまみ
くまみ

自動メール送信機能って、実用的ね。

とりあえず、ここから試してみよう。

SupabaseのEdge Functionを試してみよう

まずは簡単にテストでEdge Functionを使ってみましょう。

Supabaseプロジェクトにログインします。サイドバーメニューから「Edge Function」を選択します。

「Deploy a new function」をクリック。そこから、一番上の「Via Editor」を選びます。

*Via Editorを使うと、Supabase上でコードを書けます。その下の「Via CLI」を使うと、ローカル環境で開発できます(Via CLIは今回は割愛します)。

コードを書く画面になります。Templateをクリックすると、Templateコードをみれます。

とりあえずそのまま、適当な名前をつけ、右下の「Deploy function」クリックします。

右上の「Test」をクリックすると、その場でテストできます。

デフォルトのコードは、単に「Hello Functions」と表示されるだけのものです。

かなりシンプルだけど、一応動かす実験ができるよ。

くまみ
くまみ

テストが簡単にできるのは嬉しいわね。

社内備品管理アプリに自動メール送信機能追加

ではここからはいよいよ、社内備品管理アプリに自動メール送信機能を搭載します。

Supabase側の設定

再びSupabase/Edge Functionsより、「Deploy a new function」をクリックし、「Via Editor」を選択します。

次のようにコードをいれます。[email-notification]という名前で保存します。

【コード内容】

コードの意味は次の通りです。

  • 環境変数からResendのAPIキーと送信先・送信元メールアドレスを取得
  • CORS設定でブラウザからのアクセスを許可
  • リクエストのJSONから備品情報(備品名、個数、登録者)を受け取る
  • Resend APIを使ってHTMLメールを送信
  • 送信結果をJSON形式で返す

※ 今回はテスト用なので、CORS設定を "*"(全許可)にしています。本番環境では特定のドメインのみ許可するよう変更してください。

RESENDへユーザー登録

上記コードでは、3つの変数を使っています。

それぞれ登録します。その前に、今回の実験では、「RESEND」というサービスを使ってメールの送受信を行います。あらかじめRESENDでユーザー登録を行っておきましょう。

登録後、最初に表示される画面で「Add an API Key」ボタンがでてきます。ボタンをクリックしてAPIキーをコピペします。

Supabaseへ変数の登録

SupabaseのEdge Functionsメニューに戻ります。Secretsメニューを選択します。

3つの変数を登録します。

  • RESEND_API_KEY : RESENDでコピーしたAPIキー
  • ADMIN_EMAIL : 今回はRESEND登録用に使ったメールアドレス
  • FROM_EMAIL : onboarding@resend.dev

*手軽にテストが行えるよう、FROM欄には、RESENDのテスト用アドレスを使用します。こちらは、ドメイン未登録時の開発用として利用できます。

Webアプリ側に手を加える

Webアプリ側にも手を加える必要があります。備品登録時の処理に、下記のようなコードを加えます。

今回は「email-notification」という名前のEdge Functionを動かすため、上記のようにしています。

Edge Functionに渡すデータ(body)には、備品名(equipmentName)、個数(equipmentNumber)、登録者(registeredBy)の3つを指定しています。

namenumbersession.user.email といった部分は、お使いのアプリの変数名に合わせて変更してください。

くまみ
くまみ

このままのコードで動くかしら。

このあたりは、生成AIに頼むと、お手元のWebアプリに最適なコードを入れてくれると思うよ。

テストしてみる

実際に備品を登録します。その後、Resendをチェックしてみましょう。Resendにログイン/Logsから、送ったメールの状況を確認できます。

無事メールを送信できた場合には、Statusが200となっています。エラーになっている場合には、該当行をクリックすると、エラーの原因がつきとめられます。

受信したメールは、ResendのEmailsでも確認できます。また、ADMIN_EMAILに指定したメールアドレス(例えばGmailアドレスを指定した場合は、そのGmailの受信トレイ)でも実際に届いたメールを確認できます。

さいごに

Edge Functionを使うと、Webアプリにサーバーサイド処理を追加できることをご紹介しました。メール送信以外にも、画像処理やAPI連携など、様々な用途に応用できます。

くまみ
くまみ

やっぱり夢広がるわー。ただ、難易度は上がるわね。

確かに。まずは必要な機能をひとつずつ実装していこう♪

Supabase講座、また時々更新したいと思うので、ご興味あれば見てくださいね。

 

 

supabaseの使い方 生成AI関連

ご相談受付

お問い合わせ

生成AIを使った開発の研修・各種ご相談承っています。お気軽にお問い合わせください。

詳細を見てみる

ご相談受付

お問い合わせ

生成AIを使った開発の研修・各種ご相談承っています。お気軽にお問い合わせください。

詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪

Laravelの使い方を分かりやすく解説した書籍を出版しました。 ご好評につき、最新版に対応した改訂版を2025年7月に発売
書店やAmazon等のオンラインショップにて販売中です。 詳しくは下記ボタンをクリック

書籍の詳細を見てみる

Laravelの本書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。ご好評につき最新版対応の改訂版発売。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる
Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました