読者です 読者をやめる 読者になる 読者になる

Realmを使ってコラボレーションアプリを作る | try! Swift Tokyo 2017 #tryswiftconf Day1-13 聞き起こし

try! Swift Tokyo 2017

twitter.com

このトークでは、オープンソースのRealm Mobile Databaseを紹介し、サーバーサイドコンポーネントと合わせてRealm Mobile Platformsがどのように完成したかを示します。これを利用すると、テクノロジスタックの実装詳細として同期とネットワークを扱うことができます。 これまで大仕事だったライブコラボレーションのような機能を、不意にすべての開発者が簡単に利用できるようになったのです。このトークでは、残りのデータベースの部分をベースとしてリアクティブにアプリを構築する方法を示します。

Realmを使ってコラボレーションアプリを作る

f:id:niwatako:20170302171053j:plain

f:id:niwatako:20170302171121j:plain

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

f:id:niwatako:20170302171131j:plain

複数ユーザーが同じ作業を出来るようなアプリのことです。

f:id:niwatako:20170302171208j:plain

Realm Mobile Databaseについてお話しますがその前に知っている人手を挙げて下さい、沢山、ありがとうございます。

f:id:niwatako:20170302171239j:plain

f:id:niwatako:20170302171255j:plain

Realmとは何か、何ではないか

f:id:niwatako:20170302171322j:plain

ORMではなく、DBそのものです。

f:id:niwatako:20170302171335j:plain

モバイルのために最適化されています。 SQLiteミサイル駆逐艦の制御に使われていたんです。

f:id:niwatako:20170302171404j:plain

固定スキーマで多くのパフォーマンス・スピードを出来る限り重視してという形になっています。

オブジェクト指向Schemeの定義です。コードの中でしか定義しません。

f:id:niwatako:20170302171501j:plain

f:id:niwatako:20170302171535j:plain

昨年末RealmMobilePlatformが登場

f:id:niwatako:20170302171554j:plain

f:id:niwatako:20170302171604j:plain

クロスプラットフォームアプローチもサポート。ReactNativeやXamarinも対応。

お望みのクラウドを選ぶことも出来る。Node.jsフレームワークと統合できる。

f:id:niwatako:20170302171652j:plain

このプラットフォームで何が出来るのか

f:id:niwatako:20170302171724j:plain

異なるデバイス間で、買い物リストを作り、買う、買い残しがないかを確認ということが出来る。

複数の人間が同時に編集する

f:id:niwatako:20170302171831j:plain

このアプリケーションは非常に便利

f:id:niwatako:20170302171851j:plain

感じの書き順を先生と一緒に学んだり出来る。

Picture in Pictureで先生が教えてくれる。

Canvas上に構築された記入データが先生のCanvasに反映される

f:id:niwatako:20170302172041j:plain

f:id:niwatako:20170302172042j:plain

先生が何か書き込んだり、自分も書き込んだり。

同期がコンフリクトした時解決してくれます。

f:id:niwatako:20170302172145j:plain

クラッシュ・オフライン状態もサポートするので気にしなくて良いです、私の場合はそうでした。

私の方は同期が取れているが先生はローカルに貯めている、という状態でも、接続が回復した段階で同期が取られます。

f:id:niwatako:20170302172305j:plain

本当に素晴らしいですね。

f:id:niwatako:20170302172316j:plain

アプリからJSONを排除するということができます。

f:id:niwatako:20170302172330j:plain

オブジェクトリレーションミスマッチを排除出来る。

皆さんの貴重な時間をJSONをやり取りするために時間を潰すということがなくなります。 苦労しないで複数のプラットフォーム上で実現できる。

通知

f:id:niwatako:20170302172411j:plain

オブジェクトプロパティの監視、各オブジェクト、コレクションの変更を監視することが出来る。

f:id:niwatako:20170302172516j:plain

f:id:niwatako:20170302172524j:plain

RealmDBのグローバルな監視、

f:id:niwatako:20170302172537j:plain

すべてのRealmDBの監視が出来る。

クーポンを使うようなことが出来る。

f:id:niwatako:20170302172556j:plain

クーポンコードを入力しサーバーにSync

サーバーでは通知がトリガーされて、検証をすることが出来る。

しかし複数のRealmが関わる時どのように動くのでしょうか

アクセス権の管理が必要だとすると、REST APIと思うかもしれません。しかし使う必要はありまあせん。Realmを使います。

f:id:niwatako:20170302172747j:plain

権限管理に関する特別なRealmがあります。

f:id:niwatako:20170302172822j:plain

特定のユーザーに対してPermissionをミラーリング出来る。

権限の変更

f:id:niwatako:20170302172937j:plain

f:id:niwatako:20170302173114j:plain

もっと詳しく知りたければ土曜日のワークショップへ来て下さい

f:id:niwatako:20170302173154j:plain

f:id:niwatako:20170302173159j:plain

f:id:niwatako:20170302173206j:plain

f:id:niwatako:20170302173220j:plain

Q&A

今後RealmのモバイルプラットフォームをPHPから操作するような機能を追加する予定はありますか

サポートチームの方でモバイルプラットフォームのサポートチームで、幾つかの言語をサポートしようと考えています。何がほしいか希望を出していただければ、沿っていきたいです。PHPは具体的には決まっていないと思います。言語の追加は決まっています。