【トップゲート主催】ゲーム業界様向けGCP活用のポイント〜Firebase / Firestore編〜

【トップゲート主催】ゲーム業界様向けGCP活用のポイント〜Firebase / Firestore編〜

GCP

投稿日:2020/08/08 | 最終更新日:2020/09/10

弊社トップゲートではGoogle Cloudのプレミアパートナーとして、Google Cloudに関する様々なセミナーを開催しています。この記事では、ゲーム業界様向けにGCPの使い方を解説した「GGG Study」の内容についてご紹介します。

GGG Studyは全6回に分けてGCPの各スキルを習得していただくための勉強会です。第6回では、Firebaseと、Firebaseプロダクトの1つであるCloud Firestoreについて解説していきます。

Firebase概要

まず、Firebaseの概要についてご紹介します。

Firebaseとは

Firebaseとは
Firebaseとは、アプリケーションの包括的な開発プラットフォームです。データベースやA/Bテスト、Push通知などのプロダクトと呼ばれるパッケージを利用し、アプリケーションに簡単に機能を追加できるのが特徴です。一部プロダクトはGCPと統合されており、シームレスに連携することが可能です。

Webアプリケーションをはじめとして、iOSやAndroid、C++、Unityといった多くの開発環境をサポートしています。

Firebaseプロダクト

プロダクト
Firebaseでは上図のようにアプリケーション開発に必要となる様々な機能をサービスとして提供しています。

例えばドキュメント指向のデータベースであるCloud Firestoreや、アプリケーションを迅速に配信するHosting、通知を送信できるCloud Messagingといったプロダクトが用意されています。

mBaaS

Firebaseは、mBaaSとして提供されています。mBaaS(mobile Backend as a Service)とはモバイル開発に必要な機能をサービスとして提供する形態です。バックエンドの構築を意識する必要はなく、アプリケーションの開発に集中することができます。また、モバイルだけでなくウェブアプリケーションやデスクトップアプリなど様々なアプリケーションの開発で活用することができます。

例えば新しいことに挑戦したいがバックエンドエンジニアを確保できない場合や、モバイルチームだけで技術検証を行いたい時などは、Firebaseの利用によりバックエンドの開発・運用負荷を低減することが可能です。

Cloud Firestore概要

また、Firebaseプロダクトの中でも非常によく利用されるCloud Firestoreについて解説します。

Cloud Firestoreとは

Cloud_Firestore
Cloud FirestoreはFirebaseプロダクトの1つで、NoSQLのドキュメントデータベースです。データベースにアクセスするためのサーバーは不要で、クライアントから直接接続することができます。

複数のデバイスによるリアルタイム同期が可能で、100万クライアントまで同時接続をすることができます。ユーザーはオフラインでも利用が可能で、次にオンラインになった時にsyncを行います。

他のFirebaseプロダクトと連携が可能で、データベース内のデータ変更をトリガーに処理を実行することもできます。

NoSQL

また、NoSQL(Not Only SQL)データベースとは、RDB以外のデータベースの総称です。様々な種類があり、その目的もバラバラです。ここではいくつかの種類をご紹介します。

Key-Value型

一意のKeyに対して何かしらのValueが存在するシンプルなものです。RedisやMemcached等が該当します。

カラム指向

行に対して任意個数のカラムを格納できるものです。Apache HBase、Apache Cassandra、BigTable等が該当します。

ドキュメント指向

JSONやXMLなどのスキーマレスな構造データを格納できるものです。MongoDB、Apache CouchDB、Amazon DynamoDB等が該当します。ここでご紹介するCloud Firestoreもこのドキュメント指向のDBです。

グラフ

グラフ構造によりデータを表現するものです。Neo4j、OrientDB等が該当します。

Cloud FirestoreのDBとしての特徴

上記の分類を踏まえた上でDBとしての特徴を解説します。Cloud Firestoreはフルマネージドなドキュメント指向データベースです。timestampやgeolocation、referenceといった、JSONよりも幅広いデータ型を利用することができます。トランザクションをサポートしており、負荷に応じて自動的にスケールを行います。

データモデル

次に、Cloud Firestoreのデータモデルについて解説します。

データの階層構造

データモデル
Firestoreのデータモデルはコレクションとドキュメントで構成されます。コレクションは複数のドキュメントを格納する箱のことです。ドキュメントは実際のデータとコレクションを持つことができ、ドキュメントの持つコレクションをサブコレクションと呼びます。これにより、データの階層化を行うことが可能です。サブコレクションを活用することで、最大100階層までネストすることができます。

利用できるデータ型

ドキュメントでは、下記のデータ型を利用することが可能です。

  • 配列
  • ブール値
  • バイト
  • 日時
  • 倍精度浮動小数点
  • 緯度経度
  • 符号付き64bit整数
  • マップ
  • Null
  • 参照
  • テキスト

クエリ

Cloud Firestoreでは簡単なクエリを実行することができます。ここではクエリの概要とその利用方法について解説します。

クエリの実行

Cloud Firestoreではドキュメントを取得する際にドキュメントのパスを直接指定する他、クエリにより取得することも可能です。SQLは利用できませんが、WHEREやORDER BYなどを関数として呼び出すことにより利用することができます。

インデックス

Cloud Firestoreでは、デフォルトで全てのフィールドに単一インデックスが張られます。これにより、全てのクエリにインデックスを使用することでクエリのパフォーマンスを向上させることが可能です。不要な場合は除外設定をすることができます。

複合インデックス
また、Cloud Firestoreでは複合インデックスを作成することが可能です。複数フィールドにまたがるクエリを実行する場合には、複合インデックスを作成することでパフォーマンスを改善することが可能です。また、単一インデックスでサポートされないクエリを実行する場合には複合インデックスを作成する必要があります。

コレクショングループクエリ

コレクショングループクエリという機能では、複数のコレクションを横断するクエリを実行することができます。この機能ではコレクション名を指定することで一致するコレクションの中を横断的に検索します。想定していないコレクションが含まれてしまう場合も多いため、設計段階からコレクションの名前付けを体系的に実施するなど、考慮が必要となります。

セキュリティ

Cloud Firestoreではクライアントからの直接アクセスが可能です。そのため、データの改竄や盗聴などから守る仕組みが必要となります。

セキュリティルール

セキュリティルール
セキュリティルールは、ユーザーに対してアクセスできる情報や可能な操作を制限する機能です。クライアントからのアクセスが想定される場合にはセキュリティルールを適切に設定し、各ユーザーは必要なデータのみ操作できる状態にしておく必要があります。パスベースでアクセスコントロールを管理することができ、指定したパスに対して許可したい動作を設定します。また、サーバーサイドからのアクセス制御を行うことはできません。

関数
条件が複雑な場合、関数を定義可能です。含められるのは1つのreturn文のみで、中間関数などは利用することができません。

テストツール

テストツール
作成したセキュリティルールは、テストツールによりチェックを行うことができます。設定のミスによりセキュリティインシデントが発生することを避けるため、適用の前にはテストツールの利用が推奨されます。テストツールでは、ルールが正しく動いており、想定とは違うパスにアクセスしていないかを確認することが可能です。

Firebase Authentication

セキュリティルールは、Firebaseのプロダクトの1つであるAuthenticationサービスと連携して利用することが可能です。Authenticationと組み合わせることにより、GoogleやTwitterの認証情報を利用した権限設定を実施することができます。

Cloud Firestoreの勘所

Cloud Firestoreを利用する上でのTipsをご紹介します。

クライアント主体のDB設計

Cloud Firestoreは、スキーマレスですが、設計が不要なわけではありません。Firestoreを始めとするNoSQLデータベースでは、RDBの設計とは大きく異なるため、RDBとして綺麗な設計を目指すのではなく、クライアントから扱いやすい設計にすることが重要です。

例えば正規化に関して言えば、RDBではデータベースを正規化し、重複を排除するように設計することが推奨されますが、Cloud Firestoreでは非正規化を行う必要があります。ドキュメントを取得する際にはデータを結合せず、一度のパスで取得できるようにすることでクエリの実行が早くなります。

Client_Side_JOIN
また、完全な非正規化が難しい場合にはクライアント側で複数のクエリを実行し、結合する方法も利用可能です。データ整合性のコストなどの観点から、全てのデータを非正規化するのは現実的ではありません。そのため、無理のない範囲でクライアント側に処理をオフロードする設計を考慮する必要があります。

連続した値の扱い

辞書順で近い距離にあるドキュメントを操作すると、処理が分散しなくなるためパフォーマンスが低下します。例えばUser 1、User 2、User3といった連続性のあるドキュメントIDを利用するような場合は注意が必要です。Firestoreでは分散を考慮した自動割り当てIDを提供しており、それを利用することで解決することができます。

また、連続性のあるタイムスタンプのようなフィールドにインデックスが張られている場合には、インデックスの除外設定を行うといった考慮が必要となります。

応用的な利用法

ここからは、Cloud Firestoreを活用した応用的な利用法についてご紹介します。

Cloud Functionsとの連携

Cloud Functionsとは、GCPのサービスの1つで、イベントトリガーで実行できるサーバーレス環境となります。Cloud Firestoreと連携することが可能で、Cloud Firestoreのイベントをトリガーとして関数を実行することができます。

例えばドキュメントの作成や変更、削除をトリガーにすることができ、集計データの作成や自動バックアップなどを実現することが可能です。

全文検索

2020年7月現在、Cloud Firestoreはドキュメント内の全文検索に未対応です。そのため、Algolia等のサードパーティー製ソリューションを利用して全文検索を行う必要があります。

オフラインでの動作

前述したとおり、Cloud Firestoreではオフラインの読み書きに対応しています。読み込みを行う場合、キャッシュが存在すれば読み出すことが可能です。また、オフラインでの書き込みはキューにプールされ、次回オンライン時に書き込みが実施されます。コンフリクト時には上書きされるため注意が必要です。オフライン時にはトランザクションを利用することはできません。

料金体系

最後に料金体系についてご紹介します。

それぞれ無料枠が設定されており、超過した分については従量課金として下記の金額が課金されます。

対象 無料枠 料金(東京リージョン)
保存データ 1 GiB $0.115 /GiB /月
ドキュメントの読み取り 50,000 /日 $0.038 /10万回
ドキュメントの書き込み 20,000 /日 $0.115 /10万回
ドキュメントの削除 20,000 /日 $0.113 /10万回
ネットワーク(下り) 10 GiB /月 $0.14 /GB 〜$0.19 /GB
(対象地域に依存)

まとめ

この記事では、Firebase及びそのプロダクトの1つであるCloud Firestoreについて解説し、その活用上の考慮点についてまとめました。Firebaseではアプリケーション開発に必要な機能をサービスとして提供しているmBaaSソリューションです。様々なプロダクトの活用によりバックエンドの開発コストを削減し、効率的にアプリケーション開発を行うことが可能です。

また、Cloud FirestoreはNoSQLのドキュメント指向データベースであり、設計にはいくつかの考慮が必要ですが、リアルタイム同期やオフラインサポートなど、モバイルアプリケーションを開発する上で重要な機能をサービスとして利用することが可能です。



弊社トップゲートでは、 GCP 、または G Suite 導入をご検討をされているお客様へ「Google Meet で無料個別相談会」を実施いたします。導入前に懸念点を解決したい方、そもそも導入した方がいいのかをお聞きしたい方はお気軽にお申し込みください!

お申込みはこちら

また、GCPを活用したトレーニングも開催しておりますので、ご興味ございましたらお気軽にお問い合わせください!

GCPトレーニングのご相談はこちら

メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
GCP、G Suite、TOPGATEの最新情報満載!

メルマガ登録はこちら

ゲーム業界様向けGCP活用のポイントの他の記事

ゲーム業界様向けにGCPの使い方を解説した「GGG Study」は、全6回に分けてGCPの各スキルを習得していただくための勉強会です。全6回の内容とスケジュールを公開しますので、ぜひお楽しみにしてください。

第1回目
【トップゲート主催】ゲーム業界様向けGCP活用のポイント 〜Google App Engine編〜

第2回目
【トップゲート主催】ゲーム業界様向けGCP活用のポイント〜GCP for Gaming編〜

第3回目
【トップゲート主催】ゲーム業界様向けGCP活用のポイント〜Google Kubernetes Engine編〜

第4回目
【トップゲート主催】ゲーム業界様向けGCP活用のポイント〜Big Query編〜

第5回目
【トップゲート主催】ゲーム業界様向けGCP活用のポイント〜Cloud Run編〜

Firebaseに関する記事一覧は以下よりご確認いただけます。
「Firebase」記事一覧

記事を探す

GCP のメリットを最大限に活用しよう!

GCP・G Suite のご相談・
お見積り依頼はお気軽に
TEL.03-5840-8815
お問合せフォーム TEL.03-5840-8815