Cortana の設計ガイドライン
警告
この機能は、Windows 10 May 2020 Update (バージョン 2004、コードネーム "20H1") ではサポートされなくなりました。
Cortana が最新の生産性エクスペリエンスをどのように変革させているかについては、「Microsoft 365 の Cortana」を参照してください。
このガイドラインおよび推奨事項では、アプリがユーザーとやり取りしてタスクを実行し、どのように行われているかがすべて明らかになるように Cortana を有効に活用する方法について説明します。
Cortana では、アプリをバックグラウンドで実行してユーザーに確認や不明瞭解消を求め、その返答として音声コマンドの状態に関するフィードバックを生成できます。 このプロセスは軽量で高速のため、ユーザーが Cortana のエクスペリエンスから離れたり、アプリにコンテキストを切り替えたりする必要がありません。
ユーザーは、できる限り軽量で簡単なプロセスになっているのは Cortana のおかげだと感じますが、アプリのおかげでタスクを実行できていることが Cortana ではっきりわかるようにすることもできます。
ここでは、Cortana UI に統合されている Adventure Works という旅行の計画および管理アプリを使って、さまざまな概念や機能について説明します。 詳細については、Cortana 音声コマンドのサンプルに関するページを参照してください。
メッセージの作成
Cortana をうまく操作するには、音声合成 (TTS) と GUI 文字列を作るときの基本的な原則に従う必要があります。
原則 | 悪い例 | 良い例 |
---|---|---|
|
間違いなく可能です。今日はどのムービーをお探しですか。 大きなコレクションがあります。 |
もちろんです。どのムービーをお探しですか。 |
|
プレイリストに追加しました。 念のためお知らせしますが、バッテリが少なくなっています。 |
プレイリストに追加しました。 |
|
クエリ "ラスベガス旅行" の結果はありません。 |
ラスベガス旅行が見つかりませんでした。 |
|
その映画は見つかりませんでした。まだリリースされていません。 |
その映画はカタログで見つかりませんでした。 |
話し言葉を使います。 自然な口調のためには、文法的な正確さを重視しません。 たとえば、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 つの画像を含めることができます。
サポートされているテンプレートとその例を次に示します。
名前 | 例 |
---|---|
タイトルのみ | |
タイトルとテキスト | |
68x68 アイコン付きのタイトル | 画像なし |
68x68 アイコン付きのタイトルとテキスト | |
68x92 アイコン付きのタイトル | 画像なし |
68x92 アイコン付きのタイトルとテキスト | |
280x140 アイコン付きのタイトル | 画像なし |
280x140 アイコン付きのタイトルとテキスト |
Cortana のテンプレートについて詳しくは、「VoiceCommandContentTileType」をご覧ください。
例
この例では、Cortana のバックグラウンド アプリのエンド ツー エンドのタスク フローを示します。 Adventure Works アプリは、ラスベガスへの旅行をキャンセルするために使います。 この例で使っているテンプレートは "68x68 アイコン付きのタイトルとテキスト" です。
手順の概要を次の画像に示します。
- ユーザーは Cortana を開始するために、マイクをタップします。
- ユーザーは、「ベガスへの Adventure Works の旅行をキャンセル」と話して、バックグラウンドで Adventure Works アプリを起動します。 アプリは Cortana の音声とキャンバスの両方を使ってユーザーと対話します。
- Cortana はユーザーへの確認のフィードバック (「Adventure Works で処理します」)、ステータス バー、[キャンセル] ボタンが含まれたハンドオフ画面に切り替わります。
- この場合、ユーザーには、クエリに一致する旅行が複数あることがわかったため、アプリは一致するすべての結果を示す不明瞭解消画面を表示して「どの旅行をキャンセルしますか」とたずねます。
- ユーザーは「ベガス テック カンファレンス」と指定します。
- キャンセルを元に戻すことができないため、アプリは、ユーザーの意図を確認する確認画面を表示します。
- ユーザーが「はい」と答えます。
- 次に、アプリは、操作の結果を示す完了画面を表示します。
以下では、これらの手順をさらに詳しく説明します。
Handoff
AdventureWorks "Upcoming trip"
ハンドのスクリーンショット
アプリが応答するまでの時間が 500 ミリ秒未満で、ユーザーからの追加の情報が必要ないタスクは、完了画面の表示を除いて、Cortana からのそれ以上の参加を必要とすることなく完了できます。
アプリの応答に 500 ミリ秒以上が必要な場合、Cortana にハンドオフ画面が表示されます。 アプリ アイコンと名前が表示されます。音声コマンドが正しく理解されたことを示すために、GUI と TTS の両方のハンドオフ文字列を提供する必要があります。 ハンドオフ画面は最大 5 秒間表示されます。この時間内にアプリが応答しない場合は、Cortana に汎用エラー画面が表示されます。
ハンドオフ画面用の GUI および TTS のガイドライン
タスクが進行中であることを明確に示します。
現在形を使用します。
開始中のタスクを確認し、特定のエンティティを参照する動作動詞を使用します。
要求されたが完了していない操作をコミットしない汎用的な動詞を使います。 たとえば、「旅行をキャンセルしています」ではなく「旅行を探しています」を使います。 こうすれば、結果が返されない場合に、「ラスベガスへの旅行をキャンセルしています。 ラスベガスへの旅行が見つかりませんでした」のような応答がユーザーに返されることはありません。
要求されたエンティティをまだアプリが解決する必要がある場合は、タスクが既に実行されていないことを明確にします。 たとえば、「旅行をキャンセルしています」ではなく「旅行を探しています」と言っていますが、これは 0 個以上の旅行が一致し、まだ結果がわからないためです。
GUI 文字列と TTS の文字列は同じにすることができますが、その必要はありません。 他のビジュアル資産が切り詰められたり、重複したりするのを避けるために、GUI 文字列は短くしてください。
TTS | GUI |
---|---|
Adventure Works の次の旅行を探しています。 | 次の旅行を探しています... |
Falls City への Adventure Works の旅行を検索しています。 | Falls City への旅行を検索しています... |
進捗状況
AdventureWorks の "旅行の取り消し" の進行状況
タスクのステップで時間がかかっている場合、アプリは何が起こっているのかを進行状況画面でユーザーに伝える必要があります。 アプリ アイコンが表示されます。タスクが進行中であることを示すため、GUI と TTS の両方の進行状況文字列を提供する必要があります。
適切な状態でアプリを起動する起動パラメーターと共に、アプリへのリンクを提供する必要があります。 これにより、ユーザーは自身でタスクを表示または完了できます。 Cortana に、リンク テキスト ([Adventure Works に移動] など) が表示されます。
進行状況画面は、それぞれについて 5 秒間表示されます。その後で、別の画面を表示する必要があり、そうしないとタスクはタイムアウトします。
進行状況画面に続いて、次の画面を表示できます。
- 進捗状況
- 確認 (後で説明するように、明示的な確認)
- 曖昧性の除去
- Completion
進行状況画面用の GUI および TTS のガイドライン
現在形を使用します。
タスクが進行中であることを確認する動作動詞を使用します。
GUI: エンティティが表示される場合は、その参照 (旅行をキャンセルしています...) を表示します。エンティティが表示されない場合は、エンティティを明示的に示します (「ベガス テック カンファレンス」をキャンセルしています)。
TTS: TTS 文字列は、最初の進行状況画面にのみ含めます。 さらに進行状況画面が必要な場合は、TTS 文字列として空の文字列 {} を送信し、GUI 文字列のみを提供します。
条件 | TTS | GUI |
---|---|---|
前の回でエンティティを読み取り/エンティティを表示 | この旅行をキャンセルしています... | この旅行をキャンセルしています... |
前の回でエンティティを未読み取り/エンティティを表示 | ベガスへの旅行をキャンセルしています... | この旅行をキャンセルしています... |
前の回でエンティティを未読み取り/エンティティを非表示 | ベガスへの旅行をキャンセルしています... | ベガスへの旅行をキャンセルしています... |
確認
。AdventureWorks の "旅行のキャンセル" の確認
一部のタスクは、ユーザーのコマンドの性質によって暗黙的に確認できます。その他のタスクはより重要である可能性があり、明示的な確認が必要です。 明示的な確認と暗黙的な確認を使う場合のいくつかのガイドラインを次に示します。
確認画面の GUI と TTS の両方の文字列はアプリおよびアプリ アイコン (提供された場合) によって指定され、Cortana アバターの代わりに表示されます。
ユーザーが確認に応答した後は、アプリは進行状況画面に移動するのを避けるため、500 ミリ秒以内に次の画面を提供する必要があります。
次の場合に、明示的な確認を使用します。
- ユーザーからコンテンツが送信される (テキスト メッセージ、メール、ソーシャル投稿など)
- 操作を元に戻すことができない (購入の実行、何かの削除など)
- 厄介な結果が生じる可能性がある (間違い電話をかけるなど)
- より複雑な認識が必要である (オープンエンドのトランザクションなど)
次の場合に、暗示的な確認を使用します。
- コンテンツがユーザーに対してのみ保存される (自分自身へのメモなど)
- 簡単に取り消す方法がある (アラームのオンとオフなど)
- タスクをすばやくする必要がある (忘れる前にアイデアをすばやくキャプチャするなど)
- 精度が高い (シンプルなメニューなど)
確認画面用の GUI および TTS のガイドライン
現在形を使用します。
「はい」または「いいえ」で答えることができる明白な質問をユーザーにします。 質問では、ユーザーが何を行おうとしているかを明示的に確認する必要があり、その他の明白なオプションが存在してはなりません。
音声コマンドを最初に認識できない場合に、再確認用に質問のバリエーションを提供します。
GUI: エンティティが表示される場合は、その参照を使います。 エンティティが表示されない場合は、エンティティを明示的に示します。
TTS: わかりやすくするため、前の回にシステムによって読み上げられていない限り、常に特定の項目またはエンティティを参照します。
条件 | TTS | GUI |
---|---|---|
前の回でエンティティを未読み取り/エンティティを表示 | ベガス テック カンファランスをキャンセルしますか。 | この旅行をキャンセルしますか。 |
前の回でエンティティを未読み取り/エンティティを非表示 | ベガス テック カンファランスをキャンセルしますか。 | ベガス テック カンファレンスをキャンセルしますか。 |
前の回でエンティティを読み取り/エンティティを非表示 | この旅行をキャンセルしますか。 | この旅行をキャンセルしますか。 |
エンティティを表示してメッセージを再表示 | この旅行のキャンセルを希望しましたか。 | この旅行をキャンセルすることを希望しましたか。 |
エンティティを表示せずにメッセージを再表示 | この旅行のキャンセルを希望しましたか。 | ベガス テック カンファレンスをキャンセルすることを希望しましたか。 |
曖昧性の除去
AdventureWorks cancel trip disaiguation AdventureWorks "Cancel trip" disaiguation をのスクリーンショット
一部のタスクでは、タスクを完了するには、ユーザーがエンティティの一覧からエンティティを選択する必要があります。
不明瞭解消画面の GUI と TTS の両方の文字列はアプリおよびアプリ アイコン (提供された場合) によって指定され、Cortana アバターの代わりに表示されます。
ユーザーが不明瞭解消の質問に応答した後は、アプリは進行状況画面に移動するのを避けるため、500 ミリ秒以内に次の画面を提供する必要があります。
不明瞭解消画面用の GUI および TTS のガイドライン
現在形を使用します。
表示されるエンティティのタイトルまたはテキスト行で回答できる、明確な質問をユーザーにします。
最大 10 個のエンティティを表示できます。
各エンティティには固有のタイトルが必要です。
音声コマンドを最初に認識できない場合に、再確認用に質問のバリエーションを提供します。
TTS: わかりやすくするため、前の回に読み上げられていない限り、常に特定の項目またはエンティティを参照します。
TTS: 3 つ以下で短い場合を除いて、エンティティの一覧を読み上げないでください。
条件 | TTS | GUI |
---|---|---|
プロンプト - 項目が 3 つ以下 | どのベガス旅行をキャンセルしますか。 ベガス テック カンファレンス、またはベガスのパーティのどちらですか。 | どれをキャンセルしますか。 |
確認 - 3 つを超える項目 | どのベガス旅行をキャンセルしますか。 | どれをキャンセルしますか。 |
再確認 | どのベガス旅行のキャンセルを希望しましたか。 | どれをキャンセルしますか。 |
Completion
AdventureWorks cancel trip completion AdventureWorks "Cancel trip" completion
タスクが正常に完了したら、アプリは要求されたタスクが正常に完了したことをユーザーに通知する必要があります。
完了画面の GUI と TTS の両方の文字列はアプリおよびアプリ アイコン (提供された場合) によって指定され、Cortana アバターの代わりに表示されます。
適切な状態でアプリを起動する起動パラメーターと共に、アプリへのリンクを提供する必要があります。 これにより、ユーザーは自身でタスクを表示または完了できます。 Cortana に、リンク テキスト ([Adventure Works に移動] など) が表示されます。
完了画面用の GUI および TTS のガイドライン
過去形を使用します。
タスクが完了したことを明示的に示すため、動作動詞を使います。
エンティティが表示される場合、または前の回に参照された場合は、参照するだけにします。
条件 | TTS | GUI |
---|---|---|
前の回でエンティティを表示/読み取り | この旅行をキャンセルしました。 | この旅行をキャンセルしました。 |
エンティティを非表示/前の回でエンティティを未読み取り | ベガス テック カンファレンス旅行をキャンセルしました。 | "ベガス テック カンファレンス" をキャンセルしました。 |
エラー
のスクリーンショット
次のいずれかのエラーが発生した場合、Cortana には同じ汎用エラー メッセージが表示されます。
- アプリ サービスが予期せず終了する。
- Cortana がアプリ サービスとの通信に失敗する。
- Cortana でハンドオフ画面または状況進行画面が 5 秒間表示された後で、アプリが画面を表示できない。
関連記事
Windows developer
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示