$30 off During Our Annual Pro Sale. View Details »

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

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

horitamon

March 16, 2022
Tweet

More Decks by horitamon

Other Decks in Programming

Transcript

  1. 「OK Google」で

    アプリの機能を呼び出してみる

    2022/03/16

    ラクマ × Voicy × ANDPAD ~ Android開発の裏側 ~ 

    @horitamon


    View Slide

  2. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android

    ● モバイルアプリエンジニア

    (Androidがメイン)

    ● 2021/09 Voicy入社

    ● 髪をこんなことにしたのは入社翌月

    自己紹介

    horitamon(堀 多聞)


    View Slide

  3. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    アジェンダ

    1. はじめに

    2. さわってみた

    3. わかったこと

    4. まとめ


    View Slide

  4. ハッシュタグ

    #rva_android


    はじめに


    View Slide

  5. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    はじめに

    お話しすること

    ● 個人的に学習して理解したこと

    お話ししないこと

    ● Voicyにおける開発状況

    ※実際に開発されている機能ではありません!

    今回の発表内容


    View Slide

  6. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    はじめに


    ● 高校生の頃に一時期「Hey Siri」が流行ってAndroidのぼく涙目


    ● 悔しくてiPhoneに変えたら2016年にGoogleアシスタントが発表

    「OK Google」と呼びかけると天気を教えてくれたり、

    Google検索してもらえたりするように


    ● アプリを起動したり、ショートカット的な使い方もできるようになった

    「OK Google」使ってますか?


    View Slide

  7. 「OK Google, Voicyで〇〇を再生」って

    できたらなあ…


    View Slide

  8. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    Google I/O 2021にて

    ● Android アプリの音声対応化

    ● アシスタント向けの Android ショートカット

    Androidアプリへの導入方法のセッションが公開


    View Slide

  9. 使ってみないわけにはいかない。


    View Slide

  10. ハッシュタグ

    #rva_android


    さわってみた


    View Slide

  11. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    さわってみた


    ● サンプルアプリのソースコードと一緒にざっくりとした組み方がわかる

    ○ https://codelabs.developers.google.com/codelabs/appactions-beta#0 

    タスクリストアプリの例


    View Slide

  12. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    実装の流れ①


    ● build.gradleで設定しているapplication Idを確定して

    アプリをストアにアップロードする

    ● 機能はできてなくてOK、

    内部テストでOK、審査に出さなくてもOK

    ● application Idを一意にしないとテストツールが使えない模様

    Play Storeにアップロード


    View Slide

  13. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    実装の流れ②


    ● 「どんな操作ができるか」を定義するファイル

    ● Built-in intents(BII)の中から、アプリで実現したい操作を選んで

    capability要素を追加していく


    今回追加しているのは

    ● タスクを検索する→「Get thing」

    ● 完了タスク一覧画面を開く→「Open app feature」

    shortcuts.xmlの作成


    View Slide

  14. View Slide

  15. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    Built-in intentsとは


    ● ユーザーが発した言葉からアプリで実現したい操作を解釈して

    intentに変えてくれる仕組み

    →正確な/一意な言葉じゃなくても同一の意味として判別できる


    ● テンプレートのようにいくつもある

    https://developers.google.com/assistant/app/reference/built-in-intents


    これがGoogleアシスタントを使う”肝”


    View Slide

  16. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    Built-in intentsとは


    例えばGet thingは

    ● 「タスクリストでカレーを検索」

    ● 「タスクリストからトマト缶を探して」

    →微妙にゆれがあっても

     探したい物の文字列をextrasに付与してintentを発行してくれる

    これがGoogleアシスタントを使う”肝”


    View Slide

  17. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    実装の流れ③


    ● intentのextrasにshortcuts.xmlで指定したとおりのキーで

    要素が格納されている

    →取り出して画面遷移とかする

    intentから要素取得


    View Slide

  18. View Slide

  19. View Slide

  20. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    実装の流れ④

    ● 機能名や操作の名称のゆれを吸収する場合に設定

    例えば

    ● 「タスクリストで完了タスク」

    ● 「タスクリストで完了を表示」

    ● 「タスクリストで終了タスク」

    ● 「タスクリストで終了を表示」

    どれを言っても完了タスク一覧画面を開いて欲しい時に設定する

    inline inventoryの作成


    View Slide

  21. 「完了タスク」も
    「終了タスク」も
    同じものとして受け取りたい

    View Slide

  22. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    実装の流れ④

    ● shortcuts.xmlにshortcut要素を追加

    ● arrays.xmlに名称のゆれを列挙し、shortcuts.xmlから参照

    →どう言っても「completed_tasks」がextrasに格納される

    inline inventoryの作成


    View Slide

  23. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    ● Google AssistantというAndroidStudioプラグインでテスト可能

    ● 実装したGoogleアシスタントの挙動の「プレビュー」を作成できる

    ● ワンクリックで各種capabilityがテストできる

    ● 実際にGoogleアシスタントからも操作できるようになる

    →細かい使い方は省略(直感的にわかる)

    実装の流れ⑤

    動作確認


    View Slide

  24. ハッシュタグ

    #rva_android


    わかったこと


    View Slide

  25. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    日本語では「一応使える」状態


    ● built-in intent一覧ではどのBIIも対応言語に日本語は入ってない

    (と言うか英語とポルトガル語しかない)

    恐らくサポート外


    View Slide

  26. View Slide

  27. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    日本語では「一応使える」状態

    ● テストツールでプレビューを作成するときも

    説明の通り設定値をデフォルトにすると動かない

    ↓

    ● アプリ名を日本語で設定し、Localeをjaにすれば反応してくれる

    恐らくサポート外


    View Slide

  28. View Slide

  29. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    アプリ名が認識されないことがある

    ● アプリ名を「Voicy」(アルファベット)にしているので

    「ボイシー」という言葉と結びついていない模様

    →うまく動かずGoogle検索になってしまう


    ● 「スポティファイ」って言うとちゃんと「Spotify」ってなるから

    何かしら申請したり、もしくはいっぱい呼んでもらって

    学習とかしてくれたらちゃんと認識してくれるのかなあ…

    (「ラクマ」って言うとちゃんとラクマを認識してくれます。何かしたのかな…?)


    「ボイシー」って言うと「ボイス」「おいしい」になりがち


    View Slide

  30. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    actions.xmlからも作れる

    ● ほとんど同じ機能を実装できる方法がもう一通りある

    https://developers.google.com/assistant/app/legacy

    ● URLからもわかる通り、こちらはレガシーになっていく模様

    ● 違いはintentに付与されるのがextrasではなくディープリンクになる

    ↓

    ● 既にディープリンクから起動する導線があるなら

    こっちを使った方がスムーズなのかもしれない

    shortcuts.xmlから作るのはベータ版


    View Slide

  31. ハッシュタグ

    #rva_android


    まとめ


    View Slide

  32. ©2022 Voicy, Inc.
    ハッシュタグ

    #rva_android


    まとめ

    ● Googleアシスタント経由のアプリ起動は結構簡単に実装できる


    ● 正確な言葉じゃなくても、Googleアシスタントがうまいこと

    ゆれを吸収してくれたり、ゆれの定義ができたりする


    ● 日本語でも動くけどサポートされていない可能性がある


    ● Googleアシスタントに認識されるくらいまで

    アプリの知名度を上げていく必要あり?


    View Slide

  33. ©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 ショートカット 

    参考リンク


    View Slide

  34. 音声×テクノロジーでワクワクする社会をつくる 


    View Slide