FirebaseでSendGridを利用する

記事
IT・テクノロジー

FirebaseでSendGridを利用する

SendGridというサービスをご存じですか? SendGridはE-Mailを配信するためのサービスです。メルマガやニュースレターのように、登録したユーザーにメッセージを一括して配信したりすることができます。また、配信の日時を予め設定して配信したりする事もできます。
さらに、配送したメッセージのトラッキングなどの機能を提供しています。メッセージが届いたか、メッセージが開封されたかなどのイベントを追跡してマーケティングなどに役立てることもできます。

SendGridのサービスの利用方法

SendGrid自体も、Webサイトを提供していて、Webサイトから様々な設定やメッセージの配信が可能です。従って、特にプログラミングをしなくてもサービスを利用することができます。
サービスは無料から利用可能です。1日あたり100通までのE-Mailの発想は無料プランで利用できます。(アメリカでSendGridが提供する無料プランの場合)
日本では、いくつかの代理店がSendGridのサービスを提供しています。構造計画研究所の提供するプランでは、月に12,000通までのE-Mailが無料となっています。(2020年11月現在)

SendGridのサービスの仕組み

SendGridのサービスは既存のE-Mailアドレスを使ってメッセージを配信するサービスです。SendGridがE-Mailアドレスを提供するわけではなく、すでに取得しているE-Mailアドレスを使って、SendGridの配信システムを使ってE-Mailを送るサービスです。つまり、元々のE-Mailアドレスを配信しているメールサーバーとは別のシステムを使ってメールを発送するという事になります。
従って、送信に利用するメールアドレスは事前に確認する必要があります。個別のE-Mailアドレスを確認する方法と、所有しているドメインを登録・確認する方法があります。
そのうえで、SendGridが提供するAPIを用いてメッセージを送信したり、送信先の登録をしたりするサービスを利用することができます。なお、構造計画研究所経由でSendGridの機能を利用する場合、サポートされているAPIが若干異なります。(構造計画研究所のAPIドキュメント)主な違いは、マーケティング機能で、アメリカのSendGridを利用する場合は、「New Marketing Campaigns API」を利用しているのに対して、構造計画研究所経由で利用する場合は「Legacy Marketing Campaigns API」になっています。(2020年11月現在) 機能はほぼ同じような物をサポートしていますが、プログラミングをする場合は若干異なるインターフェースになっているので注意が必要です。

SendGridの機能をWebアプリやWebサービスに取り込む

単にSendGridの機能を利用するだけの場合は、SendGridの提供するWebサイトから利用することが可能です。しかし、サポートする機能のほとんどを、公開されているAPIから利用できるために、WebアプリやWebサービスに組み込んで利用することが可能です。
特にメッセージの送信にSMTPを使わないでも簡単に送信できるので利用すると便利です。

WebアプリやWebサービスから利用する場合バックエンド処理が必要!

SendGridの機能をWebアプリやWebサービスから利用する場合バックエンド(サーバー側)の処理が必要になります。これは、APIキー(秘密鍵:Secret key)がSendGridのサービスとのやり取りに必要になるためです。
Firebaseを利用する場合、Firebaseのファンクション(functions)を利用すれば簡単にWebアプリやWebサービスに組み込みことが可能です。
バックエンドでは、expressなどのサーバー側のフレームワークを使って、フロントエンドとバックエンドのカスタムAPIを決めてやり取りをする仕組みを実装するだけです。
例えば、メッセージを送る場合は、二段階の処理になります。
フロントエンドで送信するメッセージを作成してバックエンドにリクエスト(カスタムAPIを利用)
バックエンドでは受け取ったメッセージをSendGridに送信(SendGridのAPIを利用)
SendGrid側ではバックエンドが送信したメッセージを処理して実際に送付先に送信する処理をすることになります。

お問合せフォームでの利用

シリコンバレースーパーウエアのWebサイトではSendGridのサービスを利用したお問合せフォームを実装しています。お問い合わせのやり取りの方法としては、Webサイト内でメッセージを交換する方法があります。
例えば、Firebaseのアカウントを作成してもらって、メッセージをFirebaseのデータベースに保存する方法です。この機能を使えば、Webサイト内でメッセージをやり取りすることが可能です。この方法を使ったお問合せフォームに関してはすでに記事を書いた通りです。(Firebaseのデータベースで作る簡単お問合せフォームとFirebaseとReactで作るお問合せ管理をご覧ください。)
これをSendGridの機能を使って実装した例もすでに記事で書いています。 データベースで保存する代わりに、お問い合わせのメッセージそのものを、SendGrid経由でE-Mailで送ってしまいます。
この方法で実装した場合、管理用のアプリが不要になります。管理はE-Mailで行えばよいので必要ありません。また、やり取りもE-Mailで行うことができるので、お問合せを定期的にチェックしなくてもE-Mailをチェックするだけで済ませることができるので便利です。返信もそのままE-Mailで行うことが可能です。
さらに、返信もSendGridを利用して行えば、回答をお問合せをした利用者が開封したかも追跡することも可能です。(シリコンバレースーパーウエアのサイトでは行っていません。)

メルマガやニュースレターの登録も

また、Webサイトよりフォームを作成して、メルマガやニュースレターの登録もサイトのサービスに組み込むことができます。さらに、プログラミングを活用すれば、ステップメールやシナリオメールといった複数のメッセージを決められた順序で配信することも可能になります。

Firebaseのバックエンドは中継ポイントに

バックエンドのサービスの役割は、SendGridのサービスとの仲介役になります。
フロントエンドからのリクエストをSendGridのサーバーに転送する役割を実装します。 基本的なデータは、SendGridのAPIに準拠する形で実装すれば、バックエンドの実装は、受け取ったデータをSendGridのAPIに置き換えて転送するだけなので初心者でも簡単に実装可能です。
フロントエンドのレスポンスもSendGridからのレスポンスを転送するという形の場合はとてもシンプルな実装になります。
Firebaseを利用する場合より使いやすいサービスが実現可能です!
SendGridからメッセージの配布先のリストなどを取得する場合、バックエンドがSendGridのサーバーにリクエストを送って、レスポンスを待つ必要があります。この場合、フロントエンドはさらに、バックエンドからのレスポンスが必要になるため、さらに待ち時間は長くなります。
一方でFirebaseのデータベースは、高速でデータにアクセスできます。そこで、SendGridの情報の一部をFirebaseのデータベースで保持して、データはFirebaseから読むようにすれば、フロントエンドはより高速でデータを得ることも可能になります。
ちょっとした工夫ですが、利用者の待ち時間は大幅に削減可能です。つまり、Firebaseの他の機能と組み合わせることで、より良いユーザー体験を提供できることになります。

Firebase Cloud Firestoreの「onSnapshot()」を有効活用

Firebase Cloud Firestoreでは、onSnapshot()というデータベース更新のイベントを監視する機能もあります。この機能はデータベースのデータが更新されると自動的にデータを再読み込みすることも可能になるので、Webブラウザのデータを常に最新の状態にすることができます。 気を付けて利用しないと、Firebaseのアクセス数を必要以上に増やす事もあるので注意が必要です。しかし、WebアプリやWebサービス立ち上げ時に、onSnapshot()を設定しておけば、後はデータを更新した際も、プログラムで再読み込みをしなくても、自動で更新することが可能です。また、別の利用者がデータを更新した際も最新のデータに更新することが可能になります。
実際に、Firebaseのデータベースを使用しないでSendGridと直接やり取りした場合より、Firebase Cloud Firestoreを介してデータにアクセスするようにした方がより高速で待ち時間の短いデータの取得が可能になりました。

メッセージの追跡もFirebaseのバックエンドでデータ収集できます!

SendGridでは、メッセージの送信状況や開封状況、クリックなどのイベントを追跡する機能も提供しています。SendGridのWebサイトからも利用できますが、WebHookの設定をすると、任意のサーバーにメッセージのイベント情報を送ることができます。
このイベントをFirebaseのバックエンドで受け取ることができれば、送信したメッセージの追跡情報もFirebaseのデータベースを利用して行うことができます。

まとめ

FirebaseとSendGridを組み合わせて利用すると、「メッセージセンタ」のようなWebサービスやWebアプリが簡単に実装可能です。単にメッセージ(E-Mail)を送信するだけではなく、送信したE-Mailがどのように扱われているかを追跡することができます。
こうした、より「インテリジェンスなメッセージ」の利用は、ビジネス、特にマーケティングを行う際には強力な武器になります。こうした、サービスをすべて自分自身で実装するのは簡単ではありません。FirebaseやSendGridという既存のサービスを組み合わせて利用すると、より効率的に高品質のサービスを短期間で提供することも可能になります。 しかも、利用量が少ない場合は、「無料」で始められるのも大きな魅力です。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す