スマホ×Windows Azure開発講座(Windows Phone編)

第1回Windows Phone+Azure概要

はじめに

2011年3月11日に発生した東日本大震災。震災発生直後、重要なWebサイトが次々とダウンする中、クラウドのコミュニティによって多くのWebサイトが非常に短い時間で復旧しました。Windows Azureも対応が非常に速かったクラウドの1つ。これまでの常識では考えられない作業時間で既存Webサイトを震災発生直後の膨大なアクセスに耐えうるWebサイトに早変わりさせました。クラウドの環境構築の速さと柔軟性、高い耐障害性などの特徴が震災発生以降注目され、BCP対応にクラウドを利用する動きも非常に増えてきました。

クラウド同様に震災後非常に注目されるようになったのが、我々が今や仕事を含め日常的に使うようになったソーシャルプラットフォームです。その上で広がる無数のアプリケーション群を支えているのがクラウドであることはもう皆さんもご存知かもしれません。ゲームを含む非常に多くのアプリケーションが今やクラウドの上にホストされ、日々新しいユーザ体験を我々に提供してくれています。リリースまでのスピードが求められるソーシャルアプリケーション。そのスピード開発がクラウドアプリケーション構築で求められています。

そんなクラウドへアクセスするクライアントが、今やデスクトップPCに代わりスマートフォンになったと言っても過言ではありません。iPhoneに代表されるiOS、国内メーカーも参入を開始したAndroidに続き、2011年8月に国内でもWindows Phoneが発売され、主要なスマートフォンラインナップが日本でも揃ってきました。

本連載ではMicrosoftが提供するクラウド⁠Windows Azureプラットフォーム⁠と、同じくMicrosoftが提供する⁠Windows Phone⁠デバイスに焦点を置き、この2つを組み合わせたアプリケーション・サービス開発について取り上げていきます。

第1回目となる本記事ではWindows AzureプラットフォームとWindows Phone、それぞれの技術概要について紹介していきます。

Windows Azureプラットフォームとは

Windows Azureプラットフォームはマイクロソフトが提供するクラウドサービスです。コンピューティング、データベース、ストレージなどで構成されています。

中心となるのがWindows Azureコンピューティングで、Webアプリケーションサーバに相当するWebロールとバックグラウンド処理を実行するワーカーロールの2つを用いてクラウドアプリケーションを構築します。WebロールやワーカーロールのアプリケーションはもちろんVisual StudioでC#やVisual Basicを用いて開発を行う事ができ、.NET開発ノウハウのある方は、その資産の多くを流用することができます。

またデータベースとしてSQL Azureが提供されており、ポピュラーなSQLベースでのデータベース開発をクラウドスケールでもこれまでに近い開発スタイルで行う事が可能になっています。

これら以外には、仮想マシーンを提供するVMロール、CDN、キャッシュ、仮想ネットワーク、サービスバス、アクセスコントロールなどの機能群をまとめたWindows Azure AppFabricが存在します。

Windows Azureストレージとは

Windows Azureストレージはクラウドならではのスケーラビリティや耐久性を有するストレージで主にBLOB、キュー、テーブルの3つのサービスで構成されています。これらのストレージにはWindows Azureアプリケーション開発で用いられる開発ツールであるWindows Azure SDKやREST、RESTアクセス処理を使いやすくしたスマートフォン向け開発ツールであるWindows Azure Toolkit for Android/iOS/ Windows Phoneの主に3つの方法でアクセスすることができます。

BLOBは静止画や動画、HTMLやJavaScriptなどの静的なファイルを保存しておくストレージになります。フォルダに相当する「コンテナ」を作成することができ、コンテナごとにアクセス制御を行うことが可能です。BLOBのデータ1つ1つにはURLが割り当てられるので、フルアクセスのオブジェクトはHTTPによるアクセスで簡単に取得できます。

キューは待ち行列のストレージで、メッセージを通じてWebロールとワーカーロール間などを繋ぎ、互いに連携するアプリケーション間を疎結合にすることができます。

テーブルはいわゆるKVS(Key-Value Storage)でRDBであるSQL Azureとは異なり、キーと値のペアでデータを格納します。

Windows Phoneとは

Microsoftがスマートフォンプラットフォームとしてゼロからすべてを一新して開発したのがWindows Phoneです。OSのバージョンとしてはWindows Phone 7が最初のバージョンで、日本国内でリリースされた端末に搭載されたバージョンがコードネームMangoと呼ばれるOSでWindows Phone 7.1が搭載されています。

※:OSや後述のWindows Phone SDKのバージョンは7.1で、スマートフォン端末でのバージョンの呼び方はWindows Phone 7.5になりますが、同じものです。

Windows PhoneではネイティブアプリケーションをSilverlight(Silverlight for Windows Phone)とXNAによって開発します。Silverlightはこれまではデスクトップブラウザ向けのRIA開発で用いられてきた開発技術で、Windows Phoneの滑らかな画面遷移や、美麗な動画再生などを実現しています。Silverlightベースのアプリケーション開発では、画面構成を記述するタグベースのマークアップ言語であるXAMLとロジックを記述するC#またはVisual Basicを用いてアプリケーションを開発します。

Windows Phoneの代名詞ともいえるPanoramaレイアウトの例が下記になります。複数の画面が横1列に並んでおり、フリックによって非常に滑らかに画面遷移を行うことができます。Windows Phoneでは、XAMLを用いることにより、Panoramaアプリケーションも簡単に構築できます。

図1 Panoramaアプリケーション
図1 Panoramaアプリケーション

Windows Phone SDKとは

Windows Phone開発に利用する開発ツールはすべて「Windows Phone SDK」にまとめられています。本記事執筆時点の最新バージョンはWindows Phone SDK 7.1で主に以下のツールで構成されています。

  • Visual Studio 2010 Express for Windows Phone
  • Expression Blend 4 Express for Windows Phone
  • Windows Phone Emulator
  • Windows Phone SDK 7.1 Assemblies
  • Silverlight 4 SDK

最初の2つのツールがWindows Phoneアプリケーション開発の中心となるツールです。Visual Studio 2010 ExpressはC#やVisual Basicを用いたロジック開発に用いられ、Expresson Blend 4 ExpressはXAMLを用いた画面の開発に用いられます。Windows Phone向けアプリケーション開発を行う場合は、上記アプリケーションを無料で利用できます。もちろん有償版のVisual Studio 2010、Expression Blend 4がある場合は、Windows Phone SDKインストール時に既存開発環境がWindows Phone対応に自動アップグレードされます。

また、Windows Phone SDKには、エミュレータを中心とした各種開発ツールが同梱されています。

図2 Visual Studio 2010とエミュレータ
図2 Visual Studio 2010とエミュレータ

Windows Phoneアプリケーションの設計

Windows Phoneアプリケーションがどのように設計、構築されているかをご紹介していきましょう。図3は標準的なWindows Azureと連携するアプリケーションの構成の1つです。Windows PhoneアプリケーションはこのようにMVCで構成できます。

図3 Windows Phoneアプリケーション内の構成
図3 Windows Phoneアプリケーション内の構成

ViewはXMLベースのマークアップ言語であるXAMLで構成されます。ボタンやデータグリッドなどのUIコントロール、GridやCanvasなどのレイアウトコントロール、画面構成要素に対するスタイルなどをタグベースで記述できる言語です。また、画面構成要素に対するアニメーション「Storyboard」もタグベースで記述できます。XAMLは画面のUXを作り込んでいくと必ず膨大な行数のファイルになるため、Expression BlendによるGUI開発を中心にXAMLの開発を行う事をお勧めしています。

ControllerはコードビハインドでViewからのイベントを受け取り、適切なModelの呼び出しを行って、処理結果を再度Viewに返します。Windows PhoneではC#またはVisual Basicを用いて記述します。開発は主にVisual Studioで行います。

上記の矢印はコードで明示的にデータのフローを制御しているイメージを表しています。Windows Phone開発ではXAMLとコードビハインドのクラスファイルは一体化しており、相互にプロパティやメソッドを参照することが可能です。

Modelはデータエンティティです。Windows Azureを中心としたクラウドサービスにアクセスしたり、ローカルデータベース(SQL Server CE)やスマートフォンデバイス情報にアクセスしたりして、そのデータを取得・保持します。シンプルなアプリケーションの場合はこのModelの処理はコードビハインド内に記述されることもありますし、複雑なアプリケーションの場合はこのModelが複雑なクラス構成にある場合もあります。

ControllerとModelとのやりとりは非同期の処理になる場合があります。この非同期処理はDelegateを用いて実装されます。とくに通信処理は同期処理で記述できませんので、非同期処理未経験の方は、Delegateを用いた非同期処理の実装を習得することが重要になります。

※:Windows Phoneでは最初に作成するVisual StudioのプロジェクトテンプレートによりMVVM型の開発を行うものもありますが、本連載では図3のアプリケーション構成を採用してサンプルアプリケーションを紹介していく予定です。

Windows Azureプラットフォームによるクラウドサービスの構成

主に、Windows AzureのWebロールとワーカーロール、そしてAzure ストレージを利用した一般的なシステム構成をご紹介します。

図4 Windows Azureプラットフォーム内の構成
図4 Windows Azureプラットフォーム内の構成

Windows PhoneからWebロールにリクエストが投げられ、主にWebロール内でビジネスロジックが実行されます。バッチ処理や重たい処理はワーカーロールで処理を行います。図4のようにWebロールとワーカーロール間の命令系統はキューを、データのやりとりはBLOBやテーブルを介することにより、Webロールとワーカーロールが疎結合で実現されます。

データはBLOBとKVS型ストレージであるテーブルそれぞれでデータの種類に応じで使い分けます。ワーカーロールはキューを監視し、Webロールからメッセージが投げられると、適切なデータをBLOBやテーブルから受け取りつつ、ビジネスロジックを実行し、その処理結果をBLOBやテーブルに格納していきます。

Windows PhoneからはBLOB(やテーブル)に直接アクセスすることもでき、サービスの呼び出しはWebロールに対してリクエストを行い、画像ファイルなどの静的データの取得はBLOBに直接取りに行くのが一般的です。

最後に

Windows AzureとWindows Phone のスマートフォン×クラウドの組み合わせに関して概要をご紹介してきました。次回以降はより具体的にWindows AzureとWindows Phoneを用いたアプリケーション開発に関して、ご紹介していく予定です。

※:Windows Azureプラットフォームは無料で試すことが可能です。また、MSDNサブスクリプション会員であれば、かなりの枠を無料で利用可能です。これを機に試してみてはいかがでしょうか。

おすすめ記事

記事・ニュース一覧