WindowsPhone7の開発環境を少し触って判ったこと

まだOSをアップデートしてVisual Studio 2010のプロジェクトテンプレートのクラス構成、ソースコードを見ているだけの段階だが、それでもAndroidの開発環境との違いがよく判る。それは開発環境、GUIデザイナの差であり、コントロール(ウィジェット)特にコンテナ(レイアウト)の作りである。

実際にやってみれば判ることだが、例えば以下のような、いくつかのウィジェット(テキスト、テキストボックス、ボタン)と、データを表示するリストボックス(リストビュー)がある画面を作ってみると良い。

Visual Studioには「Data Bound Application」という、この画面にほど近いテンプレートが用意されているが、それを差し引いたとしても、Eclipse + ADT UI Designerで同様の画面を作るのに比べて数分の一〜数十分の一の時間で出来てしまうだろう。

違いはVisual Studioが持つ強力なデザイナとコンテナUI(この画面でいうとGridと呼ばれるパネル)によるレイアウトの完成度にある。

むろんEclipse+ADT UI Designerも最近のバージョンアップにより操作性が格段に改善されており、熟練している開発者であればレイアウトとウィジェットの組合わせにより同様の画面をそれなりの時間で作れるのは否定しないが、それぞれのウィジェットが上位ウィジェット/レイアウトにどのように配置するか、マージンはどれだけ取るか等の細かいデザインでは、それぞれのプロパティに数値を入力して微調整するかlayout.xmlを直接編集するしか無いだろう。

しかしVisual Studio 2010であれば、予め用意されたコントロールとコンテナ/レイアウトを使う限り、殆どの調整は見たまま、デザイナの画面上で殆どの微調整が済んでしまう。もちろんこの程度の画面であればXAMLを編集する必要は無い。

このデザイナ上での表示品質ほぼそのままでエミュレータや実機で描画されるのである。これぞまさにWISYWIG。

今後更に見ていくことでデータバインディング機能の違いも表面化することだろう。

Androidの場合、ウィジェットとデータバインドするのは単純な配列やリストであり、それ以上はバインドのコンテキストのためのコードを書く必要がある(無論それを省力化するライブラリィはある)が、WindowsPhone7の場合、.NET Frameworkの基本機能にデータバインド機能としてオブジェクト、データモデルとユーザインタフェースの同期がサポートされており、データを扱うコードを書く手間を省くことができる。

AndroidとWindowsPhone7のアプリケーションで出来ることを比較すると恐らくはWindowsPhone7は制約も多く、アプリケーションで出来ることも限られてくるだろう※それは否定しない。 しかし、サーバの公開するAPIを叩く、取得したデータを表示する、編集する、サーバにポストする等の一般的な業務アプリケーションを開発できる訳で、ビジネス用途には必要十分であり制限はコンプライアンスの面でかえって助かるケースも多い。

ということでたった1日開発環境を一通り触っただけだが、企業内で閉じた業務アプリを作るならWindowsPhone7有利だと感じた。

むろんAndroidも負けておらずこれから更に開発環境の改善は進んでいくだろう。特にここ一年のADTの開発がSDK本体から分離して改善を進めているお陰か、飛躍的な進歩遂げているが、現状ではGUIと開発ツール周りはさすがはMS一日以上の長がある。(有償のツールなのだし出来が良くないと困るのだが)


※WindowsPhone7はAndroidSQLiteのようなデータベースを扱うことはできない。また、アプリケーションと結びつけられたストレージシステムは使えるが、 Androidが自らのLinuxプラットホームにアクセスするように、システムを通じたファイルシステムをアプリケーションから扱うこともできない。