Cortana の設計ガイドライン
警告
この機能は、Windows 10 May 2020 Update (バージョン 2004、コードネーム "20H1") ではサポートされなくなりました。
これらのガイドラインと推奨事項では、アプリで Cortana を使用してユーザーと対話し、タスクを完了し、そのすべてがどのように起こっているかを明確に伝える方法について説明します。
Cortana を使用すると、バックグラウンドで実行されているアプリケーションは、ユーザーに確認またはあいまいさを解消するように求め、その代わりに音声コマンドの状態に関するフィードバックをユーザーに提供できます。 このプロセスは軽量で迅速であり、ユーザーが Cortana エクスペリエンスを離れたり、アプリケーションにコンテキストを切り替えたりすることを強制しません。
ユーザーは、 Cortana がプロセスを可能な限り軽く簡単にするのに役立つと感じるはずですが、 Cortana アプリがタスクを実行していることを明示的にすることが必要な場合があります。
ここでは、ここで示す Adventure Works Cortana UI に統合された旅行計画および管理アプリを使用して、説明する多くの概念と機能を示します。 詳細については、「Cortana 音声コマンドのサンプル」を参照してください。
会話による書き込み
Cortana の操作を成功させるには、テキスト読み上げ (TTS) 文字列と GUI 文字列を作成するときに、いくつかの基本的な原則に従う必要があります。
原則 | 不適切な例 | 良い例 |
---|---|---|
|
確かに、今日検索したい映画は何ですか? 大きなコレクションがあります。 |
確かに、あなたはどのような映画を探していますか? |
|
私はあなたのプレイリストにこれを追加しました。 ご存知のようで、バッテリーが少なくなっています。 |
私はあなたのプレイリストにこれを追加しました。 |
|
クエリ "ラスベガス旅行" の結果はありません。 |
私はラスベガスへの旅行を見つけることができませんでした。 |
|
私はその映画を見つけることができませんでした、それはまだリリースされていないはず。 |
カタログにその映画が見つかりませんでした。 |
人の話し方を書く。 自然に聞こえるよりも文法の精度を強調しないでください。 たとえば、"want to" や "gotta" などの耳に優しい音声ショートカットは、TTS が読み上げられる場合に問題ありません。
可能な限り自然な場合は、暗黙の最初の人の時制を使用します。 たとえば、"次の Adventure Works 旅行を探す" とは、誰かが検索を行っているが、"I" という単語を使用して指定しないことを意味します。
いくつかのバリエーションを使用して、アプリをより自然に聞こえるようにします。 同じことを効果的に言うために、TTS と GUI 文字列のさまざまなバージョンを提供します。 たとえば、"どんな映画を見ますか" のバリエーションとして、"どんな映画を鑑賞しますか" があります。 人々は毎回まったく同じことを言うわけではありません。 TTS と GUI のバージョンは必ず同期してください。
慎重に応答に "OK" や "Alright" などの語句を使用します。 受信確認と進行状況の感覚を提供できますが、頻繁に使用しすぎてバリエーションがない場合は繰り返し使用することもできます。
Note
同意の語句は TTS でのみ使用します。 Cortana キャンバスの領域が限られているため、対応する GUI 文字列で繰り返さないでください。
Cortana キャンバスで、より自然な対話と追加のスペース節約のために、応答に収縮を使用します。 たとえば、"私はその映画を見つけることができませんでした" ではなく"私はその映画を見つけることができませんでした。 目ではなく耳のために書いてください。
システムが理解する言語を使用します。 ユーザーは、表示される用語を繰り返す傾向があります。 表示内容を把握します。
代替応答のコレクションから回転またはランダムに選択することで、応答にいくつかのバリエーションを使用します。 たとえば、"どんな映画を見ますか" や "どんな映画を鑑賞しますか" などです。 これにより、アプリがより自然でユニークに聞こえます。
ローカライズ
音声コマンドを使用してアクションを開始するには、ユーザーがデバイスで選択した言語で音声コマンドを登録する必要があります ([設定] > システム > Speech > Speech 言語)。
アプリが応答する音声コマンドと、すべての TTS および GUI 文字列をローカライズする必要があります。
長い GUI 文字列は避ける必要があります。 Cortana キャンバスは、応答用に 3 行を提供し、それより長い文字列を切り捨てます。
詳しくは、「グローバリゼーションとローカライズ」セクションを参照してください。
イメージ リソースとスケーリング
ユニバーサル Windows プラットフォーム (UWP) アプリは、特定の設定とデバイス機能 (ハイ コントラスト、有効ピクセル、ロケールなど) に基づいて、最も適切なアプリ ロゴ イメージを自動的に選択できます。 必要なのは、イメージを提供し、アプリ プロジェクト内の適切な名前付け規則とフォルダー編成をさまざまなリソース バージョンに使用することです。 推奨されるリソースバージョン、アクセシビリティ、ローカライズ、および画質を提供しない場合は、ユーザーの設定、機能、デバイスの種類、場所に応じて、問題が発生する可能性があります。
ハイ コントラストおよびスケール ファクターの画像リソースの詳細については、「タイルアセットとアイコン アセットの Guidelines」を参照してください。
修飾子を使用してリソースに名前を付けます。 リソース修飾子は、特定のバージョンのリソースを使用するコンテキストを識別するフォルダーおよびファイル名修飾子です。
標準的な命名規則は、"foldername/qualifiername-value[_qualifiername-value]/filename.qualifiername-value[_qualifiername-value].ext" です。 たとえば、images/logo.scale-100_contrast-white.png は、コード内ではルート フォルダーとファイル名を使用して単に images/logo.png と参照されます。 言語とリージョンの管理に関するページと修飾子を使ってリソースに名前を付ける方法に関するページを参照してください。
ローカライズされたリソースや複数の解像度のリソースの提供を現在計画していない場合でも、文字列リソース ファイルに既定の言語をマークし ("en-US\resources.resw" など)、画像に既定のスケール ファクターをマークする ("logo.scale-100.png" など) ことをお勧めします。 ただし、少なくとも、100、200、400 のスケール ファクターに資産を提供することをお勧めします。
重要
Cortana キャンバスのタイトル領域で使用されるアプリ アイコンは、"Package.appxmanifest" ファイルで指定された Square44x44Logo アイコンです。
また、ユーザー クエリの結果タイルごとにアイコンを指定することもできます。 結果アイコンの有効な画像サイズは次のとおりです。
- 68w x 68h
- 68w x 92h
- 280w x 140h
結果タイル テンプレート
Cortana キャンバスに表示される結果タイルには、一連のテンプレートが用意されています。 これらのテンプレートを使用して、タイルのタイトルと、タイルにテキストと結果アイコンの画像を含めるかどうかを指定します。 各タイルには、指定されたテンプレートに応じて、最大 3 行のテキストと 1 つの画像を含めることができます。
サポートされているテンプレートを次に示します (例を示します)。
Name | 例 |
---|---|
タイトルのみ | |
テキストを含むタイトル | |
68 x 68 アイコンのタイトル | イメージなし |
68 x 68 のアイコンとテキストを含むタイトル | |
68 x 92 アイコンのタイトル | イメージなし |
68 x 92 のアイコンとテキストを含むタイトル | |
280 x 140 アイコンのタイトル | イメージなし |
280 x 140 アイコンとテキストを含むタイトル |
Cortana テンプレートの詳細については、 VoiceCommandContentTileType を参照してください。
例
この例では、 Cortana のバックグラウンド アプリのエンド ツー エンドのタスク フローを示します。 Adventure Works アプリを使用して、ラスベガスへの旅行をキャンセルしています。 この例では、"68 x 68 のアイコンとテキストを含むタイトル" テンプレートを使用します。
この図で説明する手順を次に示します。
- ユーザーがマイクをタップして Cortanaを開始します。
- ユーザーは、バックグラウンドで Adventure Works アプリを起動するために、"ラスベガスへの Adventure Works の旅行をキャンセルする" と言います。 アプリは、 Cortana 音声とキャンバスの両方を使用してユーザーと対話します。
- Cortana はハンドオフ画面に切り替わり、ユーザーの受信確認フィードバック ("Adventure Works を入手します")、ステータス バー、キャンセル ボタンが表示されます。
- この場合、ユーザーはクエリに一致する複数の乗車を持っているので、アプリは一致するすべての結果を一覧表示するあいまいさを解消する画面を提供し、"どれをキャンセルしますか?
- ユーザーは、"Vegas Tech Conference" 項目を指定します。
- 取り消しを元に戻すことができないので、アプリはユーザーに意図の確認を求める確認画面を提供します。
- ユーザーが "はい" と言います。
- その後、操作の結果を示す完了画面がアプリに表示されます。
ここでは、これらの手順について詳しく説明します。
Handoff
ハンドオフ画面のない AdventureWorks の "今後の旅行"
ハンドオフ スクリーンが表示された AdventureWorks の "今後の旅行"
アプリが応答するのに 500 ミリ秒未満で、ユーザーからの追加情報を必要としないタスクは、完了画面を表示する以外に、 Cortana から追加参加しなくても完了できます。
アプリケーションで 500 ミリ秒以上の応答が必要な場合は、 Cortana がハンドオフ画面を提供します。 アプリのアイコンと名前が表示されます。音声コマンドが正しく認識されたことを示すには、GUI と TTS の両方のハンドオフ文字列を指定する必要があります。 ハンドオフ画面は最大5秒間表示されます。この時間内にアプリが応答しない場合は、 Cortana に一般的なエラー画面が表示されます。
ハンドオフ画面の GUI と TTS のガイドライン
タスクが進行中であることを明確に示します。
現在時制を使用します。
開始しているタスクを確認し、特定のエンティティを参照するアクション動詞を使用します。
要求された不完全なアクションにコミットしないジェネリック動詞を使用します。 たとえば、"旅行のキャンセル" ではなく "旅行を探しています" などです。 この場合、結果が返されない場合、ユーザーは "ラスベガスへの旅行をキャンセルしています... 私はラスベガスへの旅行を見つけることができませんでした"
アプリで要求されたエンティティを解決する必要がある場合は、タスクがまだ実行されていないことを明確にしてください。 たとえば、0 回以上の乗車が一致する可能性があり、結果がまだわかっていないため、"旅行をキャンセルする" の代わりに "旅行を探しています" と言う方法に注目してください。
GUI 文字列と TTS 文字列は同じでもかまいませんが、同じである必要はありません。 他のビジュアルアセットの切り捨てや重複を避けるために、GUI 文字列を短くしてください。
TTS | GUI |
---|---|
あなたの次のアドベンチャーワーク旅行を探しています。 | 次の旅行を探しています... |
フォールズシティへの Adventure Works 旅行を検索します。 | フォールズシティへの旅行を検索しています... |
進行状況
AdventureWorks の "旅行のキャンセル" の進行状況
タスクがステップの間にしばらく時間がかかる場合、アプリは進行状況画面で何が起こっているかをステップインしてユーザーを更新する必要があります。 アプリ アイコンが表示されます。タスクが進行中であることを示すには、GUI と TTS の両方の進行状況文字列を指定する必要があります。
アプリを適切な状態で起動するための起動パラメーターを含むアプリへのリンクを指定する必要があります。 これにより、ユーザーは自分でタスクを表示または完了できます。 Cortana は、リンク テキスト ("Go to Adventure Works" など) を提供します。
進行状況画面はそれぞれ 5 秒間表示され、その後に別の画面が続く必要があります。その後、タスクはタイムアウトになります。
これらの画面は、進行状況画面に従うことができます。
- 進行状況
- 確認 (明示的、後で説明)
- 曖昧性の除去
- 完了
進行状況画面の GUI と TTS のガイドライン
現在時制を使用します。
タスクが進行中であることを確認するアクション動詞を使用します。
GUI: エンティティが表示されている場合は、エンティティへの参照を使用します ("この旅行を取り消しています...")。エンティティが表示されない場合は、エンティティを明示的に呼び出します ("Cancelling 'Vegas Tech Conference")。
TTS: 最初の進行状況画面にのみ TTS 文字列を含める必要があります。 さらに進行状況画面が必要な場合は、TTS 文字列として空の文字列 {} を送信し、GUI 文字列のみを提供します。
条件 | TTS | GUI |
---|---|---|
エンティティの読み取り前のターン/エンティティの表示 | この旅行をキャンセルしています... | この旅行をキャンセルしています... |
エンティティが前のターンで読み取られない/エンティティが表示に表示される | ラスベガスへの旅行をキャンセルしています... | この旅行をキャンセルしています... |
エンティティが前のターンで読み取られない/エンティティが表示されない | ラスベガスへの旅行をキャンセルしています... | ラスベガスへの旅行をキャンセルしています... |
確認
AdventureWorks の "旅行のキャンセル" の確認
一部のタスクは、ユーザーのコマンドの性質によって暗黙的に確認できます。他のユーザーは機密性が高く、明示的な確認が必要な場合があります。 明示的な確認と暗黙的な確認を使用する場合のガイドラインを次に示します。
確認画面の GUI 文字列と TTS 文字列の両方がアプリによって指定され、アプリ アイコンが指定されている場合は、 Cortana アバターの代わりに表示されます。
顧客が確認に応答した後、進行状況画面に移動しないように、アプリケーションは 500 ミリ秒以内に次の画面を提供する必要があります。
明示的な when...
- コンテンツがユーザーから離れる (テキスト メッセージ、メール、ソーシャル投稿など)
- アクションを元に戻すことはできません (購入や削除など)
- 結果が恥ずかしい (たとえば、間違った人を呼び出す) 可能性があります
- より複雑な認識が必要です (未終了の文字起こしなど)
暗黙的な when...
- コンテンツはユーザー専用に保存されます (自己メモなど)
- 簡単に戻る方法があります (アラームのオンとオフの切り替えなど)
- タスクはすばやく行う必要があります (たとえば、忘れる前にアイデアをすばやくキャプチャする)。
- 精度が高い (単純なメニューなど)
確認画面の GUI と TTS のガイドライン
現在時制を使用します。
ユーザーに、"はい" または "いいえ" で回答できる明確な質問をします。 この質問では、ユーザーが何をしようとしているかを明示的に確認する必要があり、他の明白なオプションはありません。
音声コマンドが初めて認識されない場合に備えて、再プロンプトの質問のバリエーションを指定します。
GUI: エンティティが表示されている場合は、そのエンティティへの参照を使用します。 エンティティが表示されない場合は、エンティティを明示的に呼び出します。
TTS: 明確にするために、前のターンでシステムによって読み上げた場合を除き、常に特定の項目またはエンティティを参照してください。
条件 | TTS | GUI |
---|---|---|
エンティティが前のターンで読み取られない/エンティティが表示に表示される | ラスベガス技術会議をキャンセルしますか? | この旅行をキャンセルしますか? |
エンティティが前のターンで読み取られない/エンティティが表示されない | ラスベガス技術会議をキャンセルしますか? | ラスベガス技術会議をキャンセルしますか? |
エンティティの読み取り前のターン/エンティティが表示されない | この旅行をキャンセルしますか? | この旅行をキャンセルしますか? |
エンティティが表示された REPROMPT | この旅行をキャンセルしますか? | この旅行をキャンセルしますか? |
エンティティが表示されない REPROMPT | この旅行をキャンセルしますか? | ラスベガス技術会議をキャンセルしますか? |
曖昧性の除去
AdventureWorks "旅行のキャンセル" のあいまいさの解消
一部のタスクでは、ユーザーがタスクを完了するためにエンティティの一覧から選択する必要があります。
あいまいさを解消する画面の GUI と TTS の両方の文字列がアプリによって指定され、アプリ アイコンが指定されている場合は、 Cortana アバターの代わりに表示されます。
顧客があいまいさを解消する質問に応答した後、進行状況画面に移動しないように、アプリケーションは 500 ミリ秒以内に次の画面を提供する必要があります。
あいまいさを解消するための GUI と TTS のガイドライン
現在時制を使用します。
表示される任意のエンティティのタイトルまたはテキスト行で回答できる明確な質問をユーザーに求めます。
最大 10 個のエンティティを表示できます。
各エンティティには一意のタイトルが必要です。
音声コマンドが初めて認識されない場合に備えて、再プロンプトの質問のバリエーションを指定します。
TTS: 明確にするために、前のターンで話されていない限り、常に特定のアイテムまたはエンティティを参照してください。
TTS: 3 つ以下で短い場合を除き、エンティティリストを読み上げたりしないでください。
条件 | TTS | GUI |
---|---|---|
プロンプト - 3 つ以下の項目 | どのラスベガス旅行をキャンセルしますか? ラスベガスのテックカンファレンスやパーティー? | 取り消したいのはどれですか? |
プロンプト - 3 つ以上の項目 | どのラスベガス旅行をキャンセルしますか? | 取り消したいのはどれですか? |
REPROMPT | どのラスベガス旅行をキャンセルしますか? | 取り消したいのはどれですか? |
完了
AdventureWorks の "旅行のキャンセル" 完了
タスクが正常に完了すると、アプリは、要求されたタスクが正常に完了したことをユーザーに通知する必要があります。
完了画面の GUI と TTS の両方の文字列がアプリによって指定され、アプリ アイコンが指定されている場合は、 Cortana アバターの代わりに表示されます。
アプリを適切な状態で起動するための起動パラメーターを含むアプリへのリンクを指定する必要があります。 これにより、ユーザーは自分でタスクを表示または完了できます。 Cortana は、リンク テキスト ("Go to Adventure Works" など) を提供します。
完了画面の GUI と TTS のガイドライン
過去の時制を使用します。
アクション動詞を使用して、タスクが完了したことを明示的に示します。
エンティティが表示されている場合、またはエンティティが前のターンで参照されている場合は、エンティティを参照するだけです。
条件 | TTS | GUI |
---|---|---|
エンティティの表示/エンティティの読み取り (前のターン) | 私はこの旅行をキャンセルしました。 | この旅行を取り消しました。 |
エンティティが表示されない/エンティティが前のターンで読み取られない | 私はあなたのラスベガス技術会議旅行をキャンセルしました。 | "Vegas Tech Conference" を取り消しました。 |
エラー
AdventureWorks の "旅行の取り消し" エラー
次のいずれかのエラーが発生すると、 Cortana は同じ一般的なエラー メッセージを表示します。
- アプリ サービスが予期せず終了します。
- Cortana はアプリ サービスとの通信に失敗します。
- アプリは、 Cortana がハンドオフ画面または進行状況画面を 5 秒間表示した後、画面を表示できません。
関連記事
Windows developer