Windows ストア アプリ開発におけるセキュリティのベスト プラクティス

Windows ストア アプリ用のアプリ プラットフォームを開発するに当たり、私たちが主要な目標の 1 つとしたのが、ユーザーがアプリの動作を信頼できるようにすることでした。たとえば、アプリが予期したとおりに機能し、他のアプリと共存し、クリーンにアンインストールできることです。この信頼を確立できるかどうかは、Windows ストアの登録に始まり、滞りのないインストールおよびアンインストール、位置情報と Web カメラの使用の了承、アプリが Windows ストアの提出条件を満たしているかどうかをテストする Windows アプリ認定キットにいたるまで、さまざまな要素がかかわっています。ユーザーの信頼は、たった 1 つの機能やプロセス、品質によってもたらされるのではなく、さまざまな要素を総合した上に成立します。だからこそ、ユーザーはエンド ツー エンドのプロセスを信頼して操作できるのです。私たちのアプローチについては、記事「信頼できる Metro スタイル アプリを提供する」で詳しく説明しました。 今回は、安全でセキュリティで保護されたアプリについてと、アプリに対するユーザーの信頼を確立するための方法について具体的に説明します。今日のアプリは、財務記録からかけがえのないプライベートな写真まで、重要なユーザー データを保持していることは珍しくありません。これらのデータは多くのユーザーの生活に密着しており、当然これらのデータの安全はアプリによって確保されるものと考えられています。最小限のデータしか保持しないアプリであっても、意図されたとおりに機能し、他のアプリに干渉しないものとユーザーは考えます。 ユーザーの信頼を確立し、時を経ても変わらずにユーザーに満足してもらうには、セキュリティのベスト プラクティスをアプリに実装する必要があります。さいわい、一般的なセキュリティのベスト プラクティスは実装しやすく、アプリにセキュリティ保護を追加することは難しくありません。また、アプリとそのデータを他のアプリから分離できる一意のアプリ コンテナーのコンテキストでアプリを実行することもできます。アプリ コンテナーを使うと、データや設定を格納するアプリ固有のストアも含めて、アプリ専用の環境を用意できます。 Windows 8 と Visual Studio 2012 は、アプリの脆弱性を最小限に抑え、一般的なセキュリティの問題を緩和するための API、コントロール、およびツールを提供しています。完璧なプラットフォームなど存在しませんが、さまざまな要素を組み合わせることですばらしいアプリを開発できること、また、このプラットフォームは時と共に進化することは間違いありません。この記事では、より安全でセキュリティの高いエクスペリエンスをユーザーに提供できるように、アプリを強化するためのさまざまなヒントやベスト プラクティスを紹介します。 それでは始めましょう。 ヒント 1 – Visual Studio を使ってコンパイルする Windows 8 からは、Visual Studio 2012 でアプリをコンパイルするだけで、さまざまな既存のベスト プラクティスが既定で有効になるようにしました。Visual Studio 2012 を使ってコンパイルすると、一般的な攻撃からアプリを保護するセキュリティ テクノロジ (/GS、ASLR、DEP、SeHOP)…

0

アプリからの共有

共有とは Windows 8 では、ユーザーにとってどこからでも実行でき、利用できて当然だと見なされる機能です。あるアプリを使っていて、ぜひ友達と共有したい、別のアプリで使いたいと思うコンテンツが見つかることはよくあります。開発者は、共有コントラクトを使うことで、当然と見なされているこの機能を提供できます。共有コントラクトは、軽量でコンテキストに応じて動作するシンプルなモデルで、アプリ間の共有を実現します。 記事「他のアプリより目立つ Metro スタイル アプリを作成する」で紹介した Food with Friends アプリはご存じでしょうか。この記事では Food with Friends を例にして、アプリを便利な共有ソースに変える方法について詳しく説明しています。アプリのビュー、階層、および “セールス ポイント” を確認することで、便利な共有ソース エクスペリエンスを構築するための設計上および技術上の決定を行うことができます。 Food with Friends のビューと階層 共有とは何か、またそれがなぜ重要であるのか? ブログ記事「アプリ バーによるオンデマンド UI の活用」で触れたように、Windows 8 では、検索、共有、設定やデバイスへのアクセスなど、さまざまなアプリや Windows からよく実行される操作への便利なエントリ ポイントとして “チャーム” が導入されました。コントラクトは、このような操作へのすばやいアクセスを実現するエントリ ポイントを活用し、アプリのコンテンツの魅力を引き出します。共有はコントラクトの一種であり、ユーザーがアプリのコンテンツを別のアプリと共有できるようにして、コンテンツの活用の幅を広げることを目的としたものです。 Windows のエンド ツー エンドの共有エクスペリエンスには、2 つの構成要素があります。第 1 の構成要素はソース アプリであり、コンテンツを各種形式で提供します。第 2 の構成要素は、特定の形式を認識するための登録を行うターゲット アプリであり、共有するコンテンツの受け入れ先になります。Windows は共有コントラクトを利用して、ソース アプリとターゲット アプリ間の通信チャネルを確立します。共有ソースとなるアプリでは共有チャームを使うことで、このアプリのコンテンツを利用できる他のアプリ、友人、サイトなどを共有ウィンドウで確認でき、安心して共有操作を実行できます。以下に例を示します。 ソース アプリ (ここでは Internet…

0

シンプルで安全なアプリ パッケージをデザインする – APPX

私たちが新しい Windows 8 開発プラットフォームの作業に着手したとき、最初に直面した疑問の 1 つが「どのようにしてアプリをシンプルかつ安全な形式にパッケージ化するのか」ということでした。Windows 8 より前は、Windows インストーラー (英語) および ClickOnce という 2 つの主要なインストール テクノロジがありました。ブログ記事「信頼できる Metro スタイル アプリを提供する」で説明したように、開発者がアプリのインストールや更新の複雑さを管理するのに役立つ製品が数多く用意されています。しかし、それでもアプリのパッケージ化、インストール、更新は、開発者とエンド ユーザーにとって面倒な作業です。アプリのパッケージ化と展開を行う主な目標は、インストール スクリプトの必要を完全になくし、プロセスをより簡単にすることでした。 さらに、Windows ストア アプリには、ネイティブ コードやマネージ コードという既存のテクノロジと、Windows ランタイムをとおして提供される新しいテクノロジの両方をサポートするという課題がありました。さらに重要なことですが、私たちは新しい開発者グループにもアプリ構築の扉を開きたいと思いました。優れた新しいアイデアを持ちながらも、アプリの作成を学習し始めたばかりの開発者たちです。開発者にとって使いやすい何かが必要でした。さまざまなアプリ テクノロジをサポートする何か、パッケージ化、インストール、更新の効率を上げる何か、安全で理想的でシンプルな何かです。願い事のリストは長いものになりました。その答えが Windows 8 APPX (“.appx”) アプリ パッケージ形式です。 シンプル 私たちは、シンプルさを保つことを重視しました。以前のインストーラー テクノロジでは、インストール スクリプトの記述方法を学習するか、特別なツールを使ってアプリを特殊なバイナリ形式に組み込む必要がありました。Windows ストア アプリの場合、私たちは一歩立ち戻って、別の標準を生み出すのではなく既存の標準の上に構築することを目指しました。あらゆる既知のアプリ パッケージ化テクノロジの特徴をまとめて 1 つ 1 つよく調べ、さまざまな機能の長所短所を比較検討しました。話し合いを重ねた後、シンプルであってもよく使われている基本である ZIP に決めました。 ZIP はよく使われていますが、1989 年前後からある古いテクノロジであり、良い点も悪い点もあります。ZIP の良い点は、広い範囲で知られていてサポートされていることですが、最近の Web や XML など、多くの新しいテクノロジの進歩よりも以前から存在することは必ずしも良いことではありません。さらに、ZIP…

0

Windows 8 アプリ (および Web サイト) から優れたリモート再生エクスペリエンスを有効にする

リモート再生の概要 リモート再生とは、アプリから Xbox やその他のサポートされているデバイスへ、音楽、写真、ビデオをホーム ネットワーク経由でストリーミングできるようにする機能です。皆さんのアプリから大画面のテレビへ、写真やビデオを簡単に出力できるようになったところを想像してみてください。あるいは、アプリからリビング ルームのスピーカーへ音楽を流すことができたらどうでしょうか。リモート再生コントラクトを使えば、このようなシナリオを皆さんのアプリで簡単に実現できるのです。これは、リビング ルームでのアプリの魅力を高める強力な手段の 1 つです。 私たちは、ユーザー、開発者、そしてデバイスにエンド ツー エンドの優れたエクスペリエンスを提供するため、次のようにリモート再生を設計しました。 ユーザー: 共有が有効になっているネットワーク (ホーム ネットワークなど) では、Windows 認定を受けたリモート再生デバイスが Windows 8 によって自動的に検出され、インストールされます。オペレーティング システムには、スワイプしてチャームを表示し、デバイス チャームでデバイスをタップするという一貫したユーザー エクスペリエンスが備わっています。サポートされるアプリであれば、どれでも同じ操作でリモート再生を開始できます。ミュージック アプリ、ビデオ アプリ、フォト アプリなど、メディアが中心となる Microsoft 製のアプリにはすべて、リモート再生エクスペリエンスが組み込まれています。リモート再生コントラクトは Internet Explorer 10 にも実装されているので、Web ページから写真や HTML5 の音楽をストリーミングすることもできます。 開発者: 開発者にとってのリモート再生コントラクトは、基盤となるメディア ストリーミング テクノロジ (プロトコル、フォーマット照合、トランスコードなど) の高度な抽象化であり、さまざまなアプリでリモート再生エクスペリエンスをすばやく簡単に実装 (およびテスト) できるようにするものです。すべてのアプリ (および IE で表示される HTML5 Web ページ) では、基本的なエクスペリエンスが既定で有効になりますが、後で調整することも除外することもできます。 デバイス: Windows 8 のリモート再生エクスペリエンスは、Windows…

0

Windows 8 アプリのユーザー エクスペリエンス統合テスト

Windows ストア アプリのテストに関するブログ記事では、アプリを複数の実行状態に分けて考え、それぞれの状態でどのようなテストを行う必要があるかについてお話ししました。また、Windows 8 ユーザー エクスペリエンスの一部の側面について取り上げ、それがアプリの実行環境にどのように影響するかも説明しました。今回は、新しいユーザー エクスペリエンスについてもう少し掘り下げ、私たちが既存のアプリをテストしたときの経験から、皆さんのアプリにも当てはまる可能性のある興味深い操作やシナリオに焦点を当てたいと思います。そして、どうすればアプリを確実に正しく動作させることができるかを説明していきます。 一般的なレイアウトと動作 Windows 8 には、イマーシブで魅力的なアプリの作成を可能にする優れた新機能が搭載されています。アプリの初期化中にはスプラッシュ スクリーンが表示され、それがユーザーにとってのアプリの第一印象を左右します。アプリが起動して実行状態になったら、ユーザーは、画面の回転やスケーリング、スナップ表示と全画面表示の切り替えをいつでも行うことができます。さらに重要な点として、これらのイベントは同時に発生したり、間隔を空けずに連続で発生したりする可能性があります。たとえば、アプリのスプラッシュ スクリーンの表示中に画面の向きが変わることもあれば、ビューのスナップと共にデバイスがプロジェクターに接続されてスケーリングが変更されることもあり得ます。ここでは、それぞれのイベントにおいて特に注意すべき問題について、もう少し詳しく見ていきましょう。 スプラッシュ スクリーン スプラッシュ スクリーン機能を使うと、システムが初回使用に備えてアプリを初期化しているときや、バック スタックにある中断状態のアプリを再開するときに、アプリでアクティビティを表示できるようになります。スプラッシュ スクリーンが正しく表示されることを確かめるには、縦向きと横向きの両方のモードにおいて、アプリを全画面表示で起動し、スプラッシュ スクリーンが正しく (通常は中央に) 配置されること、アニメーションの問題や視覚的な問題がないことを検証します。スプラッシュ スクリーンに表示されるグラフィックスの解像度品質にも十分に注意して、端がぎざぎざに表示されたり、ピクセルが粗く見えたりしないことを確かめてください。 アプリで延長スプラッシュ スクリーンをサポートしている場合は、スプラッシュ スクリーンから拡張スプラッシュ スクリーンへの遷移が滑らかで一貫していることを検証します。特に、アイコンの位置の変化や画面のフラッシュなどのわずらわしい現象に注意してください。 回転 回転は、アプリの実行中、アプリが中断状態にある場合も含めて、いつでも行われる可能性があります。UI の各状態をチェックするときには、アプリが向きの変更に適切に対応することを検証してください。特に、アプリのユーザー エクスペリエンスを低下させる可能性のあるレイアウトとクリッピングの問題に注意が必要です。また、向きが変わるときにコンテンツのジャンプやフラッシュが発生しないことも確かめてください。 アプリで自動回転の設定を使っている場合は、ユーザーがアプリを起動したとき、またはそのアプリに切り替えたとき、システムの向きがアプリの回転設定に合わせて変更されることを検証します。さらに、逆回転の設定でアプリを使用できることも確かめます。たとえば、自動回転の設定を横向きにしている場合は、横向きと反転した横向きの両方でアプリが正しく表示され、機能することを検証します。 アプリのテストに使用できる適切なハードウェアがない場合は、Visual Studio シミュレーターを使って回転をシミュレートすることができます。テストでシミュレーターを使う方法について詳しくは、「Visual Studio 2012 を使った Windows 8 アプリのテスト」をご覧ください。 スケーリング Windows 8 では、サポートされているさまざまなピクセル密度のハードウェアでタッチ機能とユーザビリティを維持できるように、アプリが自動的にスケーリングされます。このため、100%、140%、180% の各スケールで、アプリのユーザー エクスペリエンスを検証する必要があります。UI の各状態をチェックするときには、どのスケーリング構成でもアプリが正しく表示されることを確かめてください。 Visual Studio シミュレーターで次の設定を使うと、サポートされている一般的なスケールでアプリをテストすることができます。 100% スケール – 10.6…

0

アプリ開発者のための Windows Store App Labs が公開されました

本日は、30 以上の都市で開催されている、開発者、デザイナー、経営者や起業家など、アプリ開発にかかわるすべての皆さんのために Microsoft が開設した Windows Store App Labs (英語) をご紹介いたします。Windows Store App Labs では、最新の Windows 8 デバイスに実際に触れ、Windows エキスパートに技術的なアドバイスを聞き、最先端で活躍するデザイナーやデジタル マーケティング企業のデザイン ガイダンスを知ることができます。これらはすべて、無料でご利用いただけます。 最新の Windows 8 デバイスで実際にテストしてください ラボには最新の Windows 8 デバイスを揃えました。フォーム ファクターも、Microsoft Surface (英語)、Ultrabook、オールインワン型などの Windows RT タブレットなどを各種取り揃えているので、さまざまな画面サイズ、入力方式、アーキテクチャで皆さんのアプリを試していただけます。  皆さんのアプリを実行してテストしていただけるよう、Windows 8 デバイスを各種のフォーム ファクターで用意いたしました。 技術面のアドバイスは Windows 8 エキスパートから アプリを Microsoft の Windows エキスパートにお見せいただいて、必要なアドバイスを彼らから直接聞くことができます。皆さんのアプリが Windows ストアに無事提出されるよう、コーディングに関するヒントでお手伝いします。 デザインのアドバイスは、最先端で活躍するデザインのプロフェッショナルから アプリをもっと目立たせたいなどのデザインに関するヒントは、デザイナーやデジタル マーケティング企業に聞きましょう。アプリの試作版や完全版をお見せいただければ、アプリのレイアウト、ライブ タイル、ナビゲーション、UI 要素などにどのように手を入れればよいかアドバイスさせていただきます。 Windows…

0

XAML および C# を使ってカスタム コントロールを構築する

既にご存じかもしれませんが、Windows 8 XAML プラットフォームの最も強力な機能の 1 つは、非常に柔軟にカスタム コントロールを作成できることです。XAML には、機能性が高く、カスタマイズ可能なコントロールを簡単に作成できる、依存関係プロパティやコントロール テンプレートなどの機能があります。 前回の記事「JavaScript 用 Windows ライブラリ (WinJS) を使ってカスタム コントロールを構築する」では、Jordan Matthiesen が HelloWorld カスタム コントロールを作成する手順を説明しました。今回の記事では、同じコントロールを XAML で作成する手順を説明します。再利用可能なカスタム コントロールの作成に必要なテクニックと概念を紹介し、コントロールのスタイルを設定するテンプレートの作成方法を説明します。また、依存関係プロパティなどの概念を紹介し、カスタムの Generic.xaml ファイルを使って既定のコントロール テンプレートを定義する暗黙的なスタイルを作成する方法について説明します。 シンプルな XAML コントロール まず、Hello World コントロールを構築します。これは、Windows.UI.XAML.Controls.Control から派生したクラスです。Visual Studio で “空のプロジェクト” テンプレートを使って新しいプロジェクトを作成します。このプロジェクトには、「CustomControls」という名前を付けます。新しい項目テンプレートの追加ウィザードを使って、カスタム コントロールを追加します。 Visual Studio には、テンプレート コントロール用の項目テンプレートがあります。プロジェクトを右クリックして、[追加]、[新しい項目] の順に選択します。 [テンプレート コントロール] を選択して、コントロールの名前を「HelloWorld.cs」に このテンプレートにより、以下のクラスが作成されます。 public class HelloWorld : Control{ public HelloWorld()…

0

JavaScript 用 Windows ライブラリ (WinJS) を使ってカスタム コントロールを構築する

JavaScript を使って Windows ストア アプリを開発されたことがあれば、JavaScript 用 Windows ライブラリ (WinJS) をお使いになったことがあるのではないでしょうか。このライブラリには、Windows ストアの UX ガイドラインに従ったアプリをすばやく構築するうえで便利な CSS スタイル、JavaScript コントロール、およびユーティリティのセットが用意されています。WinJS が提供するユーティリティには関数セットが含まれており、これを使って開発するアプリのカスタム コントロールを作成できます。 JavaScript コントロールの作成には、任意のパターンやライブラリを使用できます。WinJS のライブラリ関数は、1 つの選択肢にすぎません。WinJS を使ってコントロールを構築する最大のメリットは、このライブラリの他のコントロールと整合性を保って連携できるカスタム コントロールを作成できる点です。カスタム コントロールの開発と操作のパターンは、WinJS.UI 名前空間の他のコントロールと同じです。 この記事では、構成可能なオプション、イベント、およびパブリック メソッドをサポートする、独自のコントロールを構築する方法を説明します。同様の XAML コントロールの開発にご興味がある場合は、近々公開予定の記事を参照してください。 HTML ページへの JavaScript ベースのコントロールの組み込み まず、WinJS コントロールをページに組み込む方法を再確認しましょう。それには 2 種類の方法があります。1 つは強制的な方法 (暗黙的に JavaScript のみを使用して処理する方法) で、もう 1 つは宣言的な方法 (HTML 要素に属性を追加して、HTML ページにコントロールを組み込む方法) です。後者の場合、ツールボックスからコントロールをドラッグするなど、ツールを使って設計時のエクスペリエンスを提供できます。詳細については、「クイック スタート: WinJS コントロールとスタイルの追加」を参照してください。 この記事では、WinJS で宣言型の処理モデルによりメリットが得られる JavaScript…

0

Visual Studio 2012 を使った Windows ストア アプリ開発のための多言語アプリ ツールキット

Windows 8 は、さらに多くのロケールに対応し、世界中でさらに便利に使用できるように設計されています。皆さんのような開発者の方と協力し、これまで以上に多くの地域で現地に即したアプリケーションをリリースすることで、Windows 8 が目指すこの “グローバル対応” のエクスペリエンスをより洗練させることができます。機械翻訳を使って翻訳するか、人間の翻訳者によってローカライズして、Windows ストア アプリの対応言語を増やすことで、展開する市場を拡大して、より多くのユーザーにアプリをアピールできます。アプリのグローバルな展開は常に優先事項の 1 つとして考えられていますが、Windows 8 なら、このプロセスが非常に容易になります。 Windows 8 向けの Visual Studio 2012 用拡張機能である多言語アプリ ツールキット (無料の Express バージョンもあります) を使うと、自分自身で Machine Translation サービスを使用するか、ローカライズ業者に依頼して、アプリを容易にローカライズできます。この記事では、アプリのローカライズにはそれに見合う価値があること示し、多言語アプリ ツールキットを使って容易にローカライズする手順を紹介します。 市場の機会 Windows 8 は 14 種類の新しい表示言語を含む 109 の言語で提供され、その結果 45 億人にアピールできる可能性があります。Windows ストアの登場で、200 を超える市場でアプリを販売できるようになりました。このうち、現地通貨での販売をサポートする市場は 70 余りあります。多言語アプリ ツールキット (MAT) を使うと、Windows がサポートする任意の言語でアプリのバージョンを作成でき、ストアがサポートする市場に展開できます。 MAT により多言語に対応することで、新しい市場への道が開かれるだけでなく、既存市場内での販売拡大も期待できるようになります。米国税調査局が実施した 2010 年の American Community Survey によると、米国内では…

1

Windows 8 で優れた印刷エクスペリエンスを開発する

Windows を刷新するにあたり、私たちは、ユーザー エクスペリエンス、開発者プラットフォーム、広範にわたるデバイス エコシステムなど、印刷のあらゆる側面と、全体としてすばらしいエクスペリエンスを提供するためにそれらをどのように連携させるかについて、改めて検討することにしました。この記事では、Windows 8 での印刷のユーザー エクスペリエンスと開発者プラットフォームについて概説します。また、アプリの要件に合わせて印刷のユーザー エクスペリエンスを調整する方法についても説明します。 Windows 8 アプリからの印刷 まず、Windows 8 での印刷のしくみを見ていきましょう。その後、各種アプリで印刷がどのように処理されるかを説明します。 Windows 8 の印刷は、印刷をサポートするアプリのコンテキストに応じて動作します。アプリは、印刷コントラクトに登録することで、印刷をサポートします。アプリで印刷をサポートするかどうかは、開発者が判断します。すべてのアプリが印刷を使用するわけではありません。たとえば、ゲームを開発している場合であれば、印刷は必要ないと判断することもあります。しかし、航空会社向けのアプリを開発している場合は、航空券の印刷は、チェックイン プロセスの重要な項目の 1 つになるでしょう。アプリで印刷をサポートするかどうか、また印刷を提供するのはどのような場合であるかは、開発者が自由に決めることができますが、ユーザーの期待を考慮する必要があります。ユーザーによってアプリからの印刷が期待されている場合は、アプリで印刷をサポートすることをお勧めします。 Windows 8 で印刷をするには、画面の右端から内側に向かってスワイプし、チャームを表示します。アプリで印刷がサポートされている場合、デバイス チャームをタップすると、コンピューターにインストールされているすべてのプリンターが表示されます。印刷に使うプリンターを選択すると、次のような印刷ウィンドウが表示されます。 印刷のフロー 印刷ウィンドウには、印刷内容のプレビューと、よく使われるプリンターの設定が表示されます。私たちが印刷機能について計画している段階で、印刷内容を印刷前に確認したいという要望が多くの方から寄せられました。Windows 8 の印刷プラットフォームでは、印刷ウィンドウで印刷コンテンツのプレビューを表示できるようになっています。したがって、アプリから独自の方法でプレビューを表示する必要がありません。この印刷プラットフォームではプレビューの表示を更新することもでき、印刷ウィンドウでプリンターの設定を変えるごとに、印刷結果がどうなるかをユーザーが確認できます。 既定の印刷エクスペリエンスを効率的にするため、印刷ウィンドウには既定で [印刷部数]、[印刷の向き]、[カラー] の 3 種類のプリンター設定しか表示されません。私たちの調査によると、これらは、印刷時にユーザーが最もよく変更されるプリンター設定です。これらの設定を表示することで、ユーザーが印刷ジョブの構成中に、最もよく使う設定にすぐにアクセスできます。アプリの開発者は、アプリに最適なエクスペリエンスを提供するため、印刷ウィンドウに表示する設定を制御できます。また、各設定の既定値を定義することもできます。 すべての Windows 8 アプリで、コンテンツの印刷には同じエクスペリエンスを使用します。したがって、ユーザーはあるアプリでの印刷方法がわかれば、すべてのアプリから印刷することができます。つまり、ユーザーは印刷機能を探し回ることも、アプリごとに印刷方法を新たに覚える必要もありません。 印刷コントラクト アプリは印刷コントラクトを使って、印刷プラットフォームと通信します。アプリは印刷するコンテンツを提供し、Windows は印刷エクスペリエンスと基盤のインフラストラクチャを提供します。アプリを印刷コントラクトに登録すると、デバイス チャームから印刷機能を利用できるようになるため、簡単に印刷機能にアクセスして使用できます。 すべての WinRT API など、印刷コントラクトは、任意の言語および UI フレームワークと連係できるように設計されています。したがって、HTML または XAML のいずれを使ってもコンテンツをレイアウトできます。アプリからのコンテンツ印刷の動作をさらに制御したい場合は、D2D や XPS テクノロジを使うこともできます。 アプリに印刷のサポートを追加する場合は、次の 2…

0