スキルのVUIをデザインする前に、ユーザーがAlexaとどう対話するかを理解する必要があります。ユーザーはウェイクワードを使ってAlexa搭載デバイスをスリープ状態から復帰させ、質問やリクエストをします。画面付きのAlexa搭載デバイスでは、スキルが対応していれば、画面をタッチしてAlexaと対話することもできます。
人は何千年もの年月をかけ、言葉や意思疎通の規範を習得し、進化させ、定義してきました。一方、機械が人との会話の仕方を学んできた時間はほんのわずかでしかありません。 音声インターフェースならではの課題もあります。たとえば、会話中のコンテキストの切り替えやあいまいさ、インテントの特定、ユーザーの現在の状態や気分に気付けない、などです。ユーザーに優れたエクスペリエンスを提供するには、スキルを開発する際にこうした課題を考慮したプランを立てる必要があります。 次のビデオでは、VUIを慎重にデザインしないことで起こりうるさまざまな問題をいくつか紹介します。
この例では、ユーザーが1回で必要な情報をすべて提供していますが、Alexaはそれらの情報を一度に解析できません。Alexaがユーザーの発話を理解できないわけではありません。スキルのVUIが、人間の自然な会話から情報をうまく推論できるようにデザインされていないことが問題なのです。
この例では、コンテキストから必要な情報を取得できていることを、Alexaが認識できていません。 ここでも、VUIデザインが状況のコンテキストから情報を推論できていません。それどころか、特定の質問の回答を何度も求めています。これでは、ユーザーは不満に思うでしょう。
この2つの例から、VUIは人間同士のような自然な会話にできるだけ近い形でデザインすることが重要だとわかります。VUIをうまくデザインすることで、スキルの使いやすさもユーザーの満足度も飛躍的に高まるのです。
ユーザーに機械と会話するために新たな言語を学習したり、ルールを覚えたりするよう強制してはいけません。機械がユーザーの思考パターンに合わせるのであり、その逆ではありません。
スキルのVUIでは、音声コマンドを使って、情報の階層から重要な情報に簡単にたどり着けるようにします。
音声インターフェースは、ユーザーが目や手を離せなくてもタスクを実行できるようにします。
自然な会話によってユーザーがコラボレーションしたり、助け合ったり、一緒に遊んだりできるような音声エクスペリエンスを提供します。たとえば、Alexa搭載デバイスを使って、家族で一緒にゲームをプレイできるようなエクスペリエンスです。
スキルのVUIデザインで重要なのは、自然な会話にすること、スキル全体を通してユーザーにとって魅力的であること、そしてAlexaのペルソナを変えないことです。魅力あるVUIをデザインするために考慮すべき点を以下にまとめました:
Alexaには、正しい答えを教えてくれる面倒見のよさが必要です。次の例を見てみましょう:
冗長な質問することでユーザーの関心をそらさないようにします。例えば、「はい」か「いいえ」で答えてもらう質問をしているのに、あえてそれを聞くような質問は冗長です。 次の例を見てみましょう。
スキルのVUIを作成するには、ユーザー発話のコンポーネントについて知ることが必要です。以下の図でコンポーネントをクリックすると、それぞれの詳細が表示されます。
ウェイクワード
ウェイクワードにより、Alexaはユーザーのコマンドの聞き取りを開始します。
起動フレーズ
起動フレーズは、アクションを次のプロセスに移行させるための言葉です。これにより、Alexaはその次に続く言葉がスキルの呼び出しだと理解します。起動フレーズには、「教えて」、「聞いて」、「起動して」、「開始して」、「使って」などがあります。
呼び出し名
ユーザーがスキルとの対話を始めるために、言う必要のある名前です。たとえば、十二星座占いスキルを使う場合、「アレクサ、十二星座占いに私の運勢を聞いて」のように言います。
発話
簡単に言うと、発話はユーザーの言うリクエストのことです。音声リクエストにより、スキルを呼び出したり、スキルに情報を伝えたり、Alexaのアクションを確認したりすることができます。ユーザーがリクエストする方法をできるだけたくさん考えてみましょう。
スロット値
スロットとは、ユーザーの音声リクエストに含まれる入力値のことです。これらの値により、Alexaはユーザーのインテントを理解できます。 この例では、ユーザーは出発日として「来週の金曜日」という入力情報を提供しています。この値はインテントのスロットであり、Alexaがスキルコードの処理のためにLambda関数に渡します。
さまざまなタイプのスロットを定義できます。上記の例のtravel dateスロットはAmazonの標準AMAZON.DATEタイプを使用して日付(「今日」や「次の金曜日」)を示す単語を日付形式に変換します。from Cityとto Cityはどちらも標準AMAZON.CITYスロットを使用します。
旅行でどのようなアクティビティを予定しているかユーザーにたずねるようこのスキルを拡張した場合、カスタムスロットタイプLISTOFACTIVITIESを追加して、「ハイキング」、「ショッピング」、「スキー」などのアクティビティのリストを参照することができます。
インテント
インテントとは、ユーザーの音声によるリクエストを満たすアクションのことです。インテントでは、スロットという引数を任意で使用することもできます。
発話をいくつか作成したら、変数情報を表す単語またはフレーズに注目してください。これらがインテントのスロットになります。
発話 | マッピング先 |
---|---|
「金曜日に旅行に行きます | TRAVEL_DATE |
「京都に行きたい」 | TO_CITY |
「次の金曜日、神戸から京都に行きたい」 | FROM_CITY, TO_CITY, and TRAVEL_DATE |
「神戸から京都にドライブしています」 | MODE_OF_TRAVEL, FROM_CITY, and TO_CITY |
「京都でハイキングするためにドライブ中です」 |
MODE_OF_TRAVEL, TO_CITY, and ACTIVITIES |
スキルが複雑で何度も会話のやり取りが繰り返される(マルチターンの会話)場合、任意でスキルのダイアログモデルを作成することもできます。ダイアログモデルとは、各インテントを実行するのに必要なすべての情報を収集する、スキルとユーザー間のマルチターンの会話に関する手順を指定した構造体のことです。情報を集めるための質問用のコードの記述を簡素化できます。
スキルのコンポーネントについての知識があれば、対話モデルも理解しやすくなります。対話モデルとは、スキルに指定した発話、インテント、スロットを組み合わせたものです。 対話モデルを作成するには、リクエスト(インテント)とフレーズ(サンプル発話)を定義します。定義に基づいて、Lambdaのスキルコードはスキルがどのように各インテントを処理するかを判断します。まず机上でインテントと発話を定義し、それらを繰り返し使ってユーザーがスキルと対話するできるだけ多くの方法に対応できるよう考えます。 その後、 Alexa開発者コンソールで、インテント、発話、スロットを作成します。コンソールでは、対話モデルのJSONコードが作成されます。JSONの対話モデルは、任意のJSONツールを使って自分で作成してから、コピーして開発者コンソールに貼り付けることもできます。
人間同士の会話を再現できるよう、スキルをデザインすることがもっとも重要です。コードを書く前に、ユーザーがスキルとどのように対話するのかを入念に考える必要があります。このステップを省略してしまうと、ユーザーとの対話がうまく行かない使いにくいスキルが完成してしまいます。
また、フローチャートを使って会話の分岐を考えたくなりますが、それもやめてください。 フローチャートは会話的とは言えません。フローチャートは複雑で読み上げることができません。また、カスタマーサポートの自動応答メニューのような使いづらいエクスペリエンスとなってしまいます。カスタマーサポートに電話して自動応答メニューを選択するのが好きな人はいないので、使わないようにしましょう。代わりに、シチュエーショナルデザインを使います。
シチュエーショナルデザインとは、音声ユーザーインターフェースをデザインするための音声ファーストな方法です。会話に集中させる単純なダイアログからデザインしてみましょう。ユーザーとスキルの各対話をターンと呼びます。ターンには、コンテキストを表す状況があります。スキルを初めて起動するユーザーの場合、まだわかっていないデータのセットが存在します。たとえば、Cake Timeをユーザーが最初に起動したとき、スキルはまだそのユーザーの誕生日を知りません。この状況では、スキルは「お誕生日を教えてください」と聞きます。 ユーザーが誕生日を答えると、スキルは次回使えるようにその情報を保存します。次にスキルと対話するとき、スキルはその日がユーザーの誕生日かどうかをチェックします。誕生日であればお祝いの言葉を伝え、誕生日でなければ次の誕生日までのカウントダウンを伝えます。
シチュエーショナルデザインでは、会話の際に過去に遡って情報を入手します。ユーザーとAlexaとの各対話はターンとして処理されます。下の例の状況では、ユーザーの誕生日はまだわかっておらず、スキルはユーザーに誕生日をたずねる必要があります。
各ターンはユーザー発話、状況、Alexaの応答を含むカードを使って表すこともできます。
これらのカードを組み合わせて、ユーザーとスキルとの対話を時系列に表すストーリーボードを構成してもよいでしょう。フローチャートと違い、ストーリーボードは会話的です。