Cortana の設計ガイドライン

警告

この機能は、Windows 10 May 2020 Update (バージョン 2004、コードネーム "20H1") ではサポートされなくなりました。

Cortana が最新の生産性エクスペリエンスをどのように変革させているかについては、「Microsoft 365 の Cortana」を参照してください。

このガイドラインおよび推奨事項では、アプリがユーザーとやり取りしてタスクを実行し、どのように行われているかがすべて明らかになるように Cortana を有効に活用する方法について説明します。

Cortana では、アプリをバックグラウンドで実行してユーザーに確認や不明瞭解消を求め、その返答として音声コマンドの状態に関するフィードバックを生成できます。 このプロセスは軽量で高速のため、ユーザーが Cortana のエクスペリエンスから離れたり、アプリにコンテキストを切り替えたりする必要がありません。

ユーザーは、できる限り軽量で簡単なプロセスになっているのは Cortana のおかげだと感じますが、アプリのおかげでタスクを実行できていることが Cortana ではっきりわかるようにすることもできます。

ここでは、Cortana UI に統合されている Adventure Works という旅行の計画および管理アプリを使って、さまざまな概念や機能について説明します。 詳細については、Cortana 音声コマンドのサンプルに関するページを参照してください。

Screenshot of the Cortana canvas

メッセージの作成

Cortana をうまく操作するには、音声合成 (TTS) と GUI 文字列を作るときの基本的な原則に従う必要があります。

原則 悪い例 良い例

効率性

使う単語はできるだけ少なくし、最も重要な情報が目立つようにします。

間違いなく可能です。今日はどのムービーをお探しですか。 大きなコレクションがあります。

もちろんです。どのムービーをお探しですか。

関連性がある

タスク、コンテンツ、コンテキストに関連する情報のみ提供します。

プレイリストに追加しました。 念のためお知らせしますが、バッテリが少なくなっています。

プレイリストに追加しました。

Clear

あいまいさを回避します。 専門的な用語ではなく、日常的な言葉を使います。

クエリ "ラスベガス旅行" の結果はありません。

ラスベガス旅行が見つかりませんでした。

信頼可能

できる限り正確な情報にします。 バックグラウンドで何が行われているのか明白にします。タスクがまだ終わっていない場合、終わったと述べないでください。 プライバシーを尊重して、個人情報を大きな音で読み上げないようにしてください。

その映画は見つかりませんでした。まだリリースされていません。

その映画はカタログで見つかりませんでした。

話し言葉を使います。 自然な口調のためには、文法的な正確さを重視しません。 たとえば、TTS の読み上げでは、「見れる」や「食べれる」のような、よく耳にする話し言葉であってもかまいません。

可能であり、自然であれば、暗示的な一人称を使います。 たとえば、「Adventure Works の次の旅行を探しています」は、だれかが探していること示しますが、それを示すために「私」のような語句は使用しません。

アプリをより自然にするため、いくつかのバリエーションを使用します。 実質的に同じことを言うために、異なる TTS と GUI 文字列を提供します。 たとえば、"どんな映画を見ますか" のバリエーションとして、"どんな映画を鑑賞しますか" があります。 人は、同じことをいつもまったく同じ方法では言わないものです。 ただし、TTS バージョンと GUI バージョンは必ず同期します。

「OK」や「わかりました」などの語句は、応答で慎重に使います。 同意や前進の意味を伝えることができますが、変化を持たせずに使いすぎるとくどくなる可能性もあります。

注意

同意の語句は TTS でのみ使用します。 Cortana のキャンバスのスペースは限られているため、対応する GUI 文字列で同じ語句を繰り返さないでください。

より自然な操作にし、Cortana のキャンバスのスペースを節約するため、応答では短縮形を使います。 たとえば、「その映画を見つけることができませんでした」の代わりに「その映画は見つかりません」を使います。 目ではなく耳に合わせて作ります。

システムが理解できる言葉を使います。 ユーザーは、表示された用語を繰り返す傾向があります。 表示内容を把握してください。

代替応答のコレクションを回転したり、ランダムに選んで、応答に変化を持たせてください。 たとえば、"どんな映画を見ますか" や "どんな映画を鑑賞しますか" などです。 これにより、アプリがより自然でユニークになります。

ローカリゼーション

音声コマンドを使ってアクションを開始するには、ユーザーがデバイスで選んだ言語で音声コマンドをアプリに登録する必要があります ([設定] > [システム] > [音声] > [音声認識の言語])。

アプリが応答する音声コマンドと、すべての TTS および GUI 文字列をローカライズする必要があります。

長い GUI 文字列は避けてください。 Cortana のキャンバスで応答に使うことができるのは 3 行のため、それよりも長い文字列は切り捨てられます。

詳しくは、「グローバリゼーションとローカライズ」セクションを参照してください。

画像リソースとスケーリング

ユニバーサル Windows プラットフォーム (UWP) アプリでは、特定の設定とデバイス機能 (ハイ コントラスト、有効ピクセル、ロケールなど) に基づいて最適なアプリ ロゴ画像を自動的に選択できます。 必要な作業は、画像を提供し、リソースのバージョンごとに、アプリ プロジェクト内で適切な名前付け規則とフォルダー構造を使用していることを確認することだけです。 推奨されるリソースのバージョンが提供されない場合、ユーザーの基本設定、身体能力、デバイスの種類、場所によって、アクセシビリティ、ローカライズ、画像の品質が影響を受ける可能性があります。

ハイ コントラストとスケール ファクター用の画像リソースについて詳しくは、「タイルとアイコン アセットのガイドライン」をご覧ください。

修飾子を使ってリソースに名前を付けます。 リソース修飾子は、リソースの特定のバージョンが使われるコンテキストを識別するフォルダーとファイル名の修飾子です。

標準的な命名規則は、"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 キャンバスのタイトル領域で使用するアプリ アイコンは、Square44x44Logo アイコンで "Package.appxmanifest" ファイルで指定されます。

ユーザー クエリの結果タイルごとにアイコンを指定することもできます。 結果のアイコンに対して有効な画像のサイズは次のとおりです。

  • 幅 68 x 高さ 68
  • 幅 68 x 高さ 92
  • 幅 280 x 高さ 140

結果タイルのテンプレート

Cortana のキャンバスに表示される結果タイル用の一連のテンプレートが用意されています。 これらのテンプレートを使って、タイルのタイトルを指定し、タイルにテキストや結果のアイコンの画像を含めるかどうかを指定します。 各タイルには、指定したテンプレートに応じて、最大 3 行のテキストと 1 つの画像を含めることができます。

サポートされているテンプレートとその例を次に示します。

名前
タイトルのみ Screenshot of the Cortana canvas showing Title only
タイトルとテキスト Screenshot of the Cortana canvas showing Title with text
68x68 アイコン付きのタイトル 画像なし
68x68 アイコン付きのタイトルとテキスト Screenshot of the Cortana canvas showing Title with 68x68 icon and text
68x92 アイコン付きのタイトル 画像なし
68x92 アイコン付きのタイトルとテキスト Screenshot of the Cortana canvas showing Title with 68x92 icon and text
280x140 アイコン付きのタイトル 画像なし
280x140 アイコン付きのタイトルとテキスト Screenshot of the Cortana canvas showing Title with 280x140 icon and text

Cortana のテンプレートについて詳しくは、「VoiceCommandContentTileType」をご覧ください。

この例では、Cortana のバックグラウンド アプリのエンド ツー エンドのタスク フローを示します。 Adventure Works アプリは、ラスベガスへの旅行をキャンセルするために使います。 この例で使っているテンプレートは "68x68 アイコン付きのタイトルとテキスト" です。

Screenshot of the Cortana canvas for end to end Cortana background app flow

手順の概要を次の画像に示します。

  1. ユーザーは Cortana を開始するために、マイクをタップします。
  2. ユーザーは、「ベガスへの Adventure Works の旅行をキャンセル」と話して、バックグラウンドで Adventure Works アプリを起動します。 アプリは Cortana の音声とキャンバスの両方を使ってユーザーと対話します。
  3. Cortana はユーザーへの確認のフィードバック (「Adventure Works で処理します」)、ステータス バー、[キャンセル] ボタンが含まれたハンドオフ画面に切り替わります。
  4. この場合、ユーザーには、クエリに一致する旅行が複数あることがわかったため、アプリは一致するすべての結果を示す不明瞭解消画面を表示して「どの旅行をキャンセルしますか」とたずねます。
  5. ユーザーは「ベガス テック カンファレンス」と指定します。
  6. キャンセルを元に戻すことができないため、アプリは、ユーザーの意図を確認する確認画面を表示します。
  7. ユーザーが「はい」と答えます。
  8. 次に、アプリは、操作の結果を示す完了画面を表示します。

以下では、これらの手順をさらに詳しく説明します。

Handoff

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks upcoming trip with no handoff AdventureWorks の "今後の旅行" (ハンドオフ画面なし)

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks upcoming trip with handoff AdventureWorks の "今後の旅行" (ハンドオフ画面あり)

アプリが応答するまでの時間が 500 ミリ秒未満で、ユーザーからの追加の情報が必要ないタスクは、完了画面の表示を除いて、Cortana からのそれ以上の参加を必要とすることなく完了できます。

アプリの応答に 500 ミリ秒以上が必要な場合、Cortana にハンドオフ画面が表示されます。 アプリ アイコンと名前が表示されます。音声コマンドが正しく理解されたことを示すために、GUI と TTS の両方のハンドオフ文字列を提供する必要があります。 ハンドオフ画面は最大 5 秒間表示されます。この時間内にアプリが応答しない場合は、Cortana に汎用エラー画面が表示されます。

ハンドオフ画面用の GUI および TTS のガイドライン

タスクが進行中であることを明確に示します。

現在形を使用します。

開始中のタスクを確認し、特定のエンティティを参照する動作動詞を使用します。

要求されたが完了していない操作をコミットしない汎用的な動詞を使います。 たとえば、「旅行をキャンセルしています」ではなく「旅行を探しています」を使います。 こうすれば、結果が返されない場合に、「ラスベガスへの旅行をキャンセルしています。 ラスベガスへの旅行が見つかりませんでした」のような応答がユーザーに返されることはありません。

要求されたエンティティをまだアプリが解決する必要がある場合は、タスクが既に実行されていないことを明確にします。 たとえば、「旅行をキャンセルしています」ではなく「旅行を探しています」と言っていますが、これは 0 個以上の旅行が一致し、まだ結果がわからないためです。

GUI 文字列と TTS の文字列は同じにすることができますが、その必要はありません。 他のビジュアル資産が切り詰められたり、重複したりするのを避けるために、GUI 文字列は短くしてください。

TTS GUI
Adventure Works の次の旅行を探しています。 次の旅行を探しています...
Falls City への Adventure Works の旅行を検索しています。 Falls City への旅行を検索しています...

進捗状況

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip progress AdventureWorks の "旅行のキャンセル" (進行中)

タスクのステップで時間がかかっている場合、アプリは何が起こっているのかを進行状況画面でユーザーに伝える必要があります。 アプリ アイコンが表示されます。タスクが進行中であることを示すため、GUI と TTS の両方の進行状況文字列を提供する必要があります。

適切な状態でアプリを起動する起動パラメーターと共に、アプリへのリンクを提供する必要があります。 これにより、ユーザーは自身でタスクを表示または完了できます。 Cortana に、リンク テキスト ([Adventure Works に移動] など) が表示されます。

進行状況画面は、それぞれについて 5 秒間表示されます。その後で、別の画面を表示する必要があり、そうしないとタスクはタイムアウトします。

進行状況画面に続いて、次の画面を表示できます。

  • 進捗状況
  • 確認 (後で説明するように、明示的な確認)
  • 曖昧性の除去
  • Completion

進行状況画面用の GUI および TTS のガイドライン

現在形を使用します。

タスクが進行中であることを確認する動作動詞を使用します。

GUI: エンティティが表示される場合は、その参照 (旅行をキャンセルしています...) を表示します。エンティティが表示されない場合は、エンティティを明示的に示します (「ベガス テック カンファレンス」をキャンセルしています)。

TTS: TTS 文字列は、最初の進行状況画面にのみ含めます。 さらに進行状況画面が必要な場合は、TTS 文字列として空の文字列 {} を送信し、GUI 文字列のみを提供します。

条件 TTS GUI
前の回でエンティティを読み取り/エンティティを表示 この旅行をキャンセルしています... この旅行をキャンセルしています...
前の回でエンティティを未読み取り/エンティティを表示 ベガスへの旅行をキャンセルしています... この旅行をキャンセルしています...
前の回でエンティティを未読み取り/エンティティを非表示 ベガスへの旅行をキャンセルしています... ベガスへの旅行をキャンセルしています...

確認

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip confirmation AdventureWorks の "旅行のキャンセル" (確定)

一部のタスクは、ユーザーのコマンドの性質によって暗黙的に確認できます。その他のタスクはより重要である可能性があり、明示的な確認が必要です。 明示的な確認と暗黙的な確認を使う場合のいくつかのガイドラインを次に示します。

確認画面の GUI と TTS の両方の文字列はアプリおよびアプリ アイコン (提供された場合) によって指定され、Cortana アバターの代わりに表示されます。

ユーザーが確認に応答した後は、アプリは進行状況画面に移動するのを避けるため、500 ミリ秒以内に次の画面を提供する必要があります。

次の場合に、明示的な確認を使用します。

  • ユーザーからコンテンツが送信される (テキスト メッセージ、メール、ソーシャル投稿など)
  • 操作を元に戻すことができない (購入の実行、何かの削除など)
  • 厄介な結果が生じる可能性がある (間違い電話をかけるなど)
  • より複雑な認識が必要である (オープンエンドのトランザクションなど)

次の場合に、暗示的な確認を使用します。

  • コンテンツがユーザーに対してのみ保存される (自分自身へのメモなど)
  • 簡単に取り消す方法がある (アラームのオンとオフなど)
  • タスクをすばやくする必要がある (忘れる前にアイデアをすばやくキャプチャするなど)
  • 精度が高い (シンプルなメニューなど)

確認画面用の GUI および TTS のガイドライン

現在形を使用します。

「はい」または「いいえ」で答えることができる明白な質問をユーザーにします。 質問では、ユーザーが何を行おうとしているかを明示的に確認する必要があり、その他の明白なオプションが存在してはなりません。

音声コマンドを最初に認識できない場合に、再確認用に質問のバリエーションを提供します。

GUI: エンティティが表示される場合は、その参照を使います。 エンティティが表示されない場合は、エンティティを明示的に示します。

TTS: わかりやすくするため、前の回にシステムによって読み上げられていない限り、常に特定の項目またはエンティティを参照します。

条件 TTS GUI
前の回でエンティティを未読み取り/エンティティを表示 ベガス テック カンファランスをキャンセルしますか。 この旅行をキャンセルしますか。
前の回でエンティティを未読み取り/エンティティを非表示 ベガス テック カンファランスをキャンセルしますか。 ベガス テック カンファレンスをキャンセルしますか。
前の回でエンティティを読み取り/エンティティを非表示 この旅行をキャンセルしますか。 この旅行をキャンセルしますか。
エンティティを表示してメッセージを再表示 この旅行のキャンセルを希望しましたか。 この旅行をキャンセルすることを希望しましたか。
エンティティを表示せずにメッセージを再表示 この旅行のキャンセルを希望しましたか。 ベガス テック カンファレンスをキャンセルすることを希望しましたか。

曖昧性の除去

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip disambiguation AdventureWorks の "旅行のキャンセル" (不明瞭解消)

一部のタスクでは、タスクを完了するには、ユーザーがエンティティの一覧からエンティティを選択する必要があります。

不明瞭解消画面の GUI と TTS の両方の文字列はアプリおよびアプリ アイコン (提供された場合) によって指定され、Cortana アバターの代わりに表示されます。

ユーザーが不明瞭解消の質問に応答した後は、アプリは進行状況画面に移動するのを避けるため、500 ミリ秒以内に次の画面を提供する必要があります。

不明瞭解消画面用の GUI および TTS のガイドライン

現在形を使用します。

表示されるエンティティのタイトルまたはテキスト行で回答できる、明確な質問をユーザーにします。

最大 10 個のエンティティを表示できます。

各エンティティには固有のタイトルが必要です。

音声コマンドを最初に認識できない場合に、再確認用に質問のバリエーションを提供します。

TTS: わかりやすくするため、前の回に読み上げられていない限り、常に特定の項目またはエンティティを参照します。

TTS: 3 つ以下で短い場合を除いて、エンティティの一覧を読み上げないでください。

条件 TTS GUI
プロンプト - 項目が 3 つ以下 どのベガス旅行をキャンセルしますか。 ベガス テック カンファレンス、またはベガスのパーティのどちらですか。 どれをキャンセルしますか。
確認 - 3 つを超える項目 どのベガス旅行をキャンセルしますか。 どれをキャンセルしますか。
再確認 どのベガス旅行のキャンセルを希望しましたか。 どれをキャンセルしますか。

Completion

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip completion AdventureWorks の "旅行のキャンセル" (完了)

タスクが正常に完了したら、アプリは要求されたタスクが正常に完了したことをユーザーに通知する必要があります。

完了画面の GUI と TTS の両方の文字列はアプリおよびアプリ アイコン (提供された場合) によって指定され、Cortana アバターの代わりに表示されます。

適切な状態でアプリを起動する起動パラメーターと共に、アプリへのリンクを提供する必要があります。 これにより、ユーザーは自身でタスクを表示または完了できます。 Cortana に、リンク テキスト ([Adventure Works に移動] など) が表示されます。

完了画面用の GUI および TTS のガイドライン

過去形を使用します。

タスクが完了したことを明示的に示すため、動作動詞を使います。

エンティティが表示される場合、または前の回に参照された場合は、参照するだけにします。

条件 TTS GUI
前の回でエンティティを表示/読み取り この旅行をキャンセルしました。 この旅行をキャンセルしました。
エンティティを非表示/前の回でエンティティを未読み取り ベガス テック カンファレンス旅行をキャンセルしました。 "ベガス テック カンファレンス" をキャンセルしました。

エラー

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip error AdventureWorks の "旅行のキャンセル" (エラー)

次のいずれかのエラーが発生した場合、Cortana には同じ汎用エラー メッセージが表示されます。

  • アプリ サービスが予期せず終了する。
  • Cortana がアプリ サービスとの通信に失敗する。
  • Cortana でハンドオフ画面または状況進行画面が 5 秒間表示された後で、アプリが画面を表示できない。