サンプルプログラムで MongoDB Realm のデータ同期を確認する
はじめに
前回は、MongoDB Realmのアカウントやクラスターを作成しました。今回は、ローカルデバイスのRealm Database(以後、Realm DB)と、クラウドの MongoDB Atlasを同期させるための簡単なプログラムについて説明します。
なお、下図の丸で囲った部分が、今回で主に説明する部分となります。
ただし、今回モバイルデバイスは使用しません。動作確認を簡単に行えるようにするためPCで動作するコンソールアプリを使用しますが、これを仮想モバイルデバイスと捉えてもらって問題ありません。
また、OSはWindowsを前提としています。macOSを使用する場合は、適宜、操作や設定をmacOSに合わせて置き換えてください。
サンプルプログラムの準備
.NET 6で動作するコンソールアプリのサンプルプログラム(プログラム言語はC#)を用意しております。ここでは、これを基にプログラムの説明を行いますので、以下のコマンドを実行しGitLabからサンプルプログラムをダウンロードしてください。
git clone https://gitlab.com/creationline/mongodb-realm-sampleapp.git SampleApp
ダウンロード先は任意ですが、ここではサンプルプログラムのルートフォルダをC:¥repos¥SampleAppとしています。
またGitを使用するので、インストールされていない場合は、こちらからインストールしてください。
MongoDB Realmアプリケーションの環境設定
続いて、コンソールアプリを動かすために必要なMongoDB Realmアプリケーション(以後、Realmアプリ)の環境設定を行います。MongoDBクラウドのポータルサイトにサインインし、前回で作成した“SampleApp”を開きます。ここでは、以下の作業を行います。
- App IDの確認
- 開発者モードに変更
- API Keyの作成
- パーティションの作成
App IDの確認
Realmアプリには、一意のID(App ID)が発行されています。この値はコンソールアプリから接続する際に必要となるため控えておきます。なお、App IDはポータルサイトのSampleAppトップページから確認できます。
【参照】https://docs.mongodb.com/realm/get-started/find-your-project-or-app-id/
開発者モードに変更
開発者モードをONにしておくと、C#コードで書いたモデルから自動でコレクションとスキーマを生成してくれます。モデルについては後述します。
ページ上部に以下のメッセージが表示されている場合は、すでに開発者モードになっているため、特に設定を変える必要はありません。
開発者モードでない場合は、以下の操作で開発者モードに変更できます。
- ポータルサイトの左メニューから[sync]をクリックする
- [Development Mode]タブをクリックする
- 画面右下の[Turn Dev Mode On]ボタンをクリックする
【参照】https://docs.mongodb.com/realm/sync/data-model/development-mode/
API Keyの作成
API Keyは、コンソールアプリからRealmアプリに接続するために必要となります。以下の操作でAPI Keyを作成できます。
- ポータルサイトの左メニューから[Authentication]をクリックする
- [Authentication Providers]タブをクリックする
- [API Keys]をクリックする
- [Provider Enabled]をON にして[Save]ボタンをクリックする
- [Create API Key]ボタンをクリックする
- [Api Key Name]に任意の値を入力して[Create]ボタンをクリックする
- 表示されたAPI Keyをコピーして控えておく。API Keyはこの画面から遷移すると二度と表示されないため注意する
【参照】https://docs.mongodb.com/realm/authentication/api-key/
パーティションの作成
パーティションとは「Realm DBとMongoDB Atlasとのデータ同期に対して、パーティションというグループ単位でアクセス権を付与する仕組み」です。ひと言で表現すると「データ区分」になります。
パーティションを作成し、これにRead/Writeのアクセス権を付与することで同期に対する制限をかけることができます。例えば、以下の様な設定が可能です。
- パーティション名が“PUBLIC”に分類されるデータは、すべてのユーザーが参照/更新できる
- パーティション名が“UserIDの値(ユーザー毎に異なる値)”に分類されるデータは、そのユーザーだけが参照/更新できる
- それ以外の未知のパーティション名は同期の対象としない
サンプルプログラムでも上記の様なパーティションを想定しており、それをRealmアプリに設定する必要があります。
- ポータルサイトの左メニューから[sync]をクリックする
- [Configuration]タブをクリックする
- 画面右下の[Define Permissions]をクリックする
- [Read]と[Write]に以下を入力する
{ "$or": [ { "%%partition": "PUBLIC" }, { "%%partition": "%%user.id" } ] }
- [Update Permissions]ボタンをクリックする
【参照】https://docs.mongodb.com/realm/sync/data-access-patterns/permissions/
以上で、Realmアプリの環境設定は完了です。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- MongoDB Realmのパーティションへの理解を深めよう
- Visual StudioでXamarin+Realmアプリの開発環境をセットアップ
- MongoDB Realmを利用したCRUD機能を実装しよう
- Custom User Dataを利用してユーザーに管理者属性を追加しよう
- Realmアプリの機能を利用して認証機能を作ろう(後編)
- MongoDB Atlasクラスタの作成とMongoDB Realmアプリのデプロイ
- 「Flexible Sync」でデータを同期してみよう
- Realmアプリの機能を利用して認証機能を作ろう
- モバイルアプリケーション開発の基礎と「MongoDB Realm」の概要
- TwitterとFacebookへの同時投稿を行う(後編)