とりあえずやってみればいいじゃん

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

3/2 Realmを使ってコラボレーションアプリを作る #tryswiftconf

try!Swiftのセッションまとめシリーズです。Marius Rackwitzさんの「Craft Collaborative Apps with Realm」についての記事になります。

資料

内容

コラボレーションアプリとは?

  • 複数のユーザが同じ作業をできるようなアプリケーション
  • 今日はモバイルデータベースの話をする

Realmとは何であって、何ではないでしょうか

  • よくある誤解
    • ✕オブジェクトリレーショナルラッパーである
    • ◯データベースそのもの
  • SQLiteとは違う
  • Realmは元々デバイスを念頭に置いている
  • 固定のスキーマを持っている
  • オブジェクト思考でスキーマ定義
    • コードでしかやらない
    • 整数をいじったりしなくてもいい
    • クラスの定義をしてその次に◯◯して、などとしなくてもいい
  • アトミックプロパティに関しては結構わかりやすくなっている
  • リンクを定義することもできる
  • 新たなヒエラルキーの導入の必要がない

Realmのモバイルプラットフォームについて

  • サーバサイドに関してデータの拡張が可能
  • それぞれのプラットフォームだけでなくクロスプラットフォームでもOK

  • 何ができるようになるのか

    • 最もシンプルなシナリオでできる
  • データのバックアップ
    • データベースに対して同期をすることができる
    • 継続バックアップが可能
  • バイス間の同期
    • 何を買いたいのか、買い逃しがあったかリアルタイムで確認できる
    • 様々なデバイスがあった時に同時にアクセスできるようにする
    • リアルタイムでの共同編集ができる
  • 絵を同時に書くことができる
    • 書き順を学ぶことができる
    • オブジェクトとして構築され、それが相手のところへオブジェクトとして渡っていく
    • 変わった部分は同期される
    • コンフリクトがあった場合は解消してくれる
    • 一貫したデータをクロスデバイス間で入手できる
  • コネクションが落ちた場合
    • オフラインでも問題なく解消できる
    • ひらがなをオフラインで書き続ける
      • 自分は同期ができている
      • コネクションが繋がったらその分がプッシュされる
  • 別々にシンクされている場合も多い
  • アプリからjsonを排除することができる
  • オブジェクトリレーショナルミスマッチを解消することができる

Realmの通知機能を使う

  • 各プロパティの変更を監視する(KVO)
  • 各オブジェクトの変更を監視
  • コレクションの変更を監視
  • ファイル全体の変更を監視
  • すべてのRealmファイルの変更を監視
  • クーポンを使うようなことができる
    • 特定のユーザに対してクーポンが発行され、コードが割り当てられる
    • オブジェクトはサーバに対して同期される
    • 検証コードをトリガーすることができる
  • 複数のRealmが関わる場合
    • RESTを使わずRealmでできる
  • アクセス管理に関する特別なRealmがある

Q&A

  • 今後RealmでPHPから使えるようになることはありますか?
    • いくつかの言語をサポートしようとしている
    • 希望があれば対応していきたい

その他このトークに関する情報源

togetter

Craft Collaborative Apps with Realm #tryswiftconf - Togetterまとめ