Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「OK Google」でアプリの機能を呼び出してみる

「OK Google」でアプリの機能を呼び出してみる

horitamon

March 16, 2022
Tweet

More Decks by horitamon

Other Decks in Programming

Transcript

  1. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 • モバイルアプリエンジニア
 (Androidがメイン)
 • 2021/09

    Voicy入社
 • 髪をこんなことにしたのは入社翌月 
 自己紹介
 horitamon(堀 多聞)

  2. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 はじめに
 お話しすること
 • 個人的に学習して理解したこと


    お話ししないこと
 • Voicyにおける開発状況
 ※実際に開発されている機能ではありません!
 今回の発表内容

  3. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 はじめに
 
 • 高校生の頃に一時期「Hey

    Siri」が流行ってAndroidのぼく涙目
 
 • 悔しくてiPhoneに変えたら2016年にGoogleアシスタントが発表
 「OK Google」と呼びかけると天気を教えてくれたり、
 Google検索してもらえたりするように
 
 • アプリを起動したり、ショートカット的な使い方もできるようになった
 「OK Google」使ってますか?

  4. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 Google I/O 2021にて
 •

    Android アプリの音声対応化
 • アシスタント向けの Android ショートカット
 Androidアプリへの導入方法のセッションが公開

  5. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 実装の流れ①
 
 • build.gradleで設定しているapplication

    Idを確定して
 アプリをストアにアップロードする
 • 機能はできてなくてOK、
 内部テストでOK、審査に出さなくてもOK
 • application Idを一意にしないとテストツールが使えない模様
 Play Storeにアップロード

  6. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 実装の流れ②
 
 • 「どんな操作ができるか」を定義するファイル


    • Built-in intents(BII)の中から、アプリで実現したい操作を選んで
 capability要素を追加していく
 
 今回追加しているのは
 • タスクを検索する→「Get thing」
 • 完了タスク一覧画面を開く→「Open app feature」
 shortcuts.xmlの作成

  7. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 Built-in intentsとは
 
 •

    ユーザーが発した言葉からアプリで実現したい操作を解釈して
 intentに変えてくれる仕組み
 →正確な/一意な言葉じゃなくても同一の意味として判別できる
 
 • テンプレートのようにいくつもある
 https://developers.google.com/assistant/app/reference/built-in-intents
 
 これがGoogleアシスタントを使う”肝”

  8. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 Built-in intentsとは
 
 例えばGet

    thingは
 • 「タスクリストでカレーを検索」
 • 「タスクリストからトマト缶を探して」
 →微妙にゆれがあっても
  探したい物の文字列をextrasに付与してintentを発行してくれる
 これがGoogleアシスタントを使う”肝”

  9. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 実装の流れ③
 
 • intentのextrasにshortcuts.xmlで指定したとおりのキーで


    要素が格納されている
 →取り出して画面遷移とかする
 intentから要素取得

  10. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 実装の流れ④
 • 機能名や操作の名称のゆれを吸収する場合に設定
 例えば


    • 「タスクリストで完了タスク」
 • 「タスクリストで完了を表示」
 • 「タスクリストで終了タスク」
 • 「タスクリストで終了を表示」
 どれを言っても完了タスク一覧画面を開いて欲しい時に設定する
 inline inventoryの作成

  11. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 実装の流れ④
 • shortcuts.xmlにshortcut要素を追加
 •

    arrays.xmlに名称のゆれを列挙し、shortcuts.xmlから参照
 →どう言っても「completed_tasks」がextrasに格納される
 inline inventoryの作成

  12. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 • Google AssistantというAndroidStudioプラグインでテスト可能
 •

    実装したGoogleアシスタントの挙動の「プレビュー」を作成できる
 • ワンクリックで各種capabilityがテストできる
 • 実際にGoogleアシスタントからも操作できるようになる
 →細かい使い方は省略(直感的にわかる)
 実装の流れ⑤
 動作確認

  13. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 日本語では「一応使える」状態
 
 • built-in

    intent一覧ではどのBIIも対応言語に日本語は入ってない
 (と言うか英語とポルトガル語しかない)
 恐らくサポート外

  14. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 アプリ名が認識されないことがある
 • アプリ名を「Voicy」(アルファベット)にしているので
 「ボイシー」という言葉と結びついていない模様


    →うまく動かずGoogle検索になってしまう
 
 • 「スポティファイ」って言うとちゃんと「Spotify」ってなるから
 何かしら申請したり、もしくはいっぱい呼んでもらって
 学習とかしてくれたらちゃんと認識してくれるのかなあ…
 (「ラクマ」って言うとちゃんとラクマを認識してくれます。何かしたのかな…?)
 
 「ボイシー」って言うと「ボイス」「おいしい」になりがち

  15. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 actions.xmlからも作れる
 • ほとんど同じ機能を実装できる方法がもう一通りある
 https://developers.google.com/assistant/app/legacy


    • URLからもわかる通り、こちらはレガシーになっていく模様
 • 違いはintentに付与されるのがextrasではなくディープリンクになる
 ↓
 • 既にディープリンクから起動する導線があるなら
 こっちを使った方がスムーズなのかもしれない
 shortcuts.xmlから作るのはベータ版

  16. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 まとめ
 • Googleアシスタント経由のアプリ起動は結構簡単に実装できる
 


    • 正確な言葉じゃなくても、Googleアシスタントがうまいこと
 ゆれを吸収してくれたり、ゆれの定義ができたりする
 
 • 日本語でも動くけどサポートされていない可能性がある
 
 • Googleアシスタントに認識されるくらいまで
 アプリの知名度を上げていく必要あり?

  17. ©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 まとめ
 • 全体概要
 ◦

    Build App Actions | Google Developers 
 • Codelab
 ◦ Extend an Android app to Google Assistant with App Actions (Beta) 
 • Built-in intents一覧
 ◦ App Actions built-in intents | Google Developers 
 • Google I/Oセッション
 ◦ Android アプリの音声対応化 
 ◦ アシスタント向けの Android ショートカット 
 参考リンク