Windows 互換性ガイドブックを公開しました

お待たせしました。という方が正しいような気がしますが(何年も待たせるのという声が聞こえてきそうです)、Windows 8.1 と Windows Server 2012 R2 に対応した Windows 互換性ガイドブックの翻訳版を公開しました。この公開に合わせて、Windows 10 の互換性ガイドブックも Anniversary Update 関係で更新しています。 日本語版の互換性ガイドブックは、Technet の Windows 10 法人向け技術情報まとめ ページに掲載してあります。 何年も Windows 8.1 に対応した互換性ガイド ブックが公開されなかった経緯ですが、 Windows 8 と Windows Server 2012 互換性ガイドブックが、Windows 7 以前からのマイグレーション用に翻訳されて公開されていました。 Windows 8.1 がリリースされた時に、新しい互換性ガイドブックが翻訳されませんでした。 翻訳されなかったため、互換性ガイドブックのダウンロード センターのページでは、英語版を選択すると Windows 8.1 の Cookbook がダウンロードできて、日本語版を選択すると Windows 8 と Windows Server 2012 互換性ガイドブックのダウンロードができました。 ダウンロード センターのコンテンツの整理作業が行われた時に、日本語版のWindows 8…

0

UWP で廃止された UserInformation クラスについて

今更ですが、Windows 10 の UWP アプリで、Windows 8.1 のストア アプリとの比較で廃止予定の API があることに気が付きました。そのクラスは、以下になります。 UserInformation クラスWindows 8.1 までで使用できたクラスで、Windows 10 では正常に動作しなくなっています。 User クラスWindows 10 の UWP より提供された新しいクラスで、UserInformation を使用していた場合は置き換える必要があります。 この変更の背景ですが、Windows 10 ではプライバシー設定に新しく「アカウント情報」が追加されています。このアカウント情報には、User クラスを使ってアカウント情報へアクセスするアプリに許可を与える操作(ダイアログが表示されます)を行ったアプリが表示されます。また、User クラスを使用するアプリの場合は、Package.Appxmanifest の機能で「アカウント情報」を指定しておく必要があります。 プライバシー設定に「アカウント情報」が追加されたことにより、Windows 8.1 までのアプリの動作に影響を与えてしまいます。Windows 8.1 までは、UserInformation クラスを使ったアカウント情報へのアクセスが自由にできるようになっていました。というのは、プライバシー設定で「アカウント情報」という分類がなかったからです。Windows 10 では、「アカウント情報」が新設されたことにより、Windows 8.1 までのアプリは UserInformation クラスの GetDisplayNameAsync メソッドなどが値を返さなくなります。この問題を避けるには、アプリを UWP に作り替えるしか方法がありません。なぜなら、Package.Appxmanifest の機能で「アカウント情報」を指定できるのが UWP しかないということと Windows 10 SDK を使用しないと新しい User クラスへアクセスすることができないからです。 User…

2

Windows ランタイム コンポーネント ブローカーについて

de:code 2016 のサンプルに Windows ランタイム コンポネント ブローカーの UWP が含まれており、その使い方のドキュメントも含めていました。まだ日本語訳はありませんが、「Windows ランタイム コンポーネント ブローカー」の記事が公開されました。この記事には、 サンプル (IPC サーバーのみ) UWP 用のプロジェクト テンプレート へのリンクが含まれています。また、vcvarsall.bat の引数なども解説されています。このドキュメントの公開と同時期に、Windows ストア アプリのドキュメントも英語版が更新されています。 プロジェクト テンプレートでプロジェクトを作成して、プロジェクト ファイルを見れば、マネージ デスクトップ アプリとUWP で説明したプロジェクト ファイルへの変更が行われていることも確認することができます。 技術的には、Windows 10 には、デスクトップ ランタイム(.NET Framework)、Windows ストア アプリ ランタイム(Windows 8.1互換ランタイム)、UWP アプリ ランタイム(Windows ランタイム、.NET Core)の3種類があるので、Windows ランタイム コンポーネント ブローカー自体はデスクトップ ランタイムで動作しますので、動いて当たり前というものになりますが、テンプレートが公開されましたので、これを使用することで容易に Windows ランタイム コンポーネント ブローカーを Visual Studio 2015 で作成できるようになったということになります。  …

0

マネージ デスクトップ アプリと UWP

Windows ストア アプリの時は、「マネージ デスクトップ アプリと Windows ランタイム」というドキュメントがありました。Windows 10 の UWP アプリのランタイムをデスクトップから使う方法がないかと調べたので、その使い方を簡単にまとめます。 WPF アプリなどのプロジェクトを Visual Studio 2015 で作成します。 ソリューション エクスプローラで、プロジェクトをアンロードします。 アンロードしたプロジェクトのコンテキスト メニューより、コードの編集を行います。 <PropertyGroup> <TargetPlatformVersion>10.0.10586.0</TargetPlatformVersion> </PropertyGroup> 上記のコードをプロジェクト ファイルへ追加して、上書き保存します。 プロジェクトの再読み込みを行います。 参照の追加を行います。 C:\Program Files (x86)\Windows Kits\10\UnionMetadata\Windows.winmd と C:\Program Files (x86)\Microsoft SDKs\NETCoreSDK\System.Runtime.WindowsRuntime\4.0.10\lib\netcore50\System.Runtime.WindowsRuntime.dll の2つへ参照を設定します。 後は、必要なクラスを使用するだけです。 Windows.winmd は、Windows Runtime の参照用のメタデータになります。 System.Runtime.WindowsRuntime.dll が、Microsoft SDKs\NETCoreSDK になっている理由は、UWP アプリが .NET Core がランタイムになっているためです。Windows 8.1 までは、.NET Framework のサブセットという位置づけでしたので、C:\Program…

1

WPF の半透明の子ウィンドウの使い方について

.NET Framework 4.6 のリリースに伴って、WPF では 透過的な子ウィンドウのサポートが提供されました。具体的な使い方としては、WPF チームのブログの The Roadmap for WPF という記事の、コメント欄にサンプル コードがあります。 私も見落としていて、先週末に教えていただいたのですが(有難うございました。見落としていました)、このサンプルを動かすための条件があります。MSDN ライブラリーの.NET Framework の新機能には「Windows 8.1以降」という記述もありました。この透過的な子ウィンドウというのは、半透明なChild Window をサポートするというもので、具体的には HwndSourceParameters.UsesPerPixelTransparency プロパティを使用するというものになります。ドキュメント上の要件は、.NET Framework 4.6以上とだけ記述されていますが、私が確認した限りは Windows 8 以降で動作します。WPF Blogに掲載されていたコードを次に示します。 IntPtr parentWindowHandle = new WindowInteropHelper(this).Handle; HwndSourceParameters windowParams = new HwndSourceParameters(“SemiTransparentChildWindow”); windowParams.ParentWindow = parentWindowHandle; //int values of WS_CHLID, WS_CLIPCHILDREN, and WS_VISIBLE int styleParams = 0x40000000 | 0x02000000 |…

0

Windows ストア アプリ UX デザイン ガイドライン インデックス

Windows 、Windows Phone ストア アプリのためのユーザー エクスペリエンス ガイドラインは、Windows デベロッパー センターで公開されています。また、PDF にした情報も英語版は Windows デベロッパー センターで、日本語版の PDF は Windows ストア への道からダウンロードすることができます。これらのガイド ラインを公開してから、良く聞くのが分量が多いので読むのが大変という話になります。UX ガイドラインの目的は、自分が作成しようとするアプリに関連する事項だけを拾い読みすることであって、すべてを順守する必要は必ずしもない点になります。そこで、今回は UX ガイドラインのインデックスへのリンク集を記載します。この目的は、自分が作成するアプリのに関連しそうなガイドラインを素早く見つけることにあります。ゆっくり読みたい場合は、PDF 版をご活用ください。 Windows らしさ モダン デザイン エッジ ライブ タイル スプラッシュ スクリーン チャームとコントラクト ビジョン ビジョンの定義 レスポンシブ デザインとフォームファクター Windows Phone のプラットフォームとエコシステム 独創的なビジュアル ブランド レイアウト アニメーション 書体 アイコン 色 インタラクションと UX ナビゲーション パターン(Windows ストア アプリ) ナビゲーション、向き、ジェスチャ(Windows Phone…

0

パフォーマンスと診断ハブの使い方

先週末(12/20)は、.NET ラボにお邪魔して「パフォーマンス診断 Windows ストア アプリ」というテーマでお話をさせて頂きました。今回は、この時にお話しした内容と時間の関係で割愛したデモなども含めて記載します。お話した内容は、大きく分類すると以下の2種類になります。 パフォーマンスを設計段階から考慮する 設計したパフォーマンスを診断する Visual Studio パフォーマンスと診断ハブ Windows パフォーマンス ツールキット 全く同じものではありませんが、de:code でパフォーマンスに関するセッションがありましたので、以下の動画も参考にして下さい。 de:code Track 1 Devices トラック Windows アプリのデバッグ、パフォーマンス測定、テスト、Windows App Certification Kit (WACK) パフォーマンスを設計段階から考慮する パフォーマンスを意識してアプリを設計し、実装することがとても重要です。アプリをリリースしてから、パフォーマンス問題が発生してチューニングするのとでは、かかる工数自体が異なることから、パフォーマンスを意識して設計しなければなりません。 設計するときの前提知識として、CPU、メモリ、補助記憶装置、ネットワークなどにおける物理的な速度を意識して適切な組み合わせを考えることが重要であることと、一般的なレイア アーキテクチャが保守や構築しやすというメリットはあるが、パフォーマンスを重要視する局面ではパフォーマンス面で不利になることを説明しました。大切なことは、要求される事項に応じて適切にアーキテクチャを組み合わせて、パフォーマンス重視であれば意図的にアーキテクチャを無視することも必要になるということです。 たとえば、適切に設計されたコンポーネントの1つのメソッドを呼び出すと、マシン語レベルではcall命令が発行されます。call命令が発行されるということは、プログラム カウンタなどの様々な情報が呼び出された命令へと切り替わるわけです。これは、数回や100回程度であれば問題にならなくても(仮に、1msとして100msです)、数万の回数になるとしたらどうなるでしょう?(10秒の単位になりますよね)。パフォーマンスを向上させるということは、このような処理にかかる時間を削ることになりますから、設計が素晴らしいことと比例しないのがパフォーマンス向上という世界になるわけです。 このような世界がパフォーマンス向上になるわけですから、設計段階からパフォーマンス目標を明確にして、その目的達成のために様々な工夫をする必要があるわけです。たとえば、ユーザー インターフェースが関係する場合であれば「応答なし」の状態は、もっとも避けるべき状況になるわけです。この「応答なし」を避けるためには、UI スレッドと異なるスレッドで実行したり、処理状況を可視化したり、ユーザーの操作の合間に分散して処理させたりなどの様々な工夫が考えられますし、要求される状況におうじて適切に組み合わせる必要があります。このような様々な工夫をした結果、パフォーマンスを達成できているかを確認する作業が診断作業になるわけです。診断した結果から、目的が達成されているかどうかを分析し、達成できていなければボトルネックを分析し、プログラムに対処コードを組み込んで、その結果を診断するという作業を繰り返すことになります。これらの診断に使用できるツールが、Visual Studio パフォーマンスと診断ハブか Windows パフォーマンス ツールキットになるわけです。 Visual Studio パフォーマンスと診断ハブ 実際のデモで使用したコードは、「パフォーマンスと診断のページからの分析ツールの実行」を基にして、ETW のトレースを組み込んだものになります。最初に、Visual Studio を起動して、診断に使用するプロジェクトを開いておきます。そうして、[分析]-[パフォーマンスと診断]からパフォーマンスと診断ハブを起動します。 パフォーマンスと診断ハブで注意する点は、以下のようなことです。 ターゲット アプリケーションは、必ずリリースモードにしておくこと。 使用可能なツールの中で「メモリ使用量」、「JavaScriptメモリ」、「JavaScript関数の応答性」とその他の項目は排他的になるため、組み合わせることはできません。 ここでは、CPU 使用率だけにして開始ボタンをクリックします。そうすると、目的のアプリが起動します。 アプリで診断する操作を行ってから、Visual Studio…

0

イン プロセスの Windows ランタイム コンポーネントの作り方

以前にアプリ ブローカーの作り方の記事(その1、その2)を公開しました。今回は、アプリ ブローカーのような ランタイム ブローカーではなく、イン プロセス向けの Windows Runtime コンポーネントの作成方法を説明します。基になる題材は、Windows 8.1 サンプル パックにも含まれている 追記:アプリ ブローカーの説明をしたセッション動画が、公開されています。de:code Track1 Device  デスクトップ アプリケーションとWindows ストア アプリの連携このMVA コースでサンプル コードも公開しています。 Windows Runtime in-process component authoring with proxy/stub generation sample になります。 このサンプルは、クライアント(C++、C#、JavaScript) – ProxyStub – Windows ランタイム コンポーネント(サーバー) という構造になっています。このサンプルの作り方は以下のようになります。 空のソリューション(ProxyStubsForWinRTComponents)を作成します。 サーバーを ProxyStubsForWinRTComponents_server というプロジェクトで作成します。 [追加]-[新規プロジェクト]-[C#]-[ストア アプリ]-[Windows アプリ]-[Windows ランタイム コンポーネント] プロジェクトを作成します。 サンプルと同じように、BreadeServer.cs と OpenServer.cs を追加します(名前空間は、プロジェクトに合わせて修正しておきます)。 (私の場合は、IBread、IApplication、IOven…

0

WPF のロードマップ

本記事は、マイクロソフト本社の .NET Blogの記事を勝手に翻訳したものです。 元記事は、The Roadmap for WPF 2014/11/12 AM 7:37 私のオレオレ翻訳なので、翻訳の変更などはこのBlogのコメント欄にフィードバックをください。正確な情報は、オリジナルのBlogを参照するようにしてください。   2006年に WPF (.NET Framework 3.0) を紹介した時の反応は、とても素晴らしいものでした。なぜなら、企業、ISV、マイクロソフトのパートナーは、お客様向けのミッション クリティカル アプリケーションと素晴らしいバーティカル ソリューションを構築するビジネスの中心となる技術として選択してくれたからです。また、現在へ繋がる推進力にもなりました( Visual Studio 2013 で過去60日で開発された新規プロジェクトの 10% が WPF プロジェクトです。WPF は、データ中心のビジネス アプリを構築する情熱的で活力のあるコミュニティを持っています。最近の事例としては、私たちのパートナーである InterKnowlogy が開発した新しい WPF アプリケーションがあります。このアプリは、CNN のプロデューサーがオンエア中の投票におけるデータの構成と検証、中間結果のアップロードを行うために使用しています。投票データは、CNN のMagic Wallに表示されています。Magic Wallの開発には、マイクロソフトの Bing Pulse チームが協力しています。この記事では、WPF プラットフォームのロードマップを取り扱います。ロードマップには、次期 Visual Studio リリースのツールにおける機能強化と投資領域の優先順位が含まれています。 プラットフォームに対する投資領域 今年(2014年)の //build カンファレンスで行ったユーザー調査における示唆や数か月に渡る様々なマーケットで活躍する多くの開発者に対するインタビューを基にして、WPF をより素晴らしいプラットフォームにするための投資領域の優先順を以下に記載します。 パフォーマンス:WPF が、大規模で高パフォーマンスなアプリ(たとえば、Visual Studio や…

0

プログラミング Windows 第6版 下巻に向けて

「プログラミング Windows 第6版」という書籍を使用して、WPF の学習を補助するという目的で、上巻を WPF に置き換えて説明するというエントリーを以下のように記述しました。 XAML とは何か 第1章 マークアップとコード 第2章 XAML 構文 第3章 基本的なイベント処理 第4章 パネルを使った表示 第5章 コントロールとのやりとり 第6章 WinRT と MVVM 第7章 非同期性 第8章 アプリ バーとポップアップ 第9章 アニメーション 第10章 座標変換 第11章 3つのテンプレート 第12章 ページとナビゲーション そして、第1章の記事に書いた目標は、「下巻は自分で WPF に置き換えて学習ができるようになることです」ということでした。今回は、下巻に自分で取り組む場合の簡単な概要を示します。 第14章 ビットマップ WritableBitmap クラスを使用して、ビットマップ オブジェクトを作成する方法を説明しています。Windows 8.1 の話題では、RenderTargetBitmap を説明しています。 WPF XAML でも WritableBitmap クラスを同様に使用することができます。そして、WritableBitmap クラスは、Render メソッドをサポートしていますから、Visual を継承する…

0