FirebaseとSendGridで実装したメルマガサービスの管理
メルマガやニュースレターはオンラインを利用したマーケティングなどで広く使われています。 こうした、メルマガやニュースレターを配信するサービスは、FirebaseとSendGridを利用すれば比較的簡単に実装できます。
無料のメルマガ、ニュースレターの配信サービスも多数存在しますが、メッセージの追跡などを考えると、FirebaseとSendGridを使って実装する価値もあります。
こうした、WebサービスやWebアプリの場合、設定を変えたり、重要なデータの削除などの機能も必要になる場合があります。利用者が一人の場合は、そうした管理も含めて全ての操作ができるように実装すれば特別なアプリは必要ない場合がほとんどです。
しかし会社などの組織で利用する場合、複数の人がメッセージに送信にかかわることも多くなりますし、重要な設定の変更やデータの削除などの権限は管理者のみにした方が都合が良い場合も多くなります。
この記事は、メルマガのサービスで考えられる管理機能とその実現方法について解説しています。
管理の方法は?
WebアプリやWebサービスの管理の方法はいくつかあります。 一つは、WebアプリやWebサービスが稼働しているサーバーにログインして行う方法です。しかし、Firebaseを利用したWebアプリやWebサービスの場合は、直接サーバーにログインして行う管理はほとんどありません。
Firebaseを利用したWebアプリやWebサービスの場合、可能性としては
* Firebaseコンソールで管理(設定)
* Websサービス・Webアプリに管理機能を組み込む
* 専用の管理アプリを作成する
それぞれを詳しく見ていきます。
WebアプリやWebサービスの種類や内容によって必要な管理の項目も変わってくるので、この記事では特にFirebaseとSendGridを利用したメルマガ(ニュースレター)のサービスについて考えています。
* ユーザー管理
* データベースの管理
* SendGridの設定の管理
* ユーザーの管理
WebアプリやWebサービスとして、インターネットで公開されている場合は、必要以外の人がサービスにアクセスできないようにするため、利用者の認証(ログイン)などが必要になります。 メルマガ(ニュースレター)のサービスの場合、利用者が自分でサインアップ(登録)するというケースは少なく、基本は管理者が必要な人を登録して利用できるようにするのが一般的です。
ユーザーの登録が複雑になる場合は、専用の管理アプリがあった方が便利な場合もありますが、登録するユーザーがそれほど多くない場合は、Firebaseコンソールで管理するのも一つの方法です。特に、開発者自身が利用する場合は、多くの場合Firebaseコンソールで十分な場合がほとんどです。
しかし、同じFirebaseを利用した実装でも、開発者以外の人が利用する場合、専用の管理ツールがあった方が便利です。
必要な機能は:
* ユーザーの新規作成
* ユーザー情報の更新
* ユーザーの削除
* パスワードの変更
などです。
データベースの管理
データーベースの管理はFirebaseコンソールでも行えますが、実際のWebアプリやWebサービスで利用しているデータの変更は面倒な場合が多く、専用のツールを作った方が便利です。 使用しているデータに合わせた機能を、UIと一緒に実装する方が扱うデータが多くなるほど便利です。
開発中は、Firebaseコンソールでも十分何とか対応できますが、データが多くなると現実的には管理はかなり難しくなると言えます。
SendGridの設定
完全な「ソリューション」としての、WebサービスやWebアプリを目指す場合、SendGridの設定や管理もWebサービスやWebアプリ、管理ツールからできた方が便利です。
実際の設定は、SendGridの提供する管理機能(Webサイト)に行けば全ての設定や管理が可能です。しかし、余り使わない機能も多く、提供するメルマガやニュースレターのサービスに合わせて準備した方がより使いやすく価値の高いWebサービスやWebアプリになります。
開発者自身が使う場合は、必要な機能のみWebアプリ、Webサービスとして実装してSendGridのWebサイトで行える管理機能は省略する方向性もありかと思います。
カスタムの管理アプリ
カスタムの管理アプリを実装する場合は、大きく分けて2つの方法があります。
* 基本サービス(Webアプリ・Webサービス)に組み込む
* 専用の管理アプリを準備
基本サービスに組み込む場合
基本サービスに組み込む場合は、「特別な管理ユーザー」を設定します。 そのうえで、セキュリティルールで特別な管理ユーザーのみがアクセスできるデータベースや機能を設定して、管理機能を実装するというのが一般的な方法です。
一般ユーザは必要なアクセス(多くの場合は読み込みのみ)を許可するようにして、セキュリティを確保するのが重要です。
いずれにしても、管理者の特権は、ログイン(ユーザー認証)とセキュリティルールによって決められるので、パスワードがハックされたり、セキュリティルールにセキュリティホールがある場合は意図しないデータの改変の可能性は常に残ります。
専用の管理アプリを準備する場合
専用の管理アプリを準備する場合はさらに2つの方法があります。 一つは、一般のアプリとは別のURLを用意して管理専用にする方法です。 この場合は、URLを分けて、公開しないことで通常のサービスのURLと分けることで、若干セキュリティを改善できます。ただし、URLが何らかの理由で第三者に知られた場合は、基本サービスに組み込んだ場合とセキュリティ上はほぼ同じレベルになります。
インターネットに公開されている上、大幅なセキュリティの改善は難しくなります。
もう一つの方法は、管理用のPCに専用の管理アプリを入れて、このアプリによって管理する方法です。この場合は、基本的に管理用のアプリは公開されないのでセキュリティ上はインターネットで公開する場合に比べてより、強固なセキュリティを実現できます。
Firebaseを利用する場合、Firebase admin SDKが利用できるので、実際にインターネット上のサーバにログインをしなくても、管理用のPCから、Firebaseのほぼ全ての機能の管理が可能です。 SendGridにも直接アクセス可能ですので、インターネットに公開しないで管理を行うことも可能です。
まとめ
FirebaseとSendGridを利用してメルマガ(ニュースレター)のWebアプリやWebサービスを実装する場合、そのアプリの管理の方法はいくつかあります。
サービス自体に管理機能を組み込むことも可能ですが、セキュリティ上は専用の管理アプリを管理PCから起動して管理する方がよりセキュリティの高いの方法での管理が可能です。 FirebaseはFirebase admin SDKからほぼ全ての機能のアクセスが可能ですし、SendGridにも直接アクセスできるので、ほぼ全ての管理機能を専用アプリで実現可能です。
WebアプリやWebサービスを開発する場合、こうしたサービスの管理をどう行うかは大きなポイントになります。