HOME > アプリ開発 > [iOS][Swift]Realm Mobile Platformを使ってサーバとのリアルタイム同期を試してみた

[iOS][Swift]Realm Mobile Platformを使ってサーバとのリアルタイム同期を試してみた

Realm Mobile Platformがリリースされて、色々使ってみましたのでご紹介します。

Realm Mobole Platformとは

Realm Mobile Platformは今までと何が違うかというと下記のような事ができるようになりました。

  • サーバサイドのデータベースを構築でき、クライアントサイト(iOS、Androidアプリ)と連携を実現
  • クライアントとサーバとのリアルタイム同期

つまりは、今まではiOS、Androidのクライアントサイドのデータベースエンジンとして使われていたRealmがサーバサイドの範囲まで拡張したものといえます。

詳しくは公式サイトの紹介も御覧ください。

公式サイトの説明

環境構築

まずは環境構築の仕方について紹介します。下記のURLにアクセスしてRealm Object Server、デモサンプル、その他開発ツールがバンドルされているファイル一式をダウンロードします。(260MBほどです。)

https://realm.io/docs/realm-mobile-platform/get-started/

dd4fb50a85832eebaf724abaffe0c3c8

ダウンロードしたios-realm-mobile-platform.zipファイルを解凍すると下記の構成です。

b6a2cd40f5f81ce847c8547dbc5bebd5

これからこの解凍したフォルダからサーバサイドを起動したりします。適当な場所に移動しておいてください。

Realm Object Serverの起動

ダウンロードしたzipファイルを解答して、ターミナルで解凍先のフォルダに移動してstart-object-server.commandを実行します。

ターミナルで実行

cd 解凍先ディレクトリ
./start-object-server.command

コマンドを実行すると下記のメッセージが表示されるはずです。

aa550f798ca9fe9702e8ce5876f31383

それと同時に自動でブラウザが開き、下記の画面が表示されます。管理者ユーザを登録する画面ですのでEmail Adress、(管理者のメールアドレス)Password(パスワード)、Confirm passwofd(確認パスワード)を入力して、I agree...の箇所のチェックをしてComplete Setupボタンをクリックします。

600f7faffe415c15d50cf86d64d85f4c

Setup Complete! Please login.のメッセージが表示されたログイン画面が表示しますので、今作った管理者でログインします。

6b39ce82a64d6629ae8ac3d86ae25a44

このようにrealmのサーバの管理画面のダッシュボードが表示されます。これでサーバサイドの環境が整ったという事ですね。

c7d82a2e2c79321e3e26039a4b10c913

続いてサンプルコードを使って動作確認してみましょう。

サーバの動作確認

それではサーバの動作確認をしてみましょう。下記のGithubのURLよりサンプルコードがダウンロードできます。ダウンロードしましょう。

https://github.com/realm/RealmTasks

b6e063b4a75215ba5f35437048c76d41

ダウンロードしたら下記のとおりApple(iOS、Mac)用、Android用のサンプルプロジェクトが存在します。 今回はiOSアプリを使って動作確認します。ビルドするにはCocoapodsを実行してライブラリをダウンロードしてこないといけないので、RealmTasks Appleフォルダの場所にターミナルで移動してpod installを実行します。

cd [RealmTasks Appleの場所]
pod install

下記のようなエラーが出る場合はCocoapodsのバージョンが古いせいでエラーになっています。

0800be4fac306889e8aedfa42d37c406

CocoaPodsをバージョンアップさせるためにpod repo updateを実行してリポジトリをアップデートします。

pod repo update

5a9030ed286d4b8f35f4eef60e06f341

次にgem install cocoapods --preを実行して最新版のCocoaPodsをインストールします。

gem install cocoapods --pre

再度、pod installしてみましょう。Pod installation complete!が出ればOKです。

0de43c98de95f931860d7d77e23576ae

次に、RealmTasks.xcworkspaceをダブルクリックしてXcode開きます。

41c1f907e4f2f3fbf4aee6f06d943282

適当にシュミレータの端末を選んで、Runボタンをクリックします。

96b929dc9deb61c8075537baab96b78d

シュミレータが起動してアプリが表示されると最初はログイン画面が表示されます。先程サーバ側で登録したユーザとパスワードでログインします。

d0ba988124b4cd3f8698369742621738

次の画面でプルダウン操作をしてアイテムを追加します。

65669e42278c08822c81999975e8deae

このように追加していきましょう。

2576a329c9f8abe6be20183781540593

実はもうすでに起動したRealm Object Serverと接続されていてデータが保存できています。 保存された事をRealm Browserで確認してみましょう。 realm-mobile-platformフォルダにRealm Browserが入っているので起動します。

766149334f970ec4ab8bd5fd3f85e117

Connect to Object Serverのボタンをクリックします。

f64a6710eb032e197ffdddda33bbd1c1

Server URLrealm://127.0.0.1:9080を入力します。 そしてAdmin Access Tokenは、さきほど実行した./start-object-server.commandコマンドを実行して出力されたYour admin access token is:の文字列をコピーします。

2675f3490c4072895bac426c36878c5a

491a11937ee2ead72806d309b34e31e5

Connectボタンを押したら下図の画面がでます。選択してOpenをクリックします。

3349192e4e1783f4ff2bfe02ce488766

このように先程iOSシュミレータで登録したデータがサーバ側にも保存されている事がわかります。

a53662e5c4b3dbf8e1182ebbcb12c899

しっかりとリアルタイムでサーバ側とアプリ側でデータが同期していることが確認できます。

9fdb4e44aa3c8571716f59c5f1dc888f

このように簡単にサーバサイドとリアルタイムに連携したアプリケーションを確認する事ができます。 まだ、サーバサイド側で、PHPやRubyなどからデータベース操作はまだ対応していなさそうですが、今後非常に期待できるプラットフォームなので随時、キャッチアップしていきたいと思います。

iOSのサンプルコードを見てもても非常に簡単なコードでデータの取得・更新などができるようですので、実際のアプリを作って紹介しようと思います。