MongoDB Atlasクラスタの作成とMongoDB Realmアプリのデプロイ

2021年12月7日(火)
平 昇治

作成したRealmアプリの機能を確認する

ここで、いくつかRealmアプリの機能をUIを通して確認してみます。Realmタブから作成したアプリケーションをクリックしてみましょう!

アプリケーション情報を確認する

アプリケーションの情報を確認できます。「App ID」に表示されている文字が一意のアプリケーションを示すIDです。このIDを利用してモバイルアプリケーションからRealmアプリに接続します。また「Guides」から主要な機能のtutorial Guideに進むこともできます。

スキーマ情報を確認する

MongoDB Realmを用いた開発ではデータベーススキーマを利用します。既にtodoデータベース、Taskコレクションが存在していますが、これは先に実施したRealmテンプレートアプリのデプロイの中で作成されます。

スキーマはjsonオブジェクトで定義します。_id、_partition、isComplete、summaryの4つのプロパティを持ち、すべてRequired属性が指定されているコレクションです。

ここでは詳細な解説は割愛します。詳しく知りたい方はスキーマに関する解説サイトを参照ください。

ユーザ情報を確認する

Realmアプリケーションが利用するユーザ情報を確認できます。MongoDB Realmはユーザ情報を管理するための機能を有しています。

ユーザが存在する場合はここにユーザ一覧が表示されますが、まだユーザーは存在しないため表示されていません。

ユーザ認証プロバイダを確認する

「Authentication」を押下すると、アプリケーションユーザの認証プロバイダを確認できます。Eメール/パスワード認証の他、FaceBook、Google認証などいくつかの認証プロバイダが提供されています。

SDKに関する情報を確認する

Realm SDKsを利用した方法が記載されています。

MongoDB Realmを用いたモバイルアプリケーション開発では、モバイルアプリケーションからSDKを用いてRealmアプリケーションへ接続します。Language欄から利用したい言語を選ぶと、各言語に応じた接続方法を確認できます。

var myRealmAppId = "<your_app_id>";
var app = App.Create(myRealmAppId);
var user = await app.LogInAsync(Credentials.Anonymous());

これは、Anonymous認証でRealmアプリケーションにログインする処理例です。<your_app_id>には接続したいRealmAppのIDを指定します。LogInAsync()はログインを行うメソッドです。

「Working with Realms」には、Realm Syncを行うためのサンプルコードが記載されています。

オブジェクトモデルを確認する

「Realm Object Models」タブでは、開発言語ごとのエンティティを定義するためのコードを確認できます。スキーマ定義を元にして実際に利用する内容が表示されます。モバイルアプリケーション側に本クラスを用意してデータ操作を行います。

Sync

前回でMongoDB Realmを利用するメリットとして「同期処理を自動で行う」と説明しましたが、それを実現するための機能です。

どのAtlasクラスタとSyncするか、同期の中核となるパーティションキーの選択など、Realm Syncの設定が行えます。テンプレートのRealmアプリをdeployした段階で有効な同期設定が投入されています。

Syncはモバイルアプリケーション側からSDKを用いて行います。実際の操作については、次回以降で取り上げていく予定です。

Sync機能について

複数人から同一のコレクションに処理リクエストが要求された場合は競合が発生しますが、MongoDB Realmを利用したモバイルアプリケーション開発では競合を自動解決します。モバイルアプリケーション開発者が競合を意識してソースコード上に特別な処理を記述する必要はありません。

競合の解消ルールは、以下のとおりです。

・削除(DELETE)は常に優先される
一方のリクエストで更新してもオブジェクトは削除された状態になります。

・更新(UPDATE)は最後の更新が優先される
両方が同じプロパティを更新する場合、最新の値を保持します。

・挿入(INSERT)は時間順に並べられる
2つのアイテムを同じ位置に挿入した場合は時間順に挿入され、2つのアイテムが挿入された状態になります。

競合の解決ルールの詳細は、こちらのサイトを参照してください。

Function

Realmアプリのサーバサイド側で行う処理を定義、実行できます。処理はTriggerから呼び出したり、モバイルアプリケーション(クライアントアプリケーション)から呼び出したりできます。FuctionはJavascriptで記述します。

Trigger

特定の条件に一致する場合にFunctionを実行するための機能です。以下のトリガが用意されています。

・データベーストリガ
コレクション内へのドキュメント挿入、変更、削除時

・認証トリガ
アプリケーションユーザの作成、認証、削除時

・スケジュールトリガ
事前定義されたスケジュール

おわりに

今回はMongoDB Atlasクラスタの作成、MongoDB Realmアプリのデプロイについて解説しました。全ての機能ではありませんが、Realmアプリのデプロイと実際のUIを通じてMongoDB Realmの機能をいくつか紹介しました。

Realmアプリ側でAtlas(データベース)との接続に関する情報やモバイルアプリケーション開発に必要な機能が提供されているというイメージを掴めたかと思います。

次回は、実際にクライアントアプリケーションからRealm Syncを実施し、データを操作する内容を解説する予定です。

クリエーションライン株式会社 EDIT所属
通信キャリア会社のクラウドポータル開発や自動車関連会社のIoTシステム開発などを経験。最近は社内向けのシステム開発に従事。北陸を愛し、北陸を盛り上げたいエンジニア。富山事業所のツイッターで何人かでいろいろと呟いてます。
Twitter: https://twitter.com/cl_toyama

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています