MongoDB Atlasクラスタの作成とMongoDB Realmアプリのデプロイ
作成した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を実施し、データを操作する内容を解説する予定です。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Realmアプリの機能を利用して認証機能を作ろう
- Realmアプリの機能を利用して認証機能を作ろう(後編)
- サンプルプログラムで MongoDB Realm のデータ同期を確認する
- MongoDB Realmのパーティションへの理解を深めよう
- モバイルアプリケーション開発の基礎と「MongoDB Realm」の概要
- Visual StudioでXamarin+Realmアプリの開発環境をセットアップ
- 「Flexible Sync」でデータを同期してみよう
- MongoDB Realmを利用したCRUD機能を実装しよう
- Custom User Dataを利用してユーザーに管理者属性を追加しよう
- サーバーレスな事例が次々登場―ServerlessConf Tokyo 2016レポート