Floconの構造
Flocon のサーバーを設置するには、Firebase Authentication のセットアップと、API サーバー、Web サーバーの 2 つのサーバーのセットアップが必要です。
画像では Web サーバーと API サーバーが独立していますが、実際はこれら 2 つのプログラムは 1 つのサーバー上で同時に動かすことも可能です。
サーバーのコードを 2 つにわけている理由は、サーバーの設置方法に柔軟性を持たせるためです。
Firebase
Firebaseは、Google が提供している、Web サイトの運用に役立つクラウドサービスです。アカウント管理やファイルの保存をクラウドで行ってくれます。
Flocon では Firebase の使用が必須となっていますが、Firebase は無料枠の範囲内であれば無料で利用できます。身内サーバーであれば無料枠内で運用可能だと思われます。公開サーバーなどのように比較的大勢のユーザーが利用するケースでも、無料枠内で運用できる方法を提供しています。
Flocon が Firebase を採用している理由は以下のとおりです。
- 後述する Firebase Storage サービスが使える。これにより身内サーバー程度の用途であれば、Heroku Free プラン等でも永続的にファイルを保存できるアップローダーを無料で作成できる。
- アップロードしたファイルを、1 つの部屋のみではなく全ての部屋で扱うことができる。
- (まだ実装していませんが)例えば自分の作成した部屋をすべて取得するなど、アカウントに紐付いた便利な機能が実装されやすくなる。
Firebase は複数のサービスから構成されていますが、そのうち Flocon が対応しているサービスは、Firebase Authentication と Firebase Storage の 2 つです。
Firebase サービスの詳細
Firebase Authentication(必須)
Firebase Authentication は、安全なアカウント管理機能およびログイン機能を簡単にセットアップできるサービスです。これにより、Flocon のログイン機能が実装されています。
Firebase Authentication では、アカウントのパスワードなどといった重要な機密情報は Google によって管理されるため、自鯖を設置してもそれらが漏洩するリスクが最小限になるというメリットがあります。
Flocon サーバーをセットアップするには、Firebase Authentication は必須です。
Firebase Authenticationをセットアップする方法は、チュートリアル内にあるログイン機能のセットアップのページをご覧ください。
Firebase Storage(任意)
Firebase に付属するオンラインストレージサービスです。Flocon のアップローダーの 1 つとして利用可能です。
2021 年 12 月現在で、無料枠の範囲内でも合計 5GB までのファイルの保存と 1 日あたり 1GB までのデータの送信が可能であるため、身内サーバー程度の用途であれば無料で使うことはじゅうぶん可能だと思います。
Firebase Storage は、Heroku などのようにサーバー上のデータがリセットされるサービスでもデータを永続的に保管できるため、これらにおいて大きな効果を発揮します。
ちなみに Flocon では、Firebase Storage を用いたアップローダーの他にも、API サーバーのストレージにデータを保管するアップローダー(API サーバー内蔵アップローダー)も使用可能です。片方のアップローダーだけを有効化することも、両方のアップローダーを有効化もしくは無効化することも可能です。アップローダーについての詳細はこちらのページをご覧ください。
Firebase サービスのアクセス権
プレイヤーアカウントの一覧の取得、(ログイン方法によりますが)メールアドレスの確認、削除や、Firebase Storage のファイルへの完全なアクセスなどといった行為は、Firebase アカウントの共同管理などを有効化していない限り、Firebase アカウントの作成者以外は行うことができません。そのため、Flocon 作者自身が運用するサーバーを除いて、Flocon 作者は他のサーバーのプレイヤーアカウント情報やアップロードされたファイルなどにアクセスすることは一般的には不可能ですのでご安心ください。
API サーバー (必須)
API サーバーの主な役割は、部屋データなどといった動的に変わるデータを保存、管理し、ブラウザと通信することです。
APIサーバーの設置方法については、API サーバーのページをご覧ください。
Web サーバー (必須)
Web サーバーは、HTML ファイル、JavaScript ファイル、CSS ファイルなどの静的ファイルを各ブラウザに配信します。これらには現在の部屋の状態などといった動的なデータは含まれていません。動的なデータは API サーバーから送信されます。
Webサーバーの設置方法については、Web サーバーのページをご覧ください。