サンプルプログラムで MongoDB Realm のデータ同期を確認する

2022年1月12日(水)
池田 卓司

はじめに

前回は、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#コードで書いたモデルから自動でコレクションとスキーマを生成してくれます。モデルについては後述します。

ページ上部に以下のメッセージが表示されている場合は、すでに開発者モードになっているため、特に設定を変える必要はありません。

開発者モードでない場合は、以下の操作で開発者モードに変更できます。

  1. ポータルサイトの左メニューから[sync]をクリックする
  2. [Development Mode]タブをクリックする
  3. 画面右下の[Turn Dev Mode On]ボタンをクリックする

【参照】https://docs.mongodb.com/realm/sync/data-model/development-mode/

API Keyの作成

API Keyは、コンソールアプリからRealmアプリに接続するために必要となります。以下の操作でAPI Keyを作成できます。

  1. ポータルサイトの左メニューから[Authentication]をクリックする
  2. [Authentication Providers]タブをクリックする
  3. [API Keys]をクリックする

  4. [Provider Enabled]をON にして[Save]ボタンをクリックする

  5. [Create API Key]ボタンをクリックする
  6. [Api Key Name]に任意の値を入力して[Create]ボタンをクリックする

  7. 表示されたAPI Keyをコピーして控えておく。API Keyはこの画面から遷移すると二度と表示されないため注意する

【参照】https://docs.mongodb.com/realm/authentication/api-key/

パーティションの作成

パーティションとは「Realm DBとMongoDB Atlasとのデータ同期に対して、パーティションというグループ単位でアクセス権を付与する仕組み」です。ひと言で表現すると「データ区分」になります。

パーティションを作成し、これにRead/Writeのアクセス権を付与することで同期に対する制限をかけることができます。例えば、以下の様な設定が可能です。

  • パーティション名が“PUBLIC”に分類されるデータは、すべてのユーザーが参照/更新できる
  • パーティション名が“UserIDの値(ユーザー毎に異なる値)”に分類されるデータは、そのユーザーだけが参照/更新できる
  • それ以外の未知のパーティション名は同期の対象としない

  • サンプルプログラムでも上記の様なパーティションを想定しており、それをRealmアプリに設定する必要があります。

  1. ポータルサイトの左メニューから[sync]をクリックする
  2. [Configuration]タブをクリックする
  3. 画面右下の[Define Permissions]をクリックする

  4. [Read]と[Write]に以下を入力する

    {
      "$or": [
        {
          "%%partition": "PUBLIC"
        },
        {
          "%%partition": "%%user.id"
        }
      ]
    }
  5. [Update Permissions]ボタンをクリックする

【参照】https://docs.mongodb.com/realm/sync/data-access-patterns/permissions/

以上で、Realmアプリの環境設定は完了です。

クリエーションライン富山事業所 所長
Javaや.net frameworkでのアプリ開発など、主にソフトウェアエンジニアとして業務に就く傍ら、ホスティングサービスのWindowsサーバー管理など、インフラ系の業務にも従事。現在は、チームマネジメントや北陸エリアでの事業拡張業務を担当。
Twitter: https://twitter.com/cl_toyama

連載バックナンバー

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

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

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

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