2017年 2月 14日、Realm から Realm Mobile Database の新バージョン 1.0 のリリースおよび Realm Mobile Platform における Xamarin のサポートが発表されました。それに伴い、今回ブログを通して皆様に Realm と Xamarin を使用したリアルタイムで同期するコラボレーション アプリの素早い作成方法と、RealmDraw アプリの修正方法の概要を簡単にご紹介したいと思います。
Azure で Realm Object Server の設定
まず初めに、以下が Azure で開発サーバーを設定するための簡単なガイドになります。
- 「Create a Linux VM on Azure using the Portal (ポータルを使用して Azure で Linux VM を作成)」ドキュメントに従い、Ubuntu サーバー 16.04 LTS のインスタンスを作成します
- 「Opening ports to a VM in Azure using theAzure portal (Azure ポータルを使用し
て Azure で VM のポートを開放)」のガイドに従い、ポート 9080 を開きます。サーバーに既に Network Security Group がある場合には、新しく作成する必要はありませ
ん。SSH を使用して接続するポート 22 の定義が含まれていることが確認できます。 - SSH を使用してサーバーに接続し、ターミナル セッションを確立します。
- 最後に、以下の Realm Object Server のインストールの手順に従って、Realm Object Server を起動します。
SkiaSharp による設定
- iOS と Android に新規の Single View プロジェクトを作成します。共通コード用に共有プロジェクトを使用します。
- NuGet SkiaSharp.Views を追加すると同時に
SkiaSharp
も追加されます。 - 最後に、テンプレートの UI を削除し、
SkiaCanvas
を追加して各プロジェクトを整理します。
すると、白い背景に青い円が描画されるのを確認できます。
描画にタッチを追加
これから作成するアプリは、シェイプ ベクター描画アプリケーションではなく、ホワイトボードのようなものであり、タッチをトラックし、タッチ間の直線を描画します。描画速度が速いほど、図面の精度は荒くなります。適切なテスト環境の例の 1つとして挙げられるのは、iPad Pro の Apple Pencil です。
Realm でポイントを記憶
連続ストロークである Paths にグループ化され、ローカルの Realm に保存されたポイントにより、アプリケーション終了後も再度描画に戻ることができます。実際に Realm を追加するために、ビルド時にのみ必要となる多数のサポートを含んだ Realm NuGet パッケージを iOS と Android のプロジェクトに追加する必要があります。より多くのロジックを共有し、個々の UI プロジェクトからロジックを取り除くことによってより多くのコードを共有できます。
Realm Mobile Platform による図面の共有
ローカルの Realm の使用から同期までのステップは非常にわずかです。
- まず、サーバーがどこにあるのか把握する必要があります。
- 通常は、クライアント アプリをサーバーに認証する必要があります。
- ローカルのタッチではなく、Realm を更新することで、描画を起動する必要がありま
す。
ほとんどの作業は、GUI から入り、タッチと描画のレスポンスをトラックできます。Realm を追加してデータを管理するのは、クラスを追加してデータ構造体を管理するよりも、即座に描画から保存したデータを使用して描画へ移行するよりもわずかな作業量となります。
ネイティブ UI プロジェクトを使用したコードを含む詳しいチュートリアルは、こちらのページからご覧ください。