皆様、こんにちは!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('http://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. エディタで上記コードを書いた後、保存 ボタンを押して、スクリプトの変更を保存します。   
  6. image

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

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

    image

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

    image

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

まとめ

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

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

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

鈴木 章太郎