特集:Windows 8開発に向けて準備しよう Metroスタイル・アプリの開発者が知るべき3つのこと 2012/03/13 |
|
|
■その2: [機能の原則] ユーザーのプライバシーを守護すべし!
Metroスタイル・アプリはユーザーのプライベート情報を守っているという信頼を得られるように、機能を設計してほしい。
ユーザーの不信を招くような機能を設計してはいけない。また、プライベート情報を漏えいさせてしまうような用途に使えるAPIは厳しく制限されている。
●Metroスタイルで利用できるAPI
Metroスタイル・アプリで利用できるAPIは、次のようになっている。
- 新しく作られたWinRT(Windows Runtime)
- 従来の.NET Framework、COM、Win32APIの一部
従来のAPIは、一部しか使えない。また、バックグラウンド・タスクで利用できるのはWinRTだけとなる。
例えば(次の画面に示すように)、従来の.NET FrameworkのSystem.IO名前空間は使えるが、その中のStreamReaderクラスのコンストラクタからは、ファイル名を指定するオーバーロードがなくなっている。パスを指定してファイルを開くことはできないのだ。
ファイル名を指定してStreamを開くことはできない! |
「new StreamReader("readme.txt");」というコード()に対して、「無効な引数が含まれている」というエラーが報告されている()。 |
そこで、Metroスタイル・アプリでは、WinRTのFileOpenPickerクラス(Windows.Storage.Pickers名前空間)を使ってユーザーにファイルを指定してもらう。
|
|
List 1: FileOpenPickerクラスを使ってユーザーにファイルを指定してもらう例 |
実際にユーザーにファイルを指定してもらう画面は、次のようになる。ダイアログが出るのではなく、画面全体がFileOpenPickerクラスが提供するウィンドウに切り替わる。C:ドライブのルートが表示されているが、一部のフォルダしか見えていない。どんなファイルでも指定できるわけではないのである。
ユーザーにファイルを指定してもらう画面 |
FileOpenPickerクラスを使ってC:ドライブからファイルを選択しようとしているところ。Program FilesやWindowsフォルダは見えない。 |
ファイル・アクセスを例に挙げたが、レジストリの操作やプロセスの起動*1など、およそユーザーのプライバシーを侵害するために使えそうなAPIは、存在しないか、制限されていると考えてもらってよいだろう。
*1 アプリ間の連携は、関連付けによる起動(association launching)や、「共有コントラクト」などを使って実装する。 |
●Capabilityの指定
特定の条件の下では、例えばファイルやフォルダを列挙することも可能になる。
|
|
List 2: KnownFoldersクラス(Windows.Storage名前空間)を使って、ユーザーのMyPictureフォルダの内容を列挙する例 |
ただし、このままビルドして実行すると例外が発生する。これを回避するには、「ユーザーの画像ライブラリ(=KnownFoldersクラスのPicturesLibraryプロパティ)にアクセスしますよ」というCapability(ケイパビリティ、ベータ版では「機能」と訳されている)を、マニフェスト・ファイルに宣言しておく必要がある。次の画面はその宣言を指定している例である。
ユーザーの画像ライブラリを利用できるCapabilityを指定している画面 |
[ソリューション エクスプローラー]でPackage.appxmanifestファイル()をダブルクリックすると専用のエディタが開くので、[機能]タブ()を選ぶとこの画面になる。が「画像ライブラリ」のCapability指定。 |
このCapabilityの情報は、Windows Storeに表示される。ユーザーは、その情報もダウンロードするかどうかの判断材料に使うであろう。また、Capabilityによっては、下の画像に示すように、インストール後に許可を変更できるものもある。
インストール後も変更できるCapability |
Webカメラとマイク()などは、アプリの実行中でもユーザーがその場で許可をON/OFFできる。 |
ユーザーの許可の下に使える機能、それがCapabilityを必要とするAPIだと考えてもらいたい。また、インストール後もON/OFFできるCapabilityは、実行中にOFFにされても落ちないようにアプリを設計・実装しなければならない。
●Windows Storeの規定
[配布の原則]で述べたように、Metroスタイル・アプリはWindows Storeを通じて配布しなければならない。Windows Storeに登録するためには、定められている要件に従う必要がある。詳細はマイクロソフトのサイトを見ていただきたい。
Windows アプリの証明書の要件 |
ここに書かれた要件を満たしていないとWindows Storeに上げることができない、すなわち、事実上アプリを配布できないということになる。 |
要件の中から、アイデアの実現性に関わりそうな項目をいくつか引用しておこう。
[引用] |
|
●Windowsアプリ認定キット
要件の中で自動的に判定できる部分は、Windowsアプリ認定キット(以下「認定キット」)を使って開発者がテストできる。そのテスト内容や実施方法は、MSDNの「Windows アプリ認定キットでのアプリのテスト」を参照してほしい。
認定キットからは、次のようなレポートが出力される。
認定キットのレポート例(IE10CPで表示) |
[Overall Score]が「FAILED」になっているため、この出力結果ではWindows Storeに登録できない。 ここでは「サポートされているAPI」の項目が「FAILED」になっている()。 |
このレポート例では、Win32 APIのGetTickCount()関数を呼び出していることが検出されてエラーになっている(要件3.1に違反)。このように、コンパイル時には見逃されてしまう規約違反も認定キットでは発見されるのだ。開発の初期段階から、しばしば認定キットでのテストを実施することを強くお勧めする。
さらに付け加えると、例えば画面のキャプチャやスタート画面のタイル配置なども、ユーザーのプライベート情報に属することだとして、Metroスタイル・アプリからは取得が制限されている。デスクトップ・アプリに慣れ親しんできた開発者には、いかにも窮屈に感じられるかもしれないが、「ユーザーのプライバシーを守護するのだ」という誇りを持って開発に臨んでもらいたい。
それでは次のページでは、最後の3つ目のポイントを説明する。
INDEX | ||
[特集] Windows 8開発に向けて準備しよう | ||
Metroスタイル・アプリの開発者が知るべき3つのこと | ||
1.[配布の原則] Windows Storeで配布すべし! | ||
2.[機能の原則] ユーザーのプライバシーを守護すべし! | ||
3.[設計の原則] 万全のリジューム機能を装備すべし! | ||
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -