あいてぃーとふぼふ

Windows Phone 7.5 対応時の問題点!

今回は「Windows Phone 7.0」のアプリケーションを「Windows Phone 7.5」にアップグレードする際に遭遇した問題とその解決策をご紹介します。以前に作成した「MetroGnome」というアプリをアップグレードしたのですが、なかなかに一筋縄ではいきませんでした…orz。

その1:実行時にビヘイビアやトリガーが登録できない!

前回の投稿でご紹介した通り、Visual Studioの「Windows Phone 7.1 にアップグレード」機能を利用すると、既存のプロジェクトをアップグレードすることが可能です。ただしこの際、アプリケーションの実行時に「型 ‘Behavior’ の値は、型 ‘BehaviorCollection’ のコレクションまたはディクショナリに追加できません。」のような例外が発生する場合があります。わたしが実際にアップグレードしたプロジェクトは、自作のビヘイビアやトリガーアクションなどを格納したライブラリプロジェクトだったのですが、上記のエラーはこれらのビヘイビアやトリガーアクションがアプリ実行時に参照されたときに発生しました。

ということで、結論から申しますと「Microsoft.Expression.Interactions」や「System.Windows.Interactivity」などの参照を一旦削除してから再度登録すると、上記のエラーは解消されました。どうやら参照していたアセンブリが古かったみたいです。このようなケースでは、ビルドエラーにならず、実行時にエラーが発生するようですね。根本的な原因は調べていませんが、おそらくSilverlightのバージョンが4になったことによる弊害か、あるいはWPSDK7.1のインストール前にExpression関連のモジュールをすべてアンインストールしたためだと思います (=`ェ´=;)ゞ

その2:SL+XNAプロジェクトがBlendで編集できない!

以前の投稿で「Windows Phone Silverlight/XNA アプリケーション」を利用する場合、XNAカテゴリから生成すると日本語のコメントが付加される旨をご紹介しました。しかしながら、このプロジェクトをExpression Blendで編集しようとした場合、「App.xaml」や「Game.xaml」で左図のように「XML タグ’Application’ に対応する終了タグがありません。」のようなエラーが多数発生します。まぁ日本語が文字化けしていることを見ると、文字コードが怪しいであろうことはすぐにお判りいただけると思います。

ということで調べてみたところ、上記のプロジェクトでは、日本語でコメントが記載されているファイルがことごとく「UTF-8N」で記述されていました。つまりファイルの先頭にBOMが付加されていないわけです。ちなみにBOMとは、エンディアンや文字コードの種別に利用される情報のことで、Expression BlendはこのBOMがないとファイルの文字コードを「UTF-8」であると識別できないようです。これにより、日本語のコメントがタグごと文字化けしてしまい、今回のエラーが発生してしまいます。このため、サクラエディタなどで「App.xaml」や「Game.xaml」を「BOM付きのUTF-8」で保存してあげれば問題は解決です。それにしても、RC版にしてはちょっと詰めが甘いかも…(ノω<;)

その3:既存のスタイルを上書きできない!

Silverlightアプリを開発する場合、「App.xaml」や「Generic.xaml」でスタイルを管理するのが一般的です。「MetroGnome」でも「PhoneTextTitle1Style」や「PhoneTextNormalStyle」などの既存のスタイルを、「App.xaml」内で再定義(同一名のスタイルを定義)したりしています。こうすると、開発時には既存のスタイルを利用し、開発が完了した後に一括してスタイルを変更できるので便利なんですよね~。しかしながら、Silverlight4ではどうやら既存のスタイルを再定義することができないようです。

Visual StudioやExpression Blendのデザイナではきちんと再定義したスタイルが反映されているのですが、いざアプリを実行すると既定のスタイルが反映されてしまいます。多分ソースコードでガリガリやれば回避できそうではありますが、今回は時間が惜しかったので、自作したスタイルの名前を変更して対応しました。う~ん…泥臭い(´・ω・`)

残すは不具合修正と公開作業!

ということで、あとは細かな不具合を修正して公開するのみです!できれば曲の追加とかもしたいのですが…しばらくはちょっと無理そうかもです(T△T)。1日まるまる時間が取れれば可能だと思うんですが…なかなかどうして…orz

Windows Phone SDK 7.1 RC リリース!

Windows Phone 7.5で動作するアプリケーションの開発環境として
Windows Phone SDK 7.1 RC (リリース候補)」がリリースされました!

いよいよGo Live!

このRC版は「Go Live」ライセンスとなっているため、開発したWP7.5対応アプリをMarketplaceに公開することが可能となりました。また、次期RTM版で仕様変更が発生した場合は、バージョンアップの手順も保証されます。さらにこのRC版は、英語版と共に日本語版が提供されています。つまり、本格的に現場レベルで利用可能なビルドとなったわけですね。おまけに、RC版となったことにより、ブログなどに開発環境のスクリーンショットを掲載することも可能になりました!やった~!≧∀≦)ノ

日本語対応は…あと一歩!

このRC版は、機能面でも色々と改善が見られます。たとえばSL+XNAの場合、プロジェクトテンプレートが「Windows Phone Silverlight/XNA アプリケーション」に統一されました。これらは、プロジェクトを作成する際に、SilverlightとXNAのどちらのカテゴリからも利用することが可能となっています。となると、生成されるプロジェクトも同一なのでしょうか?見てみましょう。

ご覧のとおり、生成されるプロジェクトは若干異なるようです。具体的には、XNAカテゴリから生成したプロジェクトは、コメントが日本語で記載されているのに対し、Silverlightカテゴリから生成したプロジェクトは、コメントが英語で記載されています。

…というわけで、SL+XNAで日本語コメント付きのプロジェクトを利用したい場合はXNAカテゴリから生成するようにしましょう!(´・ω・`)

ジューシーなサプライズ!それは…

昨日お話ししたWindowsPhone7に関する「ジューシー」なサプライズ…、それは「ベータ版Mangoの配布」と「開発環境のバージョンアップ」の2つのビックニュースでした!

ベータ版Mangoの配布!

AppHubに登録しており、かつ既に実機を持っている開発者に対して、WindowsPhone7の次期バージョンアップ版であるMangoのベータ版が配布されることが決定されました。

…確かにうれしいのですが、その際に秘密保持へ同意する必要がありまして、これによるとスクリーンショットなどの情報を第三者に公開することはできないようです。これは非常に残念です(T△T) 秘密保持が変更されてスクリーンショットはOKになりましたです!≧∀≦)ノ

もっとも、今回のMangoは日本語表示もできないようですので、ある意味ではエミュレータの方が多機能といえるかもしれません。このため、技術的な新機能やパフォーマンスの検証といった、本当に開発者向けのものとなりそうです。なお、対象となる開発者には別途アップデート手順を記載したメールが送付されてくるとのことですので、とりあえず気長に待ちましょう。

開発環境のバージョンアップ!

WP7アプリの開発環境がβ1からβ2にバージョンアップされました。…この期に及んで「β2」とかバージョン刻んでくるあたりに一抹の不安を覚えますが、β1のクオリティが今ひとつでしたのでこれはこれで安心できるかもです(汗。

このバージョンアップに伴い、開発環境の名称が「Windows Phone Developer Tools(WPDT)」から「Windows Phone SDK(WPSDK)」に変更されました。リリースノートを見る限りあまり多くの変更点はありませんが、小さな変更や改善がチラホラ見受けられましたので、以下に簡単なレビューを記載します。なお、最新のWPSDKのダウンロードはこちらからどうぞ。

Windows Phone SDK 7.1 Beta2

一部のプロジェクトテンプレート名が変更!

一部プロジェクトテンプレートの名称が変更されています。なお、生成されるプロジェクトの内容に違いはないようです。が、以下の後者に至っては作成される既定のプロジェクト名まで昔のままです。そこも直しておいてほしかったにゃ。

・「Windows Phone Task Scheduler Agent」→「Windows Phone Scheduled Task Agent」

・「Windows Phone Rich Graphics Application」→「Windows Phone Silverlight and XNA Application」

SL+XNAでアナライズが可能!

以前のβ1では、SL+XNAなアプリケーションで「Performance Ammalysis」を利用することはできませんでした。が、今回のβ2からはそれが可能になりました。実のところ、SL+XNAの肝であるUIElementRenderクラスは、使い方を誤ると簡単にメモリリークしてしまいますので、この対応は非常に嬉しい限りです。このように、β1では一部できなかったことがβ2で平然とできるようになっている…という感じの変更が多いように感じます。そこにシビれる!あこがれるゥ!

エミュレータの動作が軽快!

エミュレータの動作がスゴク軽快になってます~♪僕たちが大好きだったWPDT 7.0の頃のエミュレータが帰ってきたような感じです!(つД`) 他にも、キーボードの種類が追加されていていて、日本語でのQWARTY入力が可能になっていたりします。ただし、タスクの切り替え機能などは相変わらず使用できません。今回のβ2でも一部機能は未実装のままですが、β1で遭遇した不具合らしき現象もすべて解決されていますので、これなら開発にも十分耐えられるレベルに仕上がっていると思います。

まとめ!

ということで、このタイミングでようやっとMangoに関する表立った動きが出てきました。日本向けの対応もだいぶ見受けられるようになってきましたので、いよいよもって日本上陸も秒読みに入った印象が…そこはかとなく感じられないこともないような感じだったりしますよね!( ̄д ̄)