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がある
- 特定のユーザに対してPermissionをミラーリングできる
Q&A
- 今後RealmでPHPから使えるようになることはありますか?
- いくつかの言語をサポートしようとしている
- 希望があれば対応していきたい
その他このトークに関する情報源
- Realmを使ってコラボレーションアプリを作る | try! Swift Tokyo 2017 #tryswiftconf Day1-13 聞き起こし - niwatakoのはてなブログ
- [速報レポート] try! Swift TOKYO 2017 1日目 午後II #tryswiftconf | Developers.IO
- try! Swift 2017 Tokyo に参加してきた - 2. 1日目 - My Favorite Things - Coding or die.
togetter
Craft Collaborative Apps with Realm #tryswiftconf - Togetterまとめ