Windows ストア アプリのテストに関するブログ記事では、アプリを複数の実行状態に分けて考え、それぞれの状態でどのようなテストを行う必要があるかについてお話ししました。また、Windows 8 ユーザー エクスペリエンスの一部の側面について取り上げ、それがアプリの実行環境にどのように影響するかも説明しました。今回は、新しいユーザー エクスペリエンスについてもう少し掘り下げ、私たちが既存のアプリをテストしたときの経験から、皆さんのアプリにも当てはまる可能性のある興味深い操作やシナリオに焦点を当てたいと思います。そして、どうすればアプリを確実に正しく動作させることができるかを説明していきます。

一般的なレイアウトと動作

Windows 8 には、イマーシブで魅力的なアプリの作成を可能にする優れた新機能が搭載されています。アプリの初期化中にはスプラッシュ スクリーンが表示され、それがユーザーにとってのアプリの第一印象を左右します。アプリが起動して実行状態になったら、ユーザーは、画面の回転やスケーリング、スナップ表示と全画面表示の切り替えをいつでも行うことができます。さらに重要な点として、これらのイベントは同時に発生したり、間隔を空けずに連続で発生したりする可能性があります。たとえば、アプリのスプラッシュ スクリーンの表示中に画面の向きが変わることもあれば、ビューのスナップと共にデバイスがプロジェクターに接続されてスケーリングが変更されることもあり得ます。ここでは、それぞれのイベントにおいて特に注意すべき問題について、もう少し詳しく見ていきましょう。

スプラッシュ スクリーン

スプラッシュ スクリーン機能を使うと、システムが初回使用に備えてアプリを初期化しているときや、バック スタックにある中断状態のアプリを再開するときに、アプリでアクティビティを表示できるようになります。スプラッシュ スクリーンが正しく表示されることを確かめるには、縦向きと横向きの両方のモードにおいて、アプリを全画面表示で起動し、スプラッシュ スクリーンが正しく (通常は中央に) 配置されること、アニメーションの問題や視覚的な問題がないことを検証します。スプラッシュ スクリーンに表示されるグラフィックスの解像度品質にも十分に注意して、端がぎざぎざに表示されたり、ピクセルが粗く見えたりしないことを確かめてください。

アプリで延長スプラッシュ スクリーンをサポートしている場合は、スプラッシュ スクリーンから拡張スプラッシュ スクリーンへの遷移が滑らかで一貫していることを検証します。特に、アイコンの位置の変化や画面のフラッシュなどのわずらわしい現象に注意してください。

回転

回転は、アプリの実行中、アプリが中断状態にある場合も含めて、いつでも行われる可能性があります。UI の各状態をチェックするときには、アプリが向きの変更に適切に対応することを検証してください。特に、アプリのユーザー エクスペリエンスを低下させる可能性のあるレイアウトとクリッピングの問題に注意が必要です。また、向きが変わるときにコンテンツのジャンプやフラッシュが発生しないことも確かめてください。

アプリで自動回転の設定を使っている場合は、ユーザーがアプリを起動したとき、またはそのアプリに切り替えたとき、システムの向きがアプリの回転設定に合わせて変更されることを検証します。さらに、逆回転の設定でアプリを使用できることも確かめます。たとえば、自動回転の設定を横向きにしている場合は、横向きと反転した横向きの両方でアプリが正しく表示され、機能することを検証します。

アプリのテストに使用できる適切なハードウェアがない場合は、Visual Studio シミュレーターを使って回転をシミュレートすることができます。テストでシミュレーターを使う方法について詳しくは、「Visual Studio 2012 を使った Windows 8 アプリのテスト」をご覧ください。

スケーリング

Windows 8 では、サポートされているさまざまなピクセル密度のハードウェアでタッチ機能とユーザビリティを維持できるように、アプリが自動的にスケーリングされます。このため、100%、140%、180% の各スケールで、アプリのユーザー エクスペリエンスを検証する必要があります。UI の各状態をチェックするときには、どのスケーリング構成でもアプリが正しく表示されることを確かめてください。

Visual Studio シミュレーターで次の設定を使うと、サポートされている一般的なスケールでアプリをテストすることができます。

  • 100% スケール - 10.6 インチ、1366 X 768 を使用
  • 140% スケール - 10.6 インチ、1920 X 1080 を使用
  • 180% スケール - 10.6 インチ、2560 X 1440 を使用

デュアル モニター システムやプロジェクターへの出力を行っているデバイス上では、アプリが一方のモニターから別のモニターに移されると、アプリの実行中に動的にスケーリングが変更される可能性があります。特に、アプリのユーザー エクスペリエンスを低下させる可能性のあるレイアウトとクリッピングの問題にも注意が必要です。同時に、アイコン、タイル、イメージ、アプリ内コンテンツの解像度品質にも十分に注意して、端がぎざぎざに表示されたり、ピクセルが粗く見えたりしないことを確かめてください。

スナップ ビューとページ横幅に合わせたビュー

スナップされたビューとページ横幅に合わせたビューの間の画面表示の変更は、アプリの実行中、アプリが中断状態にある場合も含めて、いつでも行われる可能性があります。UI の各状態をチェックするときには、アプリが画面表示の変更に正しく対応していることを検証してください。また、アプリのユーザー エクスペリエンスを低下させる可能性のあるレイアウトとクリッピングの問題にも注意が必要です。

画面上に 2 つのアプリをスナップ ビューで表示できるようにするには、最小でも 1366 X 768 の画面サイズが必要です。アプリをスナップするには、そのアプリが実行されていて、かつ別のアプリがバック スタックに存在している必要があります。画面の左端から内側へ向かってスワイプすると、スナップ ビューを作る縦の区切り線が表示され、2 つ目のアプリを並べることができるようになります。

コントラクトとオプションの動作

Windows 8 には、データとファイルをアプリで操作したり共有したりできるようにする柔軟で便利な手段が用意されています。アプリでファイルを開いたり保存したりするには、ファイル ピッカーを使うことができます。アプリにファイル ピッカー コントラクトを実装すれば、他のアプリにファイルや保存場所を提供することもできます。検索コントラクトは、ユーザーが探している情報を見つけ出す方法としてアプリにとって欠かせないものです。共有コントラクトは、写真や Web リンクなどのコンテンツを 1 つのアプリから別のアプリへ簡単に共有できる方法をユーザーに提供します。

アプリに詳細なオプションがあり、ファイルやデータに関するユーザー エクスペリエンスが主にアプリによって定義される場合、ユー���ーにとって直感的なエクスペリエンスを実現できるかどうかは、アプリ自体の責任によるところが大きくなります。以降では、ファイルやデータの操作に関する部分の一部と、いくつかの興味深いシナリオについてお話しします。

ファイル オープン ピッカー コントラクト

Windows 8 のアプリでは、ファイル ピッカーを使ってファイルを開いたり保存したりできます。アプリにファイル ピッカー コントラクトを実装すれば、他のアプリにファイルや保存場所を提供することもできます。

アプリがサポートするファイルの種類に対して他のアプリからピッカーを呼び出せるようにする場合は、ピッカーのバスケットに追加したアイテムの縮小版が正しく表示されること、ユーザーの選択したファイルが (コンテンツも含めて) 呼び出し元のアプリに正しく提供されることを確かめます。

ファイルをアプリ独自のビューで表示する場合は、ピッカーのバスケットに対するファイルの追加と削除が正しく行われることを確かめます。

ピッカー内でホストされるアプリは、終了されないまま中断状態になることがよくあります。これは、ユーザーがピッカー内でアプリから離れて他の場所に移動した場合に起こります。このため、ピッカー内のアプリでは中断イベントと再開イベントを処理しないようにする必要があります。これらのイベントを処理すると、ユーザーがアプリに戻ってきたときのパフォーマンスが低下してしまいます。代わりに、ピッカーのクローズ イベントに登録することでアプリが閉じられるタイミングを判断し、その中で必要なクリーンアップ処理を実行してください。

検索コントラクト

検索コントラクトは、ユーザーが探している情報を見つけ出す方法としてアプリにとって欠かせないものです。アプリで検索をサポートする場合は、最も基本的な動作として、ユーザーが検索ペインを開いて検索クエリを入力したら、アプリで検索処理が実行され、適切な結果が表示されることを検証します。検索コントラクトが正しく実装されていないと、"このアプリは検索できません" というメッセージが表示され、ユーザーが実行する検索はすべてアプリ検索の動作になります。

アプリで検索候補を提示する場合は、候補が正しく表示されること、アイコンが表示されること、アイコンの幅と高さが正しいことを検証します。アプリで検索入力をサポートする場合は、アプリを開いて検索を始めると同時に検索ペインが表示され、期待どおりの結果が返されることを検証します。

検索コントラクトでは、プレースホルダー テキストを設定することもできます。このテキストは、ユーザーが検索ペインを開いたときに検索ボックスに灰色で表示される、サンプルの検索テキストのことです。検索ボックスのプレースホルダー テキストをアプリで設定する場合は、ユーザーにとって役に立つテキストを選び、アプリで検索ペインを開いたとき、そのテキストが意図したとおりに表示されることを検証します。

検索ペインのテキストをプログラムから設定できるようにする場合は、その機能が期待どおりに動作することを検証します。検索ペインを閉じた状態で、検索ペインのテキストが設定されるような操作を実行します。その後で検索ペインを開いて、テキストが正しく設定されていることを確かめます。

回転はアプリの実行中にいつでも行われる可能性があり、検索の実行中も例外ではありません。先に記載した「回転」のセクションを参照して、デバイスの回転中でもアプリの検索機能が正しく動作することを検証してください。

共有コントラクト

共有コントラクトは、写真や Web リンクなどのコンテンツを 1 つのアプリから別のアプリへ簡単に共有できる方法をユーザーに提供します。共有ソース アプリがコンテンツを提供し、共有ターゲット アプリがコンテンツを利用します。アプリはどちらになることも (両方になることも) できます。

アプリが共有ソースになる場合、共有されたデータはさまざまな共有ターゲット アプリによって使われ、独自のシナリオに応じてさまざまな形で処理されることに注意が必要です。ターゲット アプリしだいで、一部のコンテンツが他のコンテンツより優先されることもあります。たとえば、リンクと HTML フラグメントの両方を共有した場合、リンクを優先して HTML を無視するターゲット アプリもあれば、その反対の動作をするターゲット アプリもあります。アプリから共有する際のユーザー エクスペリエンスを優れたものにするために、データ パッケージのコンテンツはすべて、表現は異なっても同一のデータを表していなければなりません。また、アプリのデザインとテストの段階で、いくつかのターゲット アプリ (共有ターゲットのサンプル (英語)、メール、その他インストール済みの共有ターゲット アプリ) を対象に共有して動作を確かめてください。

ユーザーが共有しようとしているコンテンツは、そのときどきの状況に応じて、目に見えているものだったり、表示中のページに関係していたり、選択部分だったりするほか、アプリのコンテキストから判断される場合もあります。アプリを隅々までチェックして、さまざまな場所からの共有や、選択したコンテンツの共有を行ってみてください。それぞれの場面で、アプリから共有された内容がユーザーの意図した内容と一致することを検証します。

アプリが共有ターゲットになる場合は、共有ペインでホストされることになります。共有ペインは全画面よりも狭いビューであり、ペインの外側をタップするだけで、ホストされているアプリごと簡単に閉じることができます。共有ペインは、共有ターゲット アプリに軽量ですばやいエクスペリエンスを提供するように設計されています。この環境でアプリが適切に動作することを確かめましょう。共有の完了までに必要とされる操作が重くて複雑なほど、ユーザーがペインの外側をタップする可能性は高くなり、それまでの操作がすべて無駄になりかねません。同じような問題は、左側のスクロール バーなどのコントロールでも起きることがあります。別の状況として、共有ターゲットとして起動されるまで、ユーザーが一度もそのアプリを使っていない場合もあります。初回起動時に認証やセットアップが必要となるアプリでは、その手順を共有ペインでも完了できるようにするか、共有前に実行しなければならない手順について説明するメッセージをユーザーに表示するようにしてください。

アプリが共有ソースと共有ターゲットの両方になる場合、同じアプリ内で共有するという操作が行われる可能性があります。このシナリオが適切に動作することを検証してください。

まとめ

Windows 8 ではリッチでイマーシブなエクスペリエンスが実現され、その中核となるのは皆さんのアプリです。アプリ内のユーザー エクスペリエンスの外側では、アプリがサポートしている機能やアプリの実行中にユーザーが何をしているかに応じて、回転、スケーリング、複数のビュー状態、コントラクトなどへの対応が必要になることもあります。今回のブログ記事では、このような対応の中でアプリにとって問題となり得る部分を取り上げ、問題を回避できるようにアプリをテストする方法について説明しました。このブログが、皆さんのアプリのユーザー エクスペリエンスに悪影響を与えるような問題を特定する手助けとなればさいわいです。このトピックに関するご意見ご感想や、他の人と共有したい興味深い問題がありましたら、コメントとしてお知らせください。

-- Windows SDET、Rick Muszynski

-- Windows SDET、Patrik Lundberg

今回の記事作成にあたっては、Tom White 氏と Jake Sabulsky 氏にご協力いただきました。ありがとうございました。