Actions on Googleでアプリ起動する方法

デザインやサービス内容についてたくさん議論したところで、作ったアプリを起動してくれなきゃ意味がないです。そして当然、開発者はそのユーザの再来を願ってやまないものです。

従前のGUIにおいてはアプリ起動の議論なんて必要なかったと思います。 アイコンをタップさえすれば、ユーザ様は何も考えずに意図したアプリは起動できました。その際「もう一度あのゲームを遊びたい」と思えば、アプリ名を覚えなくても、同じアイコンをタップすれば起動ができたわけです。しかも、この一連の流れは何も考えずともプラットフォーム側が提供・用意してくれました。また、そのアプリの名前やブランドを知るには、画面の最左上か最上を見れば大抵はそのアプリのタイトルが載っているものです。このようにGUIではアプリ名やそのブランドをユーザに浸透させるという意味では非常に強力なユーザインターフェイスです。

ところが、VUIにおいては、アプリ起動するために「アプリ名」と「Trigger phrase」を組み合わせる必要があり、ユーザはその両方正しく覚えてなくてはならないです。しかも、GUIではアプリ表示中に自分のアプリ名をいたる所に散りばめらることができるが、VUIではそれが大きく制限され(自分のアプリ内にアプリ名を何回言ってますか?)、アプリ名を知る機会なんてGUIと比べたらそうそうないのではないでしょうか。Trigger Phraseだって開発者の多くは知らないのではと勝手ながらに思ったりします。

これが意味することはユーザにとって、VUIアプリ起動はGUIと比べて格段に難しく、障壁が高いことです。しかしながら、そのような状況を克服するように、ユーザ様への救済処置として様々な機能がActions on Googleには用意されてます。そういった経緯から、今回はVUIで「アプリ起動は甘く見ないほうがいい」と思い、アプリ起動にのみ焦点を絞り、様々な機能をご紹介しますゾ。

この記事に出てくるアプリについて

ボイス六法

この記事に出てくる「ボイス六法」は私が開発したお気に入りのVUIアプリで、法典名と条文番号を言えばその条文を読み上げてくれるアプリです。このアプリにはImplicit invocationAction linksを施しています。なぜ六法だったのかというと、私自身が法律の勉強をしていて、六法を引くのが面倒だったということがあります。また、アプリを開発し教授に宣伝したところ「盲目の人でも法律を勉強できる」アプリだと褒めてもらった経緯があります。利用者が限られるため、毎月のセッション数は低いものの、Assistantに条文を聞いたときに、このアプリに流入していることがみてわかると思います。

連想遊戯

この記事に出てくる「連想遊戯」はVUIにおいても人と人はつなげることはできるのか?という仮説から開発したアプリです。例えば、「りんご」→「赤い」というふうに連想した言葉を登録していくゲームです。たくさんの方に使われているようで嬉しいです。このアプリでもImplicit invocationAction linksを施していますが、それに加え、Built-in Intentも施してます。垢バンしない代わりに、下ネタと差別用語は即アプリ終了、「わからない」系の言葉を言った場合はゴリラ開発者(私)をべた褒めするような仕組みをいれてます。Built-in Intentの流入数については今回差し控えさせていただきますゾ。

罰ゲー

この記事に出てくる「罰ゲー」は私が開発したなかでもっともアプリ起動数が多いアプリになります。具体的な流入数やグラフは大人の都合で控えますが、海外勢に人気?みたいです。しかし、このアプリは前述通り「アプリ起動数」のみを焦点に当てたアプリで、特にクリエイティブな発想はしてないので、さっさと地に落ちろ、とか思いながら、Google translateを駆使して世界展開を狙っている、なんだかんだいって愛着が湧くアプリです。このアプリでもImplicit invocation と Built-in Intentを施してます。

では、アプリの宣伝はこのぐらいにして早速いきましょう。

Invocationの意味は「アプリ起動」

まず基本として確認しておきたいのはこの「invocation」の意味です。Actions on Googleの世界ではこのInvocationの意味を「アプリ起動」といった意味で使われます。英和辞典では「祈り、祈願」などの意味がありますが、こちらの意味は一切使いません。例えば「invoke app」とか言われたら「アプリが成功するように祈願する」とか言う意味ではなく、「アプリ起動」だと思ってください。

Implicit & Explicitの辞書的意味は一旦忘れましょう

辞典ではExplicitは「明白な」という意味で、Implicitは「暗黙な」とかいう意味記述されてます。これも一旦忘れてください。ただ、「Ex-」と「Im-」があり、それぞれなんとなく「対概念なんだなぁ」という感覚だけを今の所認知しておいてください。それよりも重要な対概念は「絶対的にアプリ起動するフレーズ」と「相対的にアプリ起動するフレーズ」があることのほうが重要に思えます。前者がひとつしかないことで、それを補うように相対的なアプリ起動の機能がたくさんある、という状態です。

Explicit invocationの意味は「アプリ名で起動する」

あなたは特定のアプリを起動してほしいことをAssistantに伝えます、このときアプリ起動時に使われるフレーズをExplicit invocationといいます。私が知る限りでは、VUIにおいて絶対的なアプリ起動はExplicit invocationしかありません。VUIにおいて絶対的なアプリ起動というのは、声でクエリを投げたときに、Assistantさんに即アプリ起動してくれることです。

「Explicit invocationの内容? そんなの知っているぜよ」という方は、「Explicit invocationの弱点について」から読んでください。

  1. ユーザ「ボイス六法につないで」←Explicit invocation
  2. アシスタント「わかりました。ボイス六法です」←起動を受け入れ
  3. アプリ「こんにちは!はじめまして。ボイス六法です。📖」以下略 ←起動
  4. ユーザ「憲法9条」←クエリ(あなたが言ったこと)
  5. アプリ「日本国民は、正義と秩序を基調とする国際平和を誠実に希求し」以下略

Actions on Googleの世界ではExplicit invocationを「アプリ名 + Trigger Phrase」で実現します。例えば例文として以下があります。

  • 「ボイス六法と話す」
  • 「ボイス六法につないで」
  • 「ボイス六法を頼む」

Trigger Phraseとは「話す」, 「つなぐ」, 「会話」, 「繋ぐ」, 「頼む」, 「言う」という動詞から構成されます。

でも、面倒なことに「アプリ名じゃない」や「アプリ名のみ」、「Trigger Phraseに載っていない」ような、以下の場合はアプリ起動はできません

  • 「六法につないで」→「六法」アプリ名ではない
  • 「ボイス六法」→アプリ名だけだから起動できない
  • 「ボイス六法を開いて」→「開いて」はTrigger Phraseではない
  • 「ボイス六法をダブルクリック」→「ダブルクリック」はTrigger Phraseではない

Explicit invocationにクエリを挟む技がある

「クエリ」とはあなたが言ったこと言いたいこと、です。この場合の「クエリ」とはあなたがアプリに言ったこと・言いたいことです。例えば以下の会話例を見てみましょう。

  1. ユーザ「ボイス六法につないで憲法9条を頼んで」←Explicit invocation
  2. アシスタント「わかりました。ボイス六法です」
  3. アプリ「日本国民は、正義と秩序を基調とする国際平和を誠実に希求し」以下略

上記の会話例ではアプリが何ができるかはすでに知っていて、あなたが知りたいのは「憲法9条の条文」である場合、アプリの紹介文などは必要ないですね。そういう場合にクエリを挟み込んで使う、いわゆるベテランユーザ向けコマンドとなります。

Explicit invocationの実装方法

Explicit invocationの実装方法は特にないです。アプリ名を指定さえすれば、その「アプリ名 + Trigger Phrase」で自動的にアプリ起動が可能になります。

Explicit invocationの弱点について

Explicit invocationは原則「アプリ名とTrigger phrase」という方法でしかアプリ起動を行えず、絶対的アプリ起動も私の理解ではExplicit invocationのみ。しかし、以下のようなケースにおいては、Explicit invocationのみでは対応できないケースがあります。例えば、

  • ユーザ知りたいこと・やりたいことがあっても、そのアプリ名は知らない場合はどうでしょうか?
  • アプリの体験はしているけど、もう一度遊びたくても、そのアプリ名を知らなかったら?
  • アプリ名を知っていてもなかなかアプリ名を認識してくれない場合はどうでしょうか?
  • そもそも通常のユーザは「Trigger phrase」という呪文についてもあまり親しんでないという場合があります。

「相対的アプリ起動」機能を導入しよう。

上記のようにExplicit invocationでは対応しきれない場合、空いた隙間を埋めるようなアプリ起動の方法や機能を私は勝手に「相対的なアプリ起動」と呼んでいます。具体的には「Implicit invocation」というユーザのクエリに対してアシスタントさんがアプリを紹介する機能や, 「Built-in Intent」といってユーザがあるカテゴリーのクエリに対応するアプリを紹介する機能, 「Action Link」というGUI(WEB)からアプリを紹介する機能があります。

しかし、これらの機能はExplicit invocationのようにVUI上のクエリ一発で起動するのではなく、あくまでアプリ紹介、つまり起動までにワンアクションが挟まれていたり、GUIという別のコミュニケーション空間からアプリ起動を促す方法だったりします。そのため、絶対的なアプリ起動と比較して、それぞれ特徴的であること理由に、勝手に「相対的なアプリ起動」と呼んでいたりします。

さあ、簡潔にこの相対的なアプリ起動をできる限り使い、湯水のごとくユーザをアプリに流し込みましょう。

Implicit invocationsはクエリに対してアプリをおすすめする機能

Implicit invocationsはあるクエリに対してアシスタントがおすすめのアプリを紹介する機能です。例えば、「憲法9条」というクエリは、一見アプリ名「ボイス六法」と発音上まったく関係ありません。しかし、このクエリを対応するようにImplicit invocation登録しておけば、アシスタントがアプリを紹介してくれます。

例えば、アプリ起動するまでのやりとりは次のようになります。

  1. ユーザ「憲法9条」←クエリ
  2. アシスタント「ボイス六法がおすすめです。起動しますか?」←紹介
  3. ユーザ「はい」
  4. アシスタント「わかりました。ボイス六法です」
  5. アプリ「こんにちは!はじめまして。ボイス六法です。📖」以下略 ←起動

このように重要なのはあくまでアプリを「おすすめ」してくれる機能であり、Explicit invocationsのようにそのままアプリ起動してくれる機能ではありません。そのため、Implicit invocationsではアプリ起動までにワンクッションIntentがあるというのと、ユーザによってアプリを紹介されない場合があるということを留意したほうがいいです。

Implicit invocationでどのくらいアプリ起動しているか観察してみよう。

実際に公開しているアプリで、どのくらいの人がImplicit invocationsで入ってきているのかを調べることができます。
以下画像のように、Actions ConsoleからAnalytics ① -> DISCOVERY ②を選択します。

この表にある語句の意味は画像にすでに記述しましたが以下のとおりです。

  • Matched spoken phrase – ユーザがAssistantに伝えたクエリ
  • Matched action – 応対したIntent名
  • Impressive – Assistantがアプリに紹介した回数
  • Selections – ユーザが紹介を承認し、アプリ起動した回数
  • Selection’s late – Assistantが紹介した回数に対し、どの程度の割合でユーザが承認しアプリ起動したかを示す割合。

詳しくは以下リンクを参考にしてみてください。
https://developers.google.com/actions/console/analytics#discovery

Implicit invocationの実装方法

Implicit invocationsの実装方法は、あるIntentのTraining phraseを追加しておけば、勝手Implicit invocationsとして登録します。以上です。超簡単ですが2つほど注意すべき点があります。

ひとつめ、登録したImplicit invocationsを公開アプリに適応させるためには、改めて審査が必要です。これはDialogflowのTraining phraseを編集したから、スナップショットのバージョンを更新するべきというのが理由です。詳しくは以下を参照されたし。

Note: Starting May 8, 2018, any new Action submission will create a snapshot of your Dialogflow agent at the time of submission. This snapshot (or version) will not be impacted by any future edits you make to your Dialogflow agent. For edits to go live, you’ll need to submit your draft for alpha, beta, or production release in the Actions Console.

https://developers.google.com/actions/dialogflow/submit#dialogflow_versioning

ふたつめ。これはImplicit invocationsに限らず、Training phraseを使うときの注意点とも言えるのですが、Training phraseにEntityを用いるとき、Entityと文章の間に半角スペースを必ずつける必要があります。以下の画像はDialogflowのIntent > Training phrasesのスクショ画像になります。

これをActions Console (画面左側メニュー「Actions」 -> 「該当Intent名」を選択)でみるとお以下画像のようにParameterを色別に出力されます。

しかし、仮にEntityと文章との間にスペースがなかった場合、その文章までもがEntityの一部として認識し、Actions Console側で赤く表示してくれたりします。試しにTraining phraseに「憲法9条」というスペース抜きのクエリを一つついかしてみます。Dialogflow上では問題なく識別しているようですが、

Actions consoleに戻ってみると以下のようにEntityとEntity、Entityと文章の分別がつかないことで、赤くアラートがつくのがわかります。

この赤くアラートがついたアプリをお持ちの方は、Implicit invocationがうまく動作しない可能性があるため、今すぐDialogflow側でスペースをいれることをおすすめします。

Built-in Intentはカテゴリ一覧にアプリを出現させる機能。

例えばGoogle Assistantちゃんに「ゲームしたい」というと「どれを利用しますか?」というふうにリスト表示でおすすめアプリを出力してもらえます。ここに登録されているアプリはBuilt-in Intentで登録したアプリです。
https://developers.google.com/actions/discovery/built-in-intents

この機能は非常に強力です。「罰ゲー」や「連想遊戯」、「みりんみりん」のセッション数はこれを導入したことによって飛躍的に伸びました。具体的な数は控えますが、自分のアプリに(バグがないと)自信がある場合はぜひ取り入れるべき機能です。

ただ残念なことに、現在はゲームカテゴリーしか登録できません。

Note: The ‘Play Game’ intent is the only built-in intent that is generally available at this time. Other built-in intents mentioned in this documentation are currently in developer preview. You can build and publish Actions that use this feature, but we are still working on fine tuning discovery and ranking.

https://developers.google.com/actions/discovery/built-in-intents

Built-in Intentの計測を観察する方法

Built-in Intentの計測方法は同じく、Action Console > Analytics > Discoveryページより確認できます。以下の画像は「連想遊戯」の数です。

ここの表にあるBUILT_IN_INTENT_MATCHという行がBuilt-in Intentをつたってアプリ起動したユーザー数の情報になります。ここにいうImpressionというのはおそらく指定した期間のBuilt-in Intentの発動数だと思います。これは対応している言語の数によって数が変わってくるのかと思います。今回は「海苔弁」ということで具体的にどの程度アプリ起動されているのか伏せましたが、仮に、Section rateが5%だった場合、ここのSectionsが約15000のアプリ起動はくだらないです。そして、その15000という数字を他のSectionsと比べて見たとき、いかにBuilt-in Intentが強力か、というのがわかると思います。

Built-in Intentの実装方法

任意のIntentのEventにAction IDを登録します。公開版に反映するには改めて審査が必要です。以上です。簡単でしょ?

この例ではWelcome IntentにBuilt-inのイベントが発動するようにしたのですが、任意のIntentなので別にWelcome intentにしなくてもよいです。また「Add event」という記入箇所には「actions.intent.PLAY_GAME」という文字列を記入し、Enter押すと自動で画像のように「Play game」と出力されます。

このAction IDは以下のリファレンスを参照されたし。
https://developers.google.com/actions/reference/built-in-intents/

リンクを踏むと、アプリ起動してくれる。その名はAction Link

おそらくキャンペーンを打つとか、マーケティング的な意味でGUIからVUI環境にユーザを誘導させることを目的としている機能です。
https://developers.google.com/actions/deploy/action-links

Action LinkはDirectoryページへのリンクや、Opt-inリンクとは違います。DirectoryOpt-inはActionsアプリ詳細ページへのリンクでした。しかし、Action Linkがすごいのはそのリンクを踏んだら、指定したアプリを起動することです。私の場合はTwitterで連想遊戯でこの機能を使っていて、ワード登録すると、Action Link も出力するようにしています。これをタップするとアプリ起動ができます。例えばAndroidでは以下のような挙動をします。

ただし、iOS Twitterではダイレクトにアプリ起動するのではなく、App directoryが表示されます。他方、Action Linkのみを使うと、どの端末に飛ばすかの選択画面が表示されます。

Action Linkの計測を観察する方法

こちらも同様にActions Console(Analytics -> DISCOVERY)から詳細を確認することができます。

Action Linkの実装方法

これを実装するためには、Actions Console側で機能をオンにするのと、扱うリンクについて理解する必要があります。

Action Linkを有効にする方法

Action Linkを有効にする方法は以下の通り

  • ①Actions Consoleより「Actions」メニューをクリック
  • ②Action Linkを有効にしたいIntentをクリック

画面最下部まで引っ張って「Links」の箇所をクリックしトグル展開する

  • ③「Would you like to enable a URL for this Action?」スイッチをオン
  • ④Link titleの箇所にそれっぽい文言を入れる
  • ⑤ここに出力されるリンクはコピーしてメモっておきましょう。

DialogflowとActions Console編集し、それを公開バージョンに反映させるためには、そう、審査が必要です。もちろん、Action linkもこれに入ります。ここのトグルをオンにしていい気になっているそこのアナタ、忘れずにね。

Action Link Parametersについて

上記⑤で見たリンクを見てみましょう。

このようにuid/直後にある数値はアプリ固有のIDですが、Project IDではありません。Opt-in Linkとも同一の数値です。また、パラメータにはIntent名がついてます。あと、注意してほしいのが、言語設定を必ずつけるということです。(私はこの言語設定のつけ忘れで躓きました。)値は、&hl=jaでも良いと思うし、&hl=ja-JPでも良いと思います。詳しくは以下ドキュメントを参照されたし。
https://developers.google.com/actions/deploy/action-links#action_link_url_specification

終わりに

いかがでしたでしょうか?冒頭に書いたように、VUIにおいてアプリ起動は考えなければならない問題です。絶対的アプリ起動がExplicit invocationしかない状況のなか、「ユーザに再度このアプリを使いたい」と思ったとき、または、自分からアプリ起動を進める方法について、今まで紹介した相対的なアプリ起動でそれをできる限りカバーするべきです。

これが言いたくて、実装方法にわかりやすさが欠けたかもしれないけど、これは誰かが改めて書いてくれることを期待しているという意味だぜ!!
わかりづら!と思ったら書き直してもいいかんね。

実は「相対的なアプリ起動」は他にも紹介していないのがあります。それは「Daily Updates」,「Routine Suggestions」,「Push Notifications」のいわゆるUser engagement機能ですが、今回は疲れたのでまた別の機会か、他の方が書いてくれることに期待します。

それでは今宵も楽しいVUI開発ライフを!ノシ

SNSでもご購読できます。

コメントを残す

*