Windows Phone 7でのSilverlightとXNA Game Studioの違い

Windows Phone 7は開発のベースとして2種類の選択肢がある。ひとつはSilverlightによるアプリケーション開発で、Expression Blendを使ったリッチなインターフェイスをデザインできる。もうひとつはXNA Game Studioによるアプリケーション開発で、Direct3Dを使った本格的なゲームを作ることができる。両者ともC#を使って実装することになるのだが、ベースとして使用できる機能が大きく異なっているため、用途に合わせて選択する必要がある。以下に2つの違いを述べる。

Silverlight XNA Game Studio
UIコントロール ×
ビデオの部分表示 ×
IEコントロール ×
ソフトウェアキーボード ×
3D描画
Content Pipelineへのアクセス ×
頂点シェーダーとピクセルシェーダーのハードウェア アクセラレーション ×
Direct3D ×

3DでSilverlightが△になっているのは、3D描画を直接行うことができないということで、Perspective 3Dなどを用いれば、スプライトを疑似的に3Dとして表現することは可能だ。

【参考文献】
マイクロソフト著『XNA Game Studio or Silverlight: Which Product is Right for ARTICLE Me?』
http://create.msdn.com/en-US/education/catalog/article/which_product_for_windows_phone
菅原 英治著『Silverlight 3、ここがすごい!』
http://www.atmarkit.co.jp/fdotnet/vblab/silverlight3intro/silverlight3intro_04.html

Windows Phone では PDF と XPS を読み込めない

Windows Phone で電子書籍アプリを開発しようと考えていたのだが、予想以上に困難なことが分かってきた。

iPhone アプリでは CloudReader や i文庫HD などに代表される多くのビューワーで PDF の読み込みをサポートしているが、それらは iPhone の描画エンジンである QuartzAPI を使って PDF を表示している。Quartz は PDF ベースの仕組みで設計されており、マイクロソフトXPS が内部的に WPF を用いてコントロールを描画するのと同じと言える。

そのため、iPhone アプリでは自分のアプリ内で自由に PDF を表示できるのだが、残念ながら Windows Phone にはそのようなライブラリは見当たらなかった。

Windows であれば XPS Document Writer を使って、PDF から XPS を出力することができる。これを用いて PDF の代わりにならないかと考えた。

こちらのサイトを参考にSilverlightとWPFでのXPSファイルの表示Silverlightから XPS を読み込むプログラムを書いてみたが、そもそも FixedDocument クラスが存在しないことに気づき、どうも Windows Phone では XPS の表示もままならない。

ここまで調査してみて、ビューワーとして利用できるのは WebBrowser を使った HTML の表示ぐらいで、あとはすべて自前で実装するしかなさそうだ。

個人的に Windows Phone には電子書籍としての利用方法を期待していたので、PDF も XPS も読み込めないとなると、本格的に iPhone に移行せざるを得なくなるのではないかと思う。
今のところマイクロソフトの発表を見ている限りでは、XNA Framework を用いたゲーム コンテンツの充実を重視しているようだが、そんなものはゲーム機を買ってきてやればよいものであり、「情報端末」としてのスマートフォンの本質とはそぐわないように思われる。

Windows Phone 開発ツール正式版のリリース予定日

The WindowsPhone Developer Blogによれば、ついにWindows Phone 開発ツールの正式版が9月16日にリリースされるようだ。10月にはマーケットプレイスへの申請が可能になるようだが、日本では年内にWindows Phone 7の発売予定がないため、しばらくは海外勢の様子をうかがう状況が続きそうだ。

WiMAX と DNS

今月から WiMAX を契約して使用しているのだが、長時間利用しているとやたらに DNS の解決に失敗してしまう。ブラウザーの更新をかけると DNS が解決されるようで Web サイトが表示されるのだが、頻繁に発生すると面倒になってくる。

そこで、Google が提供しているパブリック DNS「8.8.8.8」「8.8.4.4」を設定して利用したところ、問題は解決した。

WiMAXDNS がなぜこんなにお粗末なことになっているのかよく分からないが、そのうち改善されることを望もう。

Flash と iPhone

都内でアドビの事業説明会が行われた。
そこでは来月に発売を控える Adobe Creative Suite 5 についての紹介があったようだが、この製品の目玉機能の1つとして、Flash で作成したコンテンツを iPhone 用のプログラムに変換する Packager for iPhone という機能がある。

iPhone には Web ブラウザとして Safari がインストールされている。それに Flash Player を載せてもらえないことに業を煮やしたアドビは、Flash コンテンツをなんとか iPhone で動かそうと苦肉の策を考えた。それが Packager for iPhone である。

ところが今月になってアップルが iPhone SDK の規約を変更し、プログラムをコンバートして間接的に API へアクセスすることを禁止した。つまり先ほど紹介した Packager for iPhone規約違反となってしまったのだ。

これに肝をつぶしたアドビは、アップルを提訴することも視野に入れて水面下で様々な交渉を重ねたに違いない。

今日の事業説明会でそのことを記者から質問されると、Packager for iPhone の機能はそのままにして出荷するが、それらの機能は今後更新されないとしており、サポートする意思はないようだ。

iPhone SDK 規約変更の目的は、Flash の排撃であることは間違いない。しかしなぜそこまで Flash を忌避するのか。その理由はいくつか挙げられるが、もっとも大きな要因として App Store との競合を恐れたのではないかと考える。

アップルのエコシステムにおいて、App Store こそサービスの要である。しかしWeb ブラウザから Flash コンテンツが動作すると、無料のサービスが豊富にそろっているインターネットのコンテンツにユーザーが流れていく可能性がある。そうすると、App Store もまた無料のコンテンツを増やさなければダウンロードしてもらえなくなる。そのような悪循環を恐れているのではなかろうか。

パソコンでは無料であっても、携帯電話は有料でサービスが提供されていることが少なくない。これは、携帯のOSが閉じた仕組みで構成されており、外部と連動がほとんどできないことに起因する。つまりお金を払わないと、ユーザーは他に逃げ道がないのだ。ここに i-mode の成功があるわけだが、iPhone でも同様の戦略が見え隠れする。

ただし iPhonei-mode と異なるのは、その主要技術にはほとんど独自規格を使用していないことだ。
コンテンツの制作にもHTML5, CSS, JavaScript, H.264といった標準技術ですべて済む。iPad ではePub 形式も利用できる。さらには皮肉なことに PDF も使える。とはいっても、PDF は ISO 標準として公に認められているため、排除する必要がなかったか、もしくは取り除くにはあまりに重要な文書にまで利用されていることを認識しているからかもしれない。

Visual Studio 2010 日本語版で Silverlight 4 の開発ができない

Visual Studio 2010 日本語版が MSDN からダウンロードできるようになった。
喜び勇んでインストールしてみようと思ったものの、肝心の Silverlight 4 Tools for Visual Studio 2010 RC(日本語版)が出ていない。

一体いつ出るのやら…。

Visual Studio 2010 日本語版

Visual Studio 2010 の日本語版は 20 日に出るという話であったが、どうやら明日からダウンロードできるようだ。
すでに英語版で作業をしているのでそれほど逼迫している状況ではないが、微妙な作業で(新しく作成したコードのコメントが英語になっているなど)修正が必要になるので早く日本語版が使えるにこしたことはない。

現在以下の件について調査している。

コード カバレッジSilverlight Toolkit 2010 からの機能で、ざっと見たところまだ本格的には実装されておらず、プロジェクト ファイルを直接書き換えたりしなければならないようだ。今のところ簡単には使えなさそうに見える。

プロファイリングは現段階の Silverlight ではおそらくできないと思われる。

方々を調べてみても、Silverlight のテスト関連はまだ将来的に実装される機能として残されているものが多いようだ。