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

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

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

これまでXamarinを使用してiOSとAndroid向けのアプリを開発しましたが,それぞれ独立したプロジェクトでありロジックも別々になってしまっています。これではクロスプラットフォーム開発環境である意味が薄れてしまうため,今回はロジックの共通化を行います。また,これまで紹介しきれなかったMicrosoft Azure モバイルサービスの機能をご紹介したいと思います。

Xamarinのロジックの共通化

Xamarinを起動して,ソリューションを確認するとiOSとAndroid両者でファイルやクラス名が全く違うことに気づかれると思います。これはXamarinは薄いラッパーに過ぎず,アプリの構成についてはiOSやAndroidなどの各プラットフォームに依存しているからです。つまり,各プラットフォームごとにアプリケーションの起動サイクル,状態・状態変化,割り込みへの応答,バックグラウンド・フォアグラウンドへの移行などを学習する必要があります。

このようなことを冒頭に書いてしまうと「なんだ,結局勉強のし直しか」と感じてしまう方もおられると思いますが,大半はイベント名が違うだけであり基本的な動作は同じです。

画面遷移の処理を例にあげますと,第2回第3回で行ったiOSと第4回で行ったAndroidではリソース名やツールの使い方などは違いますし,画面表示のイベント名も「ViewDidLoad」「OnCreate」と異なっています。しかし,遷移前の画面と遷移後の画面に対して共通の入れ物(クラス)でデータを受け渡しする。という大まかな部分については両者同じではないでしょうか?

共通クラスの切り出し

このように細かい実装から離れて全体を俯瞰してみると,⁠ToDoItem.cs」がiOSとAndroid両方のプロジェクトに存在しており,共通化できそうに思えないでしょうか?

ToDoItem.csが両方のプロジェクトに存在

ToDoItem.csが両方のプロジェクトに存在

コードを見ると「ToDoItem」クラスが両者にあるのでここは間違いなく共通化できそうです。Androidだけ「ToDoItemWrapper」というクラスが入っているようです。

ポータブルクラスライブラリの追加

共通化部分をポータブルクラスライブラリ(以降PCLと表記する)としてアプリから独立したDLLとして切り出します。まず,ソリューションを右クリックして「新しいプロジェクトの追加」を選び,Portable Library プロジェクトの追加を行います。

Portable Library プロジェクトの追加

Portable Library プロジェクトの追加

次に追加したプロジェクトを右クリックしてオプションを開き,ビルド - 一般の設定を変更し,⁠PCL 4.5 - Profile7」を選択して「OK」をクリックします。

PCL 4.5 - Profile7を設定する

PCL 4.5 - Profile7を設定する

自動で作成される「MyClass.cs」は不要なので消してください。次に「ToDoItem.cs」ファイルをiOSのプロジェクトからコピペします。この時点でビルドすると,⁠Newtonsoft.Json」が見つからないというエラーが出ます。

「Newtonsoft.Json」が見つからないというエラー

「Newtonsoft.Json」が見つからないというエラー

参照アセンブリの追加

エラーが出る原因は参照アセンブリが不足しているからです。PCLのプロジェクトの参照ディレクトリで右クリックして「参照アセンブリの編集」をクリックします。

参照アセンブリの編集

参照アセンブリの編集

「Edit References」画面にて「Microsoft.WindowsAzure.Mobile.dll」「Newtonsoft.json.dll」を選択します。

DLLを選択する

DLLを選択する

  1. 「.NET Assembly」タブを選択する。
  2. プロジェクト配下の「Components/azure-mobile-services-1.1.0/lib/ios」ディレクトリを選択する。
  3. 「Microsoft.WindowsAzure.Mobile.dll」「Newtonsoft.json.dll」を選択する。
  4. 「追加」をクリックする。
  5. 参照の更新に「Microsoft.WindowsAzure.Mobile.dll」「Newtonsoft.json.dll」が追加されていることを確認する。
  6. 「OK」をクリックする。

これで参照アセンブリが追加され,再度ビルドを行うとエラーは解消されているはずです。

著者プロフィール

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

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

コメント

コメントの記入