Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What is going on with this article?
@amay077

Xamarin で Windows Azure モバイルサービスを使う(その1)

More than 1 year has passed since last update.

Xamarin で BaaS を使うことについて、 koji_yusa さんkochizufan さん が、Parse の使用方法について書いてくれました。

BaaS の中では Parse が一番知名度が高いでしょう。しかし!Microsoft も BaaS を提供しています。

Azure の名を冠しているため、「どうせ IaaS でしょ」とスルーする人が多いんじゃないかと思うので、今回は Microsoft の BaaS である「Azure モバイルサービス」について書きます。

Azureモバイルサービス vs Parse

実際のところは、Parse に比べて Azure の方がスペックは低いです。無料版では、API呼び出し回数は、Azure が50万回に対して、Parse は100万回、ストレージは、Azyreが20MB(!)に対して Parse が1GB などです。

唯一、Azure にのみある機能は「スケジュールされたジョブ」、いわゆる cron みたいなジョブの定期呼び出し機能です。無料版では1時間に1回の利用に限定されるようですが、日時処理には十分使えるでしょう。

Nifty の BaaS と比べても劣勢ですね、あれれ?

Azure モバイルサービスを Xamarin から使う

Microsoft と Xamarin との提携により、Xamarin から Azure モバイルサービスは、簡単に利用することができます。提携前からライブラリの提供など対応は充実していましたが、提携により Microsoft のサイトでチュートリアルが公開されるなど、より充実しました。

そのチュートリアルを辿ってみます。

ちなみに環境は Mac + Xamarin Studio です。Win + Visual Studio でも同じ手順ですが、iOS 用のサンプルなので、iOS ならビルドと実行の為に Mac が必要です。Win しかないなら Android 用に置き換えて試せます。

1. Windows Azure にサインアップする

モバイルサービスを利用するには、まず Windows Azure に登録しなければなりません。本人確認のために、クレジットカードや携帯電話番号が必要になるのが煩わしいかもですが、勝手に請求されたりはしませんのでご安心を。

手順は↓が詳しいので割愛します。

2. モバイルサービスを作成する

サインアップできたら Windows Azure マネージメントポータルを開きます。迷ったらここ。アドレスは、

です。

下のような画面になるので、左メニューから モバイルサービス → 新しいモバイル サービスを作成する と進みます。

URL に任意のIDを入力します(世界で一意になる必要があります)。また、地域を「東アジア」にします。

続いて SQL Server の設定をします。ログイン名に任意のユーザー名、パスワードに任意のパスワードを設定します。

ウィザードを終わると、マネージメントポータルに戻ります。しばらくの「作製中…」の後、状態が「準備完了」となり、これでモバイルサービスは作成完了です。

3. Xamarin.iOS アプリケーションからモバイルサービスを使ってみる

作成したモバイルサービスをクリックします。

ここから、一気です。

  1. まずプラットフォームで「Xamarin」を選択し、
  2. 「新しい XAMARIN アプリケーションを作成する」を展開、
  3. 「TodoItem テーブルを作成する」をクリックして「作成されました」となるまで待ち、
  4. Xamarin.iOS 用のサンプルアプリケーションをダウンロードします。

ダウンロードした zip ファイルを解答し、Xamarin Studio で開きます。
参照 や Components を見ると、Azure Mobile Service 用のライブラリが組み込まれている事が分かります。

Debug で iPhone シミュレータで動かしてみます。

上の動画のように適当なアイテムを追加した後、ブラウザのマネージメントポータルで追加したデータを確認してみます。

上部のメニュー から データ → TodoItem と進むと、追加されたデータが確認できます。

以上です。Xamarin.iOS で Azure モバイルサービスにデータを登録するサンプルが手に入りました。

4. サンプルのコードを眺めてみる

これで終わってもアレなので、コードを見てみます。
まず前述した Azure Mobile Service 用のライブラリが組みこまれていますが、これは、 Xamarin の Components ストアで提供されている、

です。これを主に使っているのは QSTodoService.cs です。

QSTodoService.cs を見てみると、まず NameSpace から。

using Microsoft.WindowsAzure.MobileServices;

次にコンストラクタなど。

MobileServiceClient がメインクラスですが、これを使う前に CurrentPlatform.Init() が必要です(DI だか IoC だかですかね)。

そして MobileServiceClient.GetTable<ToDoItem>() をすることで Azure 上のテーブルを取得しています。まだデータは読み込みません。

MobileServiceClient client;
IMobileServiceTable<ToDoItem> todoTable;

/**省略*/

QSTodoService ()
{
    CurrentPlatform.Init ();

    // Initialize the Mobile Service client with your URL and key
    client = new MobileServiceClient (applicationURL, applicationKey, this);

    // Create an MSTable instance to allow us to work with the TodoItem table
    todoTable = client.GetTable <ToDoItem> ();
}

データの読み込みは、RefreshDataAsync にて。さりげなく async で。

public List<ToDoItem> Items { get; private set;}

async public Task<List<ToDoItem>> RefreshDataAsync()
{
    try {
        // This code refreshes the entries in the list view by querying the TodoItems table.
        // The query excludes completed TodoItems
        Items = await todoTable
            .Where (todoItem => todoItem.Complete == false).ToListAsync ();

    } catch (MobileServiceInvalidOperationException e) {
        Console.Error.WriteLine (@"ERROR {0}", e.Message);
        return null;
    }

    return Items;
}

今回はこんなところで。

次回は、 Azure モバイルサービスの続きで、このサンプルに認証周りの機能を実装してみます。

15
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
amay077
ランチの時は呼ぶといい!

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
15
Help us understand the problem. What is going on with this article?