Windows Azureモバイルサービスで始めるスマホアプリ開発

第5回 ロジックの共通化によるクロスプラットフォーム開発

この記事を読むのに必要な時間:およそ 2.5 分

PCLをiOSプロジェクトに組み込む

iOSの「ToDoItem.cs」を削除して,参照アセンブリにPCLを追加します。

ソリューションから「ToDoItem.cs」を右クリックして削除します。

ToDoItem.csを削除する

ToDoItem.csを削除する

参照アセンブリの追加は,⁠参照」を右クリックして「Projects」タブを選択後,PCLを選択して「OK」をクリックします。

iOSプロジェクトに参照アセンブリを追加

iOSプロジェクトに参照アセンブリを追加

再度ビルドを行い,ビルドエラーが起きないことを確認してください。iOSシミュレーターで動作確認してみるのも良いでしょう。

PCLをAndroidプロジェクトに組み込む

iOSと同様にAndroidにもPCLを組み込んでみましょう。ただし,Androidの「ToDoItem.cs」には「ToDoItemWrapper」というクラスが存在するため,⁠ToDoItem.cs」を削除するのではなく,⁠ToDoItemWrapper.cs」に移行します。

ToDoItemWrapper.csへ移行する

ToDoItemWrapper.csへ移行する

  1. 「ToDoItem.cs」「ToDoItemWrapper.cs」に名前を変更します。
  2. 「ToDoItemWrapper.cs」ファイルを開いて,⁠ToDoItem」クラスを削除します。
  3. 最終的にこの図のようになっていることを確認します。

移行が完了しましたら,iOSと同様にPCLを参照アセンブリに追加します。

ここでもビルドを行い,ビルドエラーが起きないことを確認してください。

以上で,⁠ToDoItem」クラスの共通化は完了です。このようにiOS,Android両方で使えるクラスはどんどんPCLに追い出してコードの重複を排除して,プラットフォーム間でライブラリ共有が可能なことがXamarinの魅力です。

さらに共通化するために

さて,先の例ではPCLの参照アセンブリに「Microsoft.WindowsAzure.Mobile.dll」を組み込みましたが,現実装では不要です。なので,削除しても良いのですが,まだまだ共通化できる余地があります。

例をあげます。Command+Shift+Fキーで「複数ファイルからの検索」が開きます。そこに「MobileServiceClient」といれて検索をしてみてください。

複数ファイルからの検索

複数ファイルからの検索

すると,iOSプロジェクトにある「QSTodoService.cs」とAndroidプロジェクトにある「ToDoActivity.cs」がヒットします。同じクラスを使っているということは,共通化が可能ということです。

MobileServiceClientの検索結果

MobileServiceClientの検索結果

ここから先は皆さん自身でクラスの共通化にチャレンジしてみてください。先の「ToDoItem」クラスの切り出しより若干難易度が高いと思います。

Microsoft Azure モバイルサービスの機能紹介

これまでにXamrinを使用してiOSとAndroidのアプリを作成しましたが,サーバサイドへのロジック追加を一切行っていないことにお気づきいただけたでしょうか?

このようにモバイルサービスではデータの追加・取得・編集・削除といった基本的な操作はWebAPIとしてサーバ側にあらかじめ用意されています。WebAPIを呼び出すためにクライアント側の実装もクライアント用SDKが用意されているため,いちいちHttpClientから叩いてJSONを解析して…といった実装は不要です。

本連載にて紹介しきれなかったMicrosoft Azure モバイルサービスの機能の一部をご紹介します。

認証

簡単な設定を行うだけで,Twitter, Facebook, Google, Microsoft Account, Azure Active Directoryを使用して認証を行うことが可能です。詳細はGet started with authentication (Xamarin.iOS) - Mobile Servicesをご確認ください。

日本語ですと,Xamarin で Windows Azure モバイルサービスを使う(その2:認証編) - Qiitaが参考になると思います。

プッシュ通知

サーバからアプリへのプッシュ通知も簡単な設定とわずかな実装だけで実現できます。詳細はGet started with push notifications (Xamarin.iOS) - Mobile Servicesをご確認ください。こちらも日本語はXamarin で Windows Azure モバイルサービスを使う(その3:プッシュ通知編) - Qiitaが参考になると思います。

オフラインサポート

インターネットに接続されていない場合も継続してアプリの使用が可能です。オフラインで更新した内容はオンラインになった時に反映されます。さらに,オンラインと差分があった場合はどちらか選べます。

詳細は次のページを参照してください。

.NET バックエンド

本連載ではバックエンドにJavaScriptを選択しましたが,.NET を選択することが可能です。サーバサイドもc#で書くことが可能です。

以上で本連載は終了となります。Microsoft Azure モバイルサービスは日々進化していますので,これからも新しい便利な機能がどんどん追加されると思いますので,皆さん是非使ってください。

著者プロフィール

山本誠樹(やまもとまさき)

ブログ:http://nnasaki.hatenablog.com
Twitter:@nnasaki
Facebook:https://www.facebook.com/nnasaki
Github:https://github.com/nnasaki