Realm Mobile Platform: リアルタイムの同期と、Coreのオープンソース化

2014年にRealmを起ちあげたとき、私たちの目標はSQLiteやCore Dataの代替となる技術を提供することでアプリ開発者の開発スピードを加速させることでした。2年半が経ち、Realmは10万人以上のアクティブな開発者のみなさまにご利用いただき、リリースされたアプリのインストール総数は10億を超えています。
これまでRealmを利用し、フィードバックをくださったり、さまざまな形で開発を支えてくださったコミュニティの皆さまに心より感謝いたします。

本日、Realmは新しくRealm Mobile Platformをリリースします。
Realm Mobile PlatformはiOSとAndroid向けの完全にオープンソースなクライアントサイドのデータベースに加え、リアルタイムの同期、コンフリクトの解決、イベントハンドリングといったサーバサイドの機能をシームレスに統合します。
Realm Mobile Platformを使うことで、リアルタイムの共同編集やメッセージアプリ、オフラインでも使えてオンラインになったら同期といった難しい機能を非常に簡単に実装することができます。

 

Realm Mobile Platformはベータ版として本日から提供を開始します。Realm Mobile PlatformにはDeveloper EditionとEnterprise Editionの2種類のエディションがあります。
Developer Editionは用途にかかわらず永久に無料で利用することができ、趣味のアプリや規模の小さな商用利用に適しています。
Enterprise Editionは有償ですが、試用期間は無料で利用できます。Enterprise Editionにはテクニカルサポートと保証が付属しますので、大規模な商用サービスでも安心して利用できます。詳細については後述します。
現在は、Java、Objective-C、Swiftの3つの環境で利用できます。React NativeとXamarinではまだご利用いただけません。将来的にはすべてのプラットフォームで利用可能になります。

もう一つ大きなお知らせがあります。いよいよRealm Coreをオープンソースとして公開いたします。このことによって、本日Realm Mobile Databaseのすべてのソースコードが公開されたことになります。ソースコードはすべてGitHubで公開しています
Realm Mobile DatabaseはRealm Mobile Platformの一部としてだけでなく、これまでと同様モバイルにおけるスタンドアローンなデータベースしても私たちのもっとも重要なプロダクトです。Realm Mobile Platformと同様にこれからも改善を続けていきます。

The Realm Mobile Platform

Objects All the Way Down

Realmを利用されている方のほとんどはRealm Coreの仕組みについて意識したことがないかもしれません。しかし、私たちはRealmのもっとも重要な差別化要因はRealm Coreだと考えています。Realmのパフォーマンスと使いやすさの秘密はRealm Coreの仕組みによります。Realm Coreを利用するため、Realmにはリレーショナルデータベースとオブジェクトをマッピングするときのような複雑な仕組みは必要ありません。ただデータをオブジェクトとして素直に表現することができます。つまり、データベースとモデルクラスを完全に同一とすることができます。

このデザイン哲学を今回発表するRealm Object Serverにも適用しています。
また、「ライブオブジェクト」と呼んでいる、Realmにおいて重要な仕組みがもう一つあります。ライブオブジェクトによって、デバイス上のデータは常にサーバのデータと完全に同期します。同期の処理は自動的に、そしてシームレスに行われます。
ネットワーク通信のコードを書く必要はまったくありません。さらに、データ全体ではなく差分のみが転送されるので非常に効率的です。
Realm Mobile Platformはコンフリクトの解決もサポートします。同じオブジェクトに対して変更がコンフリクトした場合は、ルールに従って解消します。
デフォルトのルールはほとんどのユースケースに適しています。ルールのカスタマイズも簡単にできます。

Realm Mobile Platformを利用すると、ネットワーク通信のことを気にする必要はありません。そのため、アプリケーションのデータ操作だけに集中することができます。
つまり、リアルタイムな共同編集やメッセージアプリといった通常は構築することが難しいとされているアプリケーションの作成が簡単になります。
想像してみてください。ホワイトボードの編集を複数人がそれぞれのデバイスで同時に行うことができるアプリがあるとします。もっとも実装が困難なところは、複数の変更をそれぞれのUIに即座に反映することでしょう。コンフリクトも解決も同様に難しいです。同じ場所を複数人が同時に編集したり削除したりする、というのをエレガントに表示しなければなりません。
Realm Mobile Platformはそのような難しいところをすべて引き受けます。

オフラインファーストを実現する

Realm Mobile Platformはオフラインファーストなアプリケーションに対しても素晴らしいソリューションです。オフラインファーストなアプリケーションではネットワーク接続の有無にかかわらずいつでもデータが利用できることが必要ですが、Realm Mobile Databese自体がデバイス上で動作する組み込みデータベースです。そのためネットワークから切断された場合でも、アプリケーションは常にデータを利用することができます。これはRealm Mobile Databeseを単体で使う場合であっても得られる重要な利点です。

Realm Mobile Platform全体(Realm Mobile Database + Realm Object Server)を利用することでさらに大きなメリットを得ることができます。双方向の同期が自動的におこなわれるため、サーバーと接続している間は常に最新のデータを参照することができます。通信が切断された場合でも切断中の変更は再接続後に自動的にマージされ再び最新の情報にアクセスすることができます。この自動的な双方向マージにより、ユーザーは通信状態を気にすることなくアプリを使うことができます。

イベントハンドリング

Enterprise EditionのRealm Mobile Platformではサーバーサイドにおけるイベントハンドリングのフレームワークが提供されます。データの変更をトリガーにして任意の処理をサーバサイドで実行できます。
このフレームワークを用いて、デバイスで行われた変更を監視し、即座にサーバ側からレスポンスを送ることができます。
例えば、ショッピングアプリの注文画面で、クーポンコードを入力したとします。すると、クーポンオブジェクトがローカルに保存され、それは即座にサーバに同期されます。サーバ側ではその変更を検知して、クーポンコードが正しいか検証し、結果をクライアントに通知します。クライアントはそれを受けてUIを更新します。

The Realm Mobile Platform

このようにRealmのイベントハンドリングを用いて、既存のAPIやサーバのロジックと統合することができます。Realm Object ServerをAPIのブリッジやミドルウェアとして利用します。
それにより、アプリを「サーバーレス」コンピューティングに従って構築できます。個別のトリガーに対して処理を書くだけで良いのです。

本日より提供開始

前述のように、Realm Mobile Platformは2種類のエディションがあります。Developer Editionは無料で利用でき、現在はベータ版として提供しています。ドキュメントはこちらです。フィードバックはいつでもお待ちしています。
Enterprise Editionはイベントハンドリングなどの機能が含まれます。現在はクローズドベータプログラムとして提供しています。ベータプログラムへ参加するにはこちらのフォームに必要事項を記入してください。順次、ご案内を差し上げます。