注)ポエム以下です
追記:
Read-Only 前提で進めていたのですが,Realm Objet Store(RealmのCoreっぽいやつ)のバグで,Read-OnlyのRealmをSyncしようとすると,初回はダウンロードできるのですが,その後同期が行われないという状態になります.
そのため,以下の内容はRead-Onlyじゃなくても良い,という状況下の場合,という風に読み替えてください.
ちなみにWrite権限を与えると同期ができます...マスターデータ書き換えられそうで怖い...
前回のASP.NET Core MVC で CRUD して Realm Object Server と連携してみようの続きとなる記事です.
前回はASP.NET Coreを使って,Realm Object Serverと連携するようなアプリケーションを作成しました.
今回はそのアプリケーションが操作するRealmのデータベースを Read-onlyで同期するようなクライアントアプリケーションを作っていきます.
本来であればユーザ毎にデータベースを作って,というような運用がRealmでは行われると思うのですが,このようにRead-onlyとしたのはイベントのアナウンスの内容や,展示物の紹介は読み取り専用という前提で行われるよね?と思ったからです.
実際現在開発中の大学祭のアプリケーションではこのような運用でマスターデータを配信し,オフラインでもユーザさんが参照できるような形にしています.
成果物
ソースを見たほうが早い!という方もいらっしゃると思うので,とりあえずリポジトリがこちらになります.
https://github.com/yamachu/RealmNetCoreSample
今回はリリースされたばかりのASP.NET Core2.0やXamarin.Forms2.4.x,またC# 7.1の記法などを使用したプロジェクトになっているので,ビルドするには最新の環境が必要になるかと思います.
またモバイル側は https://developer.xamarin.com/releases/xamarin-forms/xamarin-forms-2.4/2.4.0-stable/ でもあるように,VS4Mでうまくビルドが通らなかったりなどあるので,現在Androidのプロジェクトはslnファイルでコメントアウトしてあります.
Windows環境で誰か検証ができたら確認していただけるとありがたいです(人任せ)
開発!
前回のプロジェクトが完成している場合は,もう既に他のユーザーと共有可能なデータベースと,編集を行うような管理ページが出来ていると思います.それを前提に話をすすめていきます.
とりあえずサーバー側はいい感じに出来てそうなので,クライアント側のことを中心に考えましょう.
私は作成したAPIを叩くモデルを作る際は,まずコンソールアプリケーションから作って確認しています.
今回もその流れでやっていきたいと思います.
じゃあまずはログイン処理から...という感じなのですが,ここに素晴らしいチュートリアルがあるのでそちらを参考にしてください.
ytabuchi氏が行ったRealmのハンズオンの資料?です.
https://github.com/ytabuchi/RealmMobilePlatform/blob/master/TutorialXamarin.md
あれ,もうこれでモバイルのも全部説明終わりでは...
というのも,モバイルのUI周りはこちらのチュートリアルを参考にしたので,もう説明することがなくなってしまいました
おわりに
えっ,内容なくない?という感じではありますが,今回はこれで終わりです.
まとめると
Realmのモバイルの初歩を学びたいのであれば
https://github.com/ytabuchi/RealmMobilePlatform/blob/master/TutorialXamarin.md
を見て,
ASP.NET Coreのアプリケーションとモバイル両方やるのであれば
https://qiita.com/yamachu/items/e986f3fbe7206d54ff12
https://github.com/yamachu/RealmNetCoreSample
を見よう,です.
現在この記事に関することでプロジェクトをひとつすすめているので,それでさらに知見が溜まったらボリュームアップして更新したいと思いますので,どうかお待ちいただければ...