Realm Mobile Platform

Realm Mobile Platformの核となるコンポーネントは Realm という軽量に動作するオブジェクトコンテナです。Realmはデータベースと同様に、オブジェクトを保存し、並べ替えや検索、他のシステムとの連携が可能です。従来のデータベースと異なるところは、Realmのオブジェクトは常に最新の状態に自動的に更新されるということです。Realmはデバイスやアプリケーション間でシームレスに同期し、異なるスレッドからも安全にアクセスできます。

Realm Mobile Database

Realm Mobile Databaseは、モバイルデバイスで快適に動作するようにゼロから開発されました。 従来のデータベースとは異なり、Realmのオブジェクトは ネイティブオブジェクト です。オブジェクトを変更するためにデータベースからコピーしたり、また元に戻すために変換する必要はありません。ネイティブのオブジェクトをそのまま扱えます。そしてオブジェクトは常に「自動更新」されます。別のスレッドやプロセスがオブジェクトを変更すると、他のスレッドやプロセスに即座に通知できます。オブジェクトは常に同期しています。

Realm Mobile Databaseはオープンソースソフトウェアです(Apacheライセンス)。複数のプラットフォームで動作します。対応プラットフォームはAndroid、iOS、Xamarin(.NET)React Nativeです。Realmは各プラットフォーム間で完全な互換性があります。

Realm Mobile Databaseはもちろん単独で利用できますが、Mobile PlatformのRealm Object Serverと連携することで、その機能をフルに活用できます。

Realm Object Server

Realm Mobile Platformを使用して構築されたアプリケーションでは、Realm Object Server上のRealmにアクセスできます。 アプリケーションに必要なことは、Object Serverへの接続情報とサーバー側RealmのURLです。 Realm Object Serverのオブジェクトは自動的にダウンロードされ、アプリケーションで使用できます。ローカルのRealmとObject Server上のRealmは常に完全に同期しています。

Realmは、「オフラインファースト」方式で動作します。読み込みや書き込みはどちらもローカルのRealmに対して行います。同期はネットワークに接続しているときに、自動的かつ完全にトランザクショナルに実行されます。

実践的なRealmの活用

Realmは従来のデータベースと同様なテーブルに似たスキーマ(データ構造)を定義しますが、テーブルよりも強力です。Realmには異なる種類のオブジェクトを格納でき、それぞれのオブジェクトはスキーマによって構造を定義されます。データベースと違って、Realmは軽量に動作します。アプリケーションは複数のRealm(ローカルでもリモートでも)を別のユーザーに対してそれぞれ異なる権限で使用できます。

ショッピングアプリを例に考えてみます。カタログのデータは読み取り専用で、すべてのデバイスからアクセスされます。ショッピングカートのデータはサーバー側のRealmに保存され、ユーザーごとに分かれている必要があります。他のユーザーが別のユーザーのカートにアクセスできてはいけません。スマートフォンを使って商品をカートに入れておいて、後からタブレットデバイスで決済するかもしれません。ウィッシュリストのデータは他のユーザーと共有しますが、それ以外のデータには共有や同期する必要のものがあるかもしれません。リモートのRealmはRealm Object Serverによって自動的に同期され、オフラインであっても変わらず使えるようにローカルにも同じデータを保持します。

使ってみる

Realm Object ServerはLinux(RedHat/CentOS、Ubuntu)、Amazon EC2で利用できます。また、デモアプリケーションとして提供されている「RealmTasks」に付属するmacOS用のObject Serverも使用できます。実際のプロダクション環境ではオンプレミスのLinuxサーバーやクラウドサーバーを使うことがほとんどですが、開発時や学習目的においてはmacOS用のサーバーは、Realm Mobile Platformで何ができるのかを手軽に学ぶ最適の方法です。

Realm Mobile DatabaseはAndroid(Java)、iOS(Objective-C、Swift)、Xamarin、React Native、Node.jsで利用できます。 注意: JavaScript版のRealm Mobile DatabaseはWebブラウザ上の環境では 動作しません

ヒント: macOS版のRealm Object ServerにはRealm Mobile DatabaseのSwift版とObjective-C版が付属しています。

Professional EditionとEnterprise Editionについて: Realm Mobile PlatformのProfessional EditionとEnterprise Editionには、サーバーサイドのRealmファイルにアクセスできるNode.jsのAPIが提供されます。それを使うことで、既存のバックエンドシステムやWebアプリケーションと容易に連携できます。さらに、Node.jsのAPIを使って変更を監視できるイベントハンドリング、高い可用性とロードバランサーが利用できます。Realmのエンジニアによる電話とEmailサポートも受けられます。各エディションについての詳細と、無料との試用版についてはこちらをご覧ください。