Windows Azure Mobile Services の機能追加 - Scheduled Job

皆様、こんにちは!2012年最後の Blog エントリを書いておきますね。

こちらの記事にもある通り、Windows Azure の機能がまた強化されまして、その中で、Mobile Services にも若干の更新がありました。要は、バックグラウンドジョブのスケジューリングを改善して、ユーザ体験が中断しないようにしたしたわけです。各ジョブに別々の仮想マシンを与えて管理するのではなく、個々のジョブに一定のタイムスライスを与えてスケジューリングすることで実現しています。またMobile Services は、これまでの US East と US West リージョンに加えて Northern Europe でも利用可能になりました。更にコマンドラインツールの利用も可能になっています。

ここでは、スケジュールされたジョブの追加について、今までの演習に加えて、解説しておきましょう。なお、この内容は、新しい Windows Azure Training Kit (12月版)にも含まれています。

演習 : Mobile Service へのスケジュールされたジョブの追加

この演習ではまず、今までの演習でPush通知までは実装してあることが必要です。

タスク 1 - Windows ストアアプリにワイドロゴタイルを追加
  1. 最初に、Windows Azure Management Portal にログオンします。スケジューラタブが追加されていることがわかります。image

  2. Visual Studio で、当該プロジェクトの package.appxmanifest を開きます。

  3. アプリケーション UI タブを開きます。

  4. 310x150 ピクセルのワイドロゴタイルを準備します(Contoso Cookbook では最初から用意されています)。

    image

注: もし使用できるワイドロゴのイメージがない場合には、ペイントを使って簡易に作成してみてください。デザインはともかく、サイズだけあっていればとりあえずエラーにはなりません。

タスク 2 - Mobile Services スケジューラを構成する
  1. スケジューラジョブを作成します。このジョブは、登録済みのクライアントに対して、15分おきに、特定アカウントにおける最新の Twitter の更新をプッシュで通知します。

    image

  2. Sジョブの名前を適当に決めて、15 分毎にジョブが実行されるように設定し、 チェックボタンをクリックしてスケジュールを作成します。

    image

  3. ジョブ一覧から、今作ったジョブを選択します(→マーク)。

    image

  4. ジョブの中のスクリプトタブを選択し、下記のコードを挿入します。Windows Notification Service の push.wns.*.のメソッドを使い、Twittter に特定アカウントの更新の問合せをして、プッシュ通知でスタート画面のタイルを更新します。

     function CheckFeed() {
          getUpdatesAndNotify();
     }
      
     var request = require('request');
     function getUpdatesAndNotify() {  
          request('https://search.twitter.com/search.json?q=@shosuz&rpp=2', 
           function tweetsLoaded (error, response, body) {
               var results = JSON.parse(body).results;
               if(results){
                     results.forEach(function visitResult(tweet){
                      sendNotifications(tweet);
                     });
               }            
           });
     }
      
     function sendNotifications(tweet){    
      
     var channelTable = tables.getTable('Channel');
     channelTable.read({
         success: function(channels) {
              channels.forEach(function(channel) {   
      
                   push.wns.sendTileWideSmallImageAndText04(channel.uri, {
                         image1src: tweet.profile_image_url,                            
                         text1: '@' + tweet.from_user,
                         text2: tweet.text
                   });                  
      
              });
         }
      });
     }
    
  5. エディタで上記コードを書いた後、保存 ボタンを押して、スクリプトの変更を保存します。   

    image

  6. Visual Studio に戻り、F5 キーを押して、アプリケーションをビルドし、実行します。これにより、このアプリに使われる予定の channel URI が最新に更新され、デフォルトワイドタイルが、スタート画面に表示されます。

  7. Windows Azure 管理ポータルに戻り、今回作成した Mobile Services のスケジューラタブをクリックして、有効化ボタンを押してジョブを実行します。

    image

  8. 15分ジョブの実行を待つよりは、スクリプトの実行を即時にテストするため、一度だけ実行するボタンを推して実行します。

    image

  9. スタート画面に戻ると、Twitter の最新の Update がタイルに表示されます。

まとめ

スケジューラを使えば、もっといろいろなことができます。詳細は、Training Kit のコンテンツおよびチュートリアルのページを参照してください。

来年は更に面白い Devices + Cloud のシナリオやデモ、そしてアーキテクチャやガイドライン等も含め、ご紹介していきます。

それでは、皆様良いお年を!

鈴木 章太郎