Slide 1

Slide 1 text

「OK Google」で
 アプリの機能を呼び出してみる
 2022/03/16
 ラクマ × Voicy × ANDPAD ~ Android開発の裏側 ~ 
 @horitamon


Slide 2

Slide 2 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 ● モバイルアプリエンジニア
 (Androidがメイン)
 ● 2021/09 Voicy入社
 ● 髪をこんなことにしたのは入社翌月 
 自己紹介
 horitamon(堀 多聞)


Slide 3

Slide 3 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 アジェンダ
 1. はじめに
 2. さわってみた
 3. わかったこと
 4. まとめ


Slide 4

Slide 4 text

ハッシュタグ
 #rva_android
 
 はじめに


Slide 5

Slide 5 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 はじめに
 お話しすること
 ● 個人的に学習して理解したこと
 お話ししないこと
 ● Voicyにおける開発状況
 ※実際に開発されている機能ではありません!
 今回の発表内容


Slide 6

Slide 6 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 はじめに
 
 ● 高校生の頃に一時期「Hey Siri」が流行ってAndroidのぼく涙目
 
 ● 悔しくてiPhoneに変えたら2016年にGoogleアシスタントが発表
 「OK Google」と呼びかけると天気を教えてくれたり、
 Google検索してもらえたりするように
 
 ● アプリを起動したり、ショートカット的な使い方もできるようになった
 「OK Google」使ってますか?


Slide 7

Slide 7 text

「OK Google, Voicyで〇〇を再生」って
 できたらなあ…


Slide 8

Slide 8 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 Google I/O 2021にて
 ● Android アプリの音声対応化
 ● アシスタント向けの Android ショートカット
 Androidアプリへの導入方法のセッションが公開


Slide 9

Slide 9 text

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


Slide 10

Slide 10 text

ハッシュタグ
 #rva_android
 
 さわってみた


Slide 11

Slide 11 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 さわってみた
 
 ● サンプルアプリのソースコードと一緒にざっくりとした組み方がわかる
 ○ https://codelabs.developers.google.com/codelabs/appactions-beta#0 
 タスクリストアプリの例


Slide 12

Slide 12 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 実装の流れ①
 
 ● build.gradleで設定しているapplication Idを確定して
 アプリをストアにアップロードする
 ● 機能はできてなくてOK、
 内部テストでOK、審査に出さなくてもOK
 ● application Idを一意にしないとテストツールが使えない模様
 Play Storeにアップロード


Slide 13

Slide 13 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 実装の流れ②
 
 ● 「どんな操作ができるか」を定義するファイル
 ● Built-in intents(BII)の中から、アプリで実現したい操作を選んで
 capability要素を追加していく
 
 今回追加しているのは
 ● タスクを検索する→「Get thing」
 ● 完了タスク一覧画面を開く→「Open app feature」
 shortcuts.xmlの作成


Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

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


Slide 16

Slide 16 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 Built-in intentsとは
 
 例えばGet thingは
 ● 「タスクリストでカレーを検索」
 ● 「タスクリストからトマト缶を探して」
 →微妙にゆれがあっても
  探したい物の文字列をextrasに付与してintentを発行してくれる
 これがGoogleアシスタントを使う”肝”


Slide 17

Slide 17 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 実装の流れ③
 
 ● intentのextrasにshortcuts.xmlで指定したとおりのキーで
 要素が格納されている
 →取り出して画面遷移とかする
 intentから要素取得


Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 実装の流れ④
 ● 機能名や操作の名称のゆれを吸収する場合に設定
 例えば
 ● 「タスクリストで完了タスク」
 ● 「タスクリストで完了を表示」
 ● 「タスクリストで終了タスク」
 ● 「タスクリストで終了を表示」
 どれを言っても完了タスク一覧画面を開いて欲しい時に設定する
 inline inventoryの作成


Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 実装の流れ④
 ● shortcuts.xmlにshortcut要素を追加
 ● arrays.xmlに名称のゆれを列挙し、shortcuts.xmlから参照
 →どう言っても「completed_tasks」がextrasに格納される
 inline inventoryの作成


Slide 23

Slide 23 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 ● Google AssistantというAndroidStudioプラグインでテスト可能
 ● 実装したGoogleアシスタントの挙動の「プレビュー」を作成できる
 ● ワンクリックで各種capabilityがテストできる
 ● 実際にGoogleアシスタントからも操作できるようになる
 →細かい使い方は省略(直感的にわかる)
 実装の流れ⑤
 動作確認


Slide 24

Slide 24 text

ハッシュタグ
 #rva_android
 
 わかったこと


Slide 25

Slide 25 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 日本語では「一応使える」状態
 
 ● built-in intent一覧ではどのBIIも対応言語に日本語は入ってない
 (と言うか英語とポルトガル語しかない)
 恐らくサポート外


Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 日本語では「一応使える」状態
 ● テストツールでプレビューを作成するときも
 説明の通り設定値をデフォルトにすると動かない
 ↓
 ● アプリ名を日本語で設定し、Localeをjaにすれば反応してくれる
 恐らくサポート外


Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 アプリ名が認識されないことがある
 ● アプリ名を「Voicy」(アルファベット)にしているので
 「ボイシー」という言葉と結びついていない模様
 →うまく動かずGoogle検索になってしまう
 
 ● 「スポティファイ」って言うとちゃんと「Spotify」ってなるから
 何かしら申請したり、もしくはいっぱい呼んでもらって
 学習とかしてくれたらちゃんと認識してくれるのかなあ…
 (「ラクマ」って言うとちゃんとラクマを認識してくれます。何かしたのかな…?)
 
 「ボイシー」って言うと「ボイス」「おいしい」になりがち


Slide 30

Slide 30 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 actions.xmlからも作れる
 ● ほとんど同じ機能を実装できる方法がもう一通りある
 https://developers.google.com/assistant/app/legacy
 ● URLからもわかる通り、こちらはレガシーになっていく模様
 ● 違いはintentに付与されるのがextrasではなくディープリンクになる
 ↓
 ● 既にディープリンクから起動する導線があるなら
 こっちを使った方がスムーズなのかもしれない
 shortcuts.xmlから作るのはベータ版


Slide 31

Slide 31 text

ハッシュタグ
 #rva_android
 
 まとめ


Slide 32

Slide 32 text

©2022 Voicy, Inc. ハッシュタグ
 #rva_android
 
 まとめ
 ● Googleアシスタント経由のアプリ起動は結構簡単に実装できる
 
 ● 正確な言葉じゃなくても、Googleアシスタントがうまいこと
 ゆれを吸収してくれたり、ゆれの定義ができたりする
 
 ● 日本語でも動くけどサポートされていない可能性がある
 
 ● Googleアシスタントに認識されるくらいまで
 アプリの知名度を上げていく必要あり?


Slide 33

Slide 33 text

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


Slide 34

Slide 34 text

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