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

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for horitamon horitamon
March 16, 2022

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

Avatar for horitamon

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 ショートカット 
 参考リンク