Windopws Phone SilverLight 8.1 アプリをuniversal Appとして申請する場合のメモ

Windows8.1ストアアプリ側でInkManagerなどを使用したアプリを作成していた場合、WindopwsPhone SilverLight 8.1(以下WPSL8.1)で、アプリを作成しなければならなくなります。

このWPSL8.1アプリをユニバーサルアプリとして連携させる場合、ひと手間かかります。

sys000

上記のように同じソリューション内にWPSL8.1用のプロジェクトを作成するのが一般的だと思います。

作成はそのまま進めることで問題ないですが、そのままではアプリ登録時の検証でエラーが発生します。

sys001

WPSL8.1用の「Package.appxmanifest」をダブルクリックすると上記のように表示されるので、「パッケージ名」を登録済みWindowsストアアプリの「Package.appxmanifest」からコピーします。

次にWPSL8.1用「Package.appxmanifest」を右クリックし、「ファイルを開くアプリケーションを選択」>「ソースコード(テキスト)エディター」を選択して、XMLをテキストとして開きます。

sys002

「Identity」にある「Publisher=”CN=~”」をWindowsストアアプリの「Package.appxmanifest」、発行者に書かれている「CN=~」をコピーしてペーストします。

これらの書き換えはWindowsストアアプリが登録済みでなければできないので、WPSL8.1アプリを先行させている場合は、更新時に連携設定と書き換えを行う形になります。

WinRTベースのユニバーサルアプリを作成する場合は共有となり「Publisher=”CN=~”」の書き換えなどは必要ないので迷わず行えます。

今回はWPSL8.1アプリで説明しましたが、universal連携そのものはWP7.5/8アプリでも可能なようです。
おそらく同じような方法で連携設定を行うことになるのではないかと思いますが、自分は環境をWP8.1に移行していますので、検証できていないことをご了承ください。

Action<in T>のメモ

Action<in T>はdelegateで単一パラメーターの戻り値を持たないカプセルメソッド

public class Hoge : IDisposable
{
        Action<string> _hogehoge;

        public Hoge(Action<string> HOGEHOGE= null)
        {
                _hogehoge = HOGEHOGE;
        }

        void HogeHoge(string message)
        {
            if (_hogehoge != null)
            {
                _hogehoge(message);
            }
        }
}

上記のように宣言しておく

public class Main
{
        Hoge HOGE;

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            HOGE= new Hoge(async (m) => await Dispatcher.RunIdleAsync((o) => Statustext.Text = m));
        }
}

こんな感じで宣言しておけば、class HogeでHogeHogeにテキストを投げて表示Pageに表示することができます。

Dispatcher.RunIdleAsyncなので、コントロールに限らず定義可能なので使い道は多いと思う。

今回はクラス内のStatusを追いかけるのにstringを宣言してますけど、<T>なので他も可能です。

Visual Studio 2013 Update 2がリリースされた模様

RC版はすでに出ていて、開発/配布に制限はなかったですが、リリース版に更新したほうがいいでしょう。

今回の更新で「Apache Cordova」がサポートされたようです。
MicrosoftのBlogに記載があります。
Somasegar’s blog
Mobile-first, Cloud-first Development – Visual Studio 2013 Update 2 released, Visual Studio Apache Cordova Tooling preview and the future of .NET for Cloud and Server

CSS/HTML/JSで作成するアプリが「Apache Cordova」を利用することでマルチデバイス(Android、iOS)への展開が可能だそうです。

公開場所は下記のリンク先です。
Microsoft Visual Studio 2013 Update 2

ダウンロード先のファイルは差分updateファイルなので、フルインストールしたい場合はMSDNからDLですね。

Update 2はWindowsPhone8.1SDKが同梱されたり、universal Project Apps に向けた更新が行われています。

Microsoft Visual Studio Express 2013 with Update 2 for Windows
Visual Studio Express 2013のUpdate 2も配布が開始されています。
Download language に日本語もあるので、Expressで開発をという方はこちらのリンクからダウンロードしてインストールですね。

さて、何で英語ページなんだという話になると、日本のVisual Studioページが2012で止まっていて更新されていないためです。

まあ、開発者なら英語くらいというか、ニュアンスつかむくらいは可能ですしね、、、
ただ、新しい開発者への支援体制という意味では改善してほしいところですね。

Visual Studio 2013 Update 2 RCが公開

現在開催中のBuild 2014 に合わせて「Visual Studio 2013 Update 2 RC」が公開され、新たに「ユニバーサル アプリ」「WindowsPhone 8.1 アプリ」の開発が行えるようになりました。

newuniversalapps

ユニバーサルアプリはWindows8.1ストアアプリとWindowsPhone8.1アプリを同一コードで開発できるようになったテンプレートです。
今後は「XBox」も同一で行えるようにしていければというもののようです。

WindowsPhone8.1向けは、今後WP8.1を搭載した端末が4月末から5月にかけて出るようなのと、Lumia向けには夏にはWindowsPhone8から更新の形で、配布されるようです。
Lumia以外の端末に関してはいまのところ告知されていないようです。

ユニバーサルアプリですが、本当の意味で同一コードというわけではなく、同一ソリューションでプロジェクトが混在可能であり、PCL等による共通化をtemplateにしたという感じです。

hubuniapps

既存のコードを変換というのは手間になりそうな気配ですが、新規で作成したプロジェクトに移植という形であれば統一しやすいのではないかなーという感じです。

DirectX12(Direct3D12)がGDC2014で発表

DirectX11から5年ぶりのメジャーアップデート、DirectX12(Direct3D12)がGDC2014で正式に発表されました。(【GDC 2014】米MS、DirectX 12を発表。より“ダイレクト”な3D APIへ進化)

正式なリリースはまだ先ですが、今のところDirectX11GPU、ATI GCN、nVidia Fermi 、Intel Haswell以降、であればDirectX12も(ドライバ対応されれば)可能なようです。

Mobile分野ではQualcommがサポート表明しているようです。

今後さらにDirectX12に最適化された新GPUが発表されるのではないかと思います。

何が変わったかというところでは、Direct3Dのスレッド制御がよくなり、偏っていたスレッドが分散最適化、平準化され、これにより全体的に早くなっているようです。

MSDN Blogs > DirectX Developer Blog > DirectX 12 」に参考となる情報があり、「3DMark – Multi-thread scaling + 50% better CPU utilization」のところに比較が乗っています。

もちろんDirectX11ベースの物がDirectX12を入れて早くなるということではなく、DirectX12のAPIベースに移行(最適化)することで、各種オーバーヘッドの低減などの恩恵があり、早くなるということです。

なおリリース予定は、2015年のホリデーシーズンとのことですので、Windows8/8.1以降のOS対応ではないかと思いますが、Windows7も含まれるのかな?

現在DirectX12開発者先行アクセスが募集されていますので、興味のある方は申請してみてはどうでしょうか?
とはいえ、正規リリースが一年以上先なわけで、研究にしか使用できないのと、おそらくNDAによる公開制限がかかると思われますので、現状のDirectX11の習得が先かなともおもいます。

MantleなどのDirect3D対抗技術が出てきていますが、これまでのDirectX技術を利用して早くなるのであれば、それに越したことはないわけで、今後の公開が待たれます。

VS2013でストアアプリデバッグが少し変わった ※間違いがありました

山本康彦@BluewaterSoftさんからお教えいただいたのですが、「中断」「再開」「中断とシャットダウン」はVS2012からあり、デフォルトでは表示されていなかっただけだそうです。
アプリの終了方法ですが、「Win8.1では、下の方へドラッグしたら左右に振ってタイルを反転させる」を行わないと「スタートボタンを押した状態(中断)」になるそうです。
お教えいただきありがとうございます。

VS2012でストアアプリ(Windows8)をデバッグする際に、デバッグ中のアプリを通常通りの操作でドラッグして終了した場合、そのまま終了しデバッグも解除されました。

VS2013(Windows8.1)では現在のところこれで終了せずデバッグが実行中のままになります。
WindowsPhoneのデバッグのようにプロセス管理が握っており、「中断」「再開」「中断とシャットダウン」という項目が増えて、再開を追いやすくなっています。

これはかなりありがたい変更で、再開時の挙動を追うのがVS2012時は予測に頼る感じでしたが、WPのように再開時のトラブルを確認できるようになりました。

とはいえ、WPほど完全な終了処理からの復帰という感じではないため、プロセスが裏では終了している場合、再開はできないです。

デバッグを終了する場合は「中断とシャットダウン」を選択、または「デバッグの停止」でデバッグを抜けることができます。