Realm Mobile Platformさわってみた

# はじめに
はじめまして。shinfkdです。
リブセンスでエンジニアやっていたはずなんですが、気づいたら最近は採用担当として働いています。
人生何がどうなるかわかりませんね。

さて、毎年々々、Advent Calendarの参加を華麗にかわしてきた私ですが、
今年は、うちの敏腕元インフラエンジニアの「[一度断られた人たちに女性経由で頼んでもらう](http://qiita.com/masahixixi/items/bb44be6d322f17bab62f#%E3%83%AA%E3%83%96%E3%82%BB%E3%83%B3%E3%82%B9%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%81%AE%E7%A4%BE%E5%86%85%E6%8B%A1%E6%95%A3%E9%81%8B%E5%8B%95)」という策略にまんまとはまり、書くことになりました。よろしくお願いします。

ただまぁ、書くことにはなったものの、私も例に漏れずネタに困っております。
あれこれ検討してはみたものの、良いネタが浮かびません。
ここはひとつ、シンプルに今年1年を振り返り、一番思い出深かったものに関わるところから考えてみることにしましょう。

今年、一番思い出深かったことといえば、皆さんやっぱりアレですよね。

**Parse.comサービス終了**ですよね。

いやもう本当に、年明けから「マジかよ…」とどん底に突き落とされた気分でした。
そこでまぁ私も、Parse.comで運用してたサービスの移行先をアレコレと検討したわけです。
その中で選択肢の一つに上がったのがFirebaseでした。

よし、じゃぁFirebaseについて書くかってところですが、今更感満載。
なので、Firebaseと同様にリアルタイム同期を売りにしており、最近発表されて気になってたRealm Mobile Platformをちょこっと触ってみることにします。
(あ、結局サービスは、~~めんどくさかっｔ~~ 熟慮の結果back4appに移行しました。)

# Realm Mobile Platform
Realm Mobile Platformは、モバイルデータベースである[Realm](https://realm.io/jp/)が提供する製品で、今までのクライアントサイドデータベースであるRealm Mobile Databaseに加え、リアルタイム同期、コンフリクト解決、イベントハンドリングなどのサーバーサイド機能を持つRealm Object Serverを統合したものです。(詳しくは[こちら](https://realm.io/jp/news/introducing-realm-mobile-platform/)をご覧ください。)
Firebaseと同様にリアルタイム同期と、上述しましたが、現時点ではRealm Mobile Platformには、mBaaSとしての機能はありません。
自分でサーバーを用意し、構築する必要があります。

## ダウンロード
というわけで、今回はlocalのmacOSで動かしてみます。
[こちら](https://realm.io/docs/realm-mobile-platform/get-started/#getting-started)からRealm Object Serverやらデモアプリが詰まったものをダウンロードし、解凍しましょう。

## サーバー起動
解凍したファイルの中に`start-object-server.command`というファイルがあるので、こいつをコマンドから実行します。

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

ブラウザが立ち上がり、adminユーザーの登録を求められるので登録します。
(立ち上がらない場合は、http://localhost:9080 でアクセスできます)
![realm-createusr.png](https://qiita-image-store.s3.amazonaws.com/0/37188/a443a760-b7cd-0645-c75d-5543a9120755.png)

登録が完了すると画像のようなダッシュボード画面が表示されます。
これで、サーバー側の準備は完了です。
![realm-dashboard.png](https://qiita-image-store.s3.amazonaws.com/0/37188/510ad9bc-9cbc-22cf-4375-14f01c1f5066.png)

## デモ
### アプリを動かしてみる
先程ダウンロードしてきたファイル内の`realm-mobile-platform>demo>RealmTasks`内に、デモアプリも含まれています。
今回はiOS版を動かしてみますので、`RealmTasks Apple>RealmTasks.xcworkspace`を起動してみましょう。

起動しました
<img width="375" alt="Simulator Screen Shot 2016.12.04 0.30.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/37188/14f5ed4d-caad-2739-e20d-5daf68c65500.png">

初回起動なので、適当にユーザーを登録し、ログインするとこんな感じで使えます。
![realm_demo.gif](https://qiita-image-store.s3.amazonaws.com/0/37188/81735370-7aba-7c10-06e4-1b317d711e8d.gif)

### データを見てみよう
登録されたデータを確認するには、これまた解凍ファイル内にある`Realm Browser`というものを使用します。
起動すると、こんな画面がでますので、今回は`Connect to Object Server`を選択します。
![スクリーンショット 2016-12-04 1.13.03.png](https://qiita-image-store.s3.amazonaws.com/0/37188/c73b0442-b17e-3558-8a36-1e977e88b23c.png)

Server URLには、`realm://127.0.0.1:9080`、UsernameとPasswordは、最初の方に登録したAdminユーザーを入力してください。
<img width="307" alt="スクリーンショット 2016-12-04 1.14.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/37188/90584953-f1f4-1da4-31a5-bc63afa7ff6f.png">

ちゃんとデータが登録されていますね
<img width="500" alt="スクリーンショット 2016-12-04 1.29.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/37188/1c7b2847-0e16-ee6b-cc51-b55d24a97ad9.png">

フラグを変えると、ちゃんとリアルタイム同期することも確認できました　:)
![realm_demo_2.gif](https://qiita-image-store.s3.amazonaws.com/0/37188/c6049c76-2c0c-e6c3-e7f4-a98dc57245f9.gif)

# まとめ
Firebaseなどに比べると、自前でサーバーを立てなければいけない分管理コストが上がるものの、ローカルで使っていたRealmから、シームレスにサーバー同期できるという点はとにかく便利です。
軽く触った程度の感想ではありますが、今後mBaaSとしての機能などが追加されたら間違いなく強力な選択肢になると思います。

今後の展開がとても楽しみな製品ですね！

# 終わりに
と言うわけで、私の中では2016年の仕事をすべてやり遂げました。
あとは他の方の記事を見ながら、穏やかな気持で年末を迎えようと思います。
それでは、皆様良いお年を:relieved: