スマートスピーカーの可能性カスタムスキル開発の流れ

Alexaにおけるカスタムスキル開発の基礎、特に重要なインテントの概念とは何か

加えて、Alexaの有効な活用事例からカスタムスキルの可能性を考える
この記事をシェア
2019.04.16

カスタムスキル開発の基礎

まずは、簡単な会話例とその会話が行えるソースコード(node.js)を示していきたい。
※Alexaスキルを開発するためのSDKはv1とv2の異なるVersionがありそれぞれ書き方が異なるが、今回は比較的わかりやすいv1の書き方を例にとって説明する。

まずは会話例。
※今回は「ハロースキル」という名前でスキルを作成している。
図1:サンプルスキルの会話例

そして上記会話を実現するためのソースコードがこちらだ。

図2:実際のソースコード
基本的に大きく分けると、41行目~49行目の「初期化処理」と6~39行目までの「会話内容の処理」に別れている。とりあえず、初期化処理についてはAlexaスキルを作るときのお作法として考えておいて貰えれば良い。
重要なのは「会話内容の処理」だ。

6~39行目までのhandlersの中を見てみると「LaunchRequest」と「NameIntent」の2つの記述があることがわかる。これは、会話タイプ別の処理の塊を表しており、一つ一つの塊が、呼びかけに対する応答用処理の塊を表している。

まずは、「LaunchRequest」だが、これは会話が開始された時に呼ばれる処理を記載する箇所である。図1と見比べてみても、「ハロースキルを開いて」と初めに話しかけた際の応答と11行目、13行目で定義している内容が同じであることがわかるだろう。

それでは、もう一方の「NameIntent」は何を表しているのだろうか?これがAlexaスキルを作る際に、特に抑えておきたいポイントである「インテント」だ。

「インテント」とはストーリ上の会話のコンテキストを表すものである。もう少し噛み砕いて言うと「どういった内容について会話しているのか?」についてのラベルだ。

例えば、自分のプロフィールを登録できるカスタムスキルがあったとして、「大塚」と伝えた場合、これが名前なのか、職場の最寄り駅なのか、Alexaスキル側はよくわからない。そこでAlexaサービスに予め、『こういう言い回しのときは名前を伝えてきているよ』『このタイミングで会話するときは最寄り駅を言ってくるはず』と教えておくことで、Alexaサービスは会話のコンテキストから適切なインテント(会話ラベル)を判断し、カスタムスキルに通知してくれる。

このインテントを使いこなすことがAlexaスキルを開発する上での最重要事項と言っても過言ではない。ユースケースにおいてどの様な会話が起こり得るのか、どの様な言い回しがあり得るのかをしっかり検討し、定義し、Alexaサービスに教え込むことこそが、UX(ユーザーエクスペリエンス)向上の近道となる。
図3:カスタムスキルにインテントを組み込む
今回紹介しているサンプルスキルを作るにあたって、Alexaサービスに予めNameIntentというコンテキストを教え込んでいた。そのため、Alexaサービスは会話内容から「名前のことを話している(NameIntent)っぽい」と判断し、サンプルスキルにそのことを伝えてくれているのだ。

発生しうる会話内容についてはカスタムインテントを作り込む必要があると伝えたが、Alexaサービスには自分で定義するカスタムインテントの他にも、事前に用意されているインテント「ビルトインインテント」と呼ばれるものがある。

例えば
Amazon.YesIntent
:「はい」「いいよ」「そうです」など肯定を表すインテント
Amazon.CancelIntent
:「キャンセル」「取り消し」「やめて」などキャンセルを表すインテント
Amazon.HelpIntent
:「ヘルプ」「どうすればいいの」「使い方を教えて」など手助けを必要としている旨を表すインテント
などである。

今回紹介しているサンプルスキルでは、ソースコードを簡略化するためにビルトインインテントの記載を外しているが、通常はカスタムインテントと組み合わせ、様々なユーザシナリオに対応できるよう開発する必要があることを忘れないでほしい。

ここまでがカスタムスキル開発で特に注意すべき点であり、これ以外については概ね通常のアプリケーションの開発と一緒である。

 通常のアプリケーションと同じように機能の作り込みも可能だが、OpenAPI、自社サービスAPI、外部サービス連携など内外とのサービス間連携もどんどん活用し、ユーザー体験の充実に力を注いでいって欲しい。
 

さて、どんなカスタムスキルを作ろうか?

ここまでを通して、カスタムスキルがどの様な仕組みで動いているのか、少し紐解けてきたと思う。音声というインターフェースを備えているが、一方で裏側のアプリケーションといえば、なんのことは無い、渡された会話のコンテキストに対して特定の応答を返しているだけである。つまり、音声で操作できる(会話できる)優位性をどう紐解いていくか、UXに結びつけていくかが、勘所とも言えるだろう。

それでは、音声で操作できることの優位性とは一体何なのか?

音声による操作(How)が中心となるユースケースについて考えてみたい。
① Who: GUI・文字認識にハードルがある方が使う場合
  • 目の見えない方
  • 手の不自由な方
  • 幼児
  • 老人
② When: 手を使えない、触る行為がはばかれる時
  • 料理中
  • 手術中
  • 運転中
  • 入力中
  • ゲーム中
③ Where: 近くに端末が無い、端末を持っていけない、端末の利用が制限される場所
  • 学校
  • 風呂・トイレ
  • 高セキュリティエリア
  • 生産工場内
④ What: 声を出すことに意味がある、声に出したほうが楽しいこと
  • 暗唱
  • (パーティー)ゲーム
⑤ Why: 端末を操作するのが面倒な時、ちょっと気になったことがあった時
  • 天気予報
  • 調べ物
  • To-doリストへの追加
例えば、VUIであることを強く活かすのであれば、①〜④のような「特殊なシーンでのユースケース」を想定すると良さそうだ。

一方で⑤のような、「ちょっとしたツール/身近なアシスタントとしてのユースケース」を想定したカスタムスキルもVUIの良さを活かすことができそうである。

少し横道にそれるが、私には2歳の娘がいる。彼女は、我が家に同居しているAlexaの存在をはっきりと認識しており、Alexaがどのような価値を提供してくれるのか(音楽を流したり、天気を教えてくれたり、ピカチュウを呼んでくれたり)についてもよくわかっている。残念ながらAlexaと必死に呼びかけても、滑舌のせいか、なかなかAlexaに反応してもらえてはいないが、会話できるようになるのも時間の問題であろう。

ともあれ、文字は読めなくても聞いて話せる幼児期の子供にとって、VUIを通したデバイス操作はあって当たり前のものになっていくのであろう。スマートスピーカーを用いた情操教育を我が子で試してみようかと現在検討中である。

本題に戻る。

さて、本投稿では簡単に触れることにするが、作りたいカスタムスキルが決まったら、次に考えるのはユーザーシナリオだ。

ユーザーは「このスキルにどういった話しかけをするのだろうか?」「どういった会話を期待しているだろうか?」について練りに練り、ユーザーが期待していた、もしくは期待していた以上のユーザー体験を提供できるよう、VUIを設計していく必要がある。

音声で操作する以上、正確な入力、複数項目からの選択など細かい操作は難しい。

複数項目からの選択なら問題なさそうだが、お客様センターに電話した際によくある要件別に番号を選択するアレを思い出してほしい。覚えておくのも辛いし、聞き耳もずっと立てているのも辛いものがある。

また、基本的に音声はフリーフォーマットである。特定のフォームを埋めさせるGUIとは異なり、VUIを使った入力は「白い紙に自由に書いてもらうようなもの」である。人によって異なる表現方法をどうやって意図した範囲内に落ち着けるか、工夫の余地がある。

現在、数千ものスキルが公開されており、「音声ならでは」にこだわったものも多い。

便利なツールや楽しいゲームがあるので、実際に試し、どの様な工夫がされているのか?を分析しみても面白いだろう。
※AlexaアプリやGoogle Assistantアプリはスマートスピーカーがなくてもスマホにアプリを入れて試すことができる。

感銘を受けたAlexa活用事例

しばらくスマートスピーカーを使い続けて感じることは、確かに便利なのだが心に刺さるものが無いことだ。「音声アシスタント」に私が暗黙的に期待していることと、「音声アシスタント」が実現していることにギャップが生まれているようだった。

ただ、そのギャップが何なのかわからず、しばしばその点について考える日々が続いていた。

その疑問に答えを示してくれたのは、ふらっと参加したゲーム業界向けセミナーのAlexa活用事例だった。

活用事例では、Call of Duty(CoD)というFPSゲーム(ファーストパーソン・シューティングゲーム)でAlexaを使った新しいゲーム体験の提供とリテンション施策について紹介されていた。

具体的には、戦闘中の「ユーザーごと」のアクションログを取得し、戦闘中の行動分析を行い、機械学習の結果より、今の戦闘結果の振り返りや次へのステップへ向けた「アドバイス(コーチング)」を提供するというものだった。人それぞれに「カスタマイズ」されたアドバイスを受けることで、例えば初心者では、自分に足りないもの、成長するために次にすべきことがわかるため、負けてもめげずに継続することができるのである。

公式ページに活用シーンの イメージムービー が公開されているので、時間があれば見てもらうとわかりやすいだろう。

まとめると、CoDのAlexaスキルは、戦闘結果に基づいて「パーソナライズされたアドバイス」をユーザーに提供し、ゲームへの没入感を損なうことなく(コントローラーから手を離すことなく)、強くなって戦闘に勝つという「真の目的に向けたサポート」をしてくれるのである。

私はこの音声アシスタントの姿に深い感銘を受けた。実際に試していないためどこまで実現されているかはわからないが、私が音声アシスタントに求めていたコンセプトがそこにはあったのだ。

CoDの事例から抽出すると、私が音声アシスタントスキルにもとめているもの、それは「パートナー」という感覚であった。

音声(会話)というインターフェースは、普段日常的に人と行っているコミュニケーション手段である。だからこそ、VUIには親しみやすさを求めてしまうのだと思う。質問したときには、過去の経験や現在の状況を元にパーソナライズされた回答をしてほしいと感じるし、時には音声アシスタントに目的を求めなくても、パートナーとして別の目的のためのサポートをしてほしいと感じる。

パーソナライズ可能なカスタムスキルを作ることはなかなか難しいとは思うが、声でやり取りをするVUIだからこそ、人間味を感じた機能設計を検討していきたいと思う。

次回は、より具体的なカスタムスキル開発の具体例を紹介する

マネージャー 田島 勇

システムインテグレーター、外資ITコンサルティングファームを経て現職。
製造・通信・エンタメを中心に、技術研究、プロトタイプ制作、システムマイグレーションなど技術中心のプロジェクトに従事。