asumism

あすみん(@an_asumin)のブログやで

Google GlassでGoogle アシスタントを使うぽよ


f:id:an_asumin:20200502214653j:plain
Google Glass Enterprise Edition 2を用いてGoogle アシスタントを使用するアプリケーションを作ってみた話

Google Glass Enterprise Edition 2について

Google Glassとは

Google GlassGoogle X Labにより開発されたHMDタイプのウェアラブルコンピュータです.簡単に表現すると,右のこめかみに超軽量のAndroid端末を乗せることによって,ほぼ常に視界に対して情報を付与できるようにするデバイスであり,スマートグラスと呼称されるデバイスのひとつです.2013年にはExplorer Editionと呼ばれるB2Cに向けた端末が提供され始めましたが,2015年にはEnterprise Editionと呼ばれる端末とともにB2Bに向けたビジネスへフォーカスしていくことが発表されました.

f:id:an_asumin:20140809124633j:plain
Google Glass Explorer Edition

Explorer EditionとEnterprise Editionの違い

Google Glassの外観や大まかな構成はExplorer EditionとEnterprise Editionで共通しています.しかし,その体験においてはかなり異なります.Explorer EditionではMyGlassというスマートフォン上のコンパニオンアプリケーションが提供され,そこではGlasswareと呼ばれるたくさんの専用アプリケーションが提供されていました.UIにおいては時系列順にカード状のUIを並べるといった工夫が行われ,Googleが提供するメールなどの各サービスとも深く連動し,今現在知るべき内容が知れる*1端末として成り立っていました.細かなところで言えば,頭部を動かすことによる画面の点灯機能,ウインクによる写真の撮影,ヴォイスによる基本機能へのアクセス,骨伝導スピーカなど,ユーザがパーソナルに気持ちよく端末を使用するための工夫が随所に盛り込まれていました.
一方で,Enterprise Editionはとてもシンプルです.Enterprise Edition 2においては,コンピュータとしての性能が向上*2し,バッテリ容量が増量されUSB Type-CのFast Chargingにも対応し,AndroidのバージョンがKitKat*3からOreoになりました.そして,Enterprise Editionで提供されていたような各種の連携が一切なくなりました.もちろんGMS*4もなく,ほぼプレーンなOreoに専用のランチャアプリが付いているという印象です.つまり,B2B用なので,開発しない限り,アプリは何もない*5のです!ぽよぽよー!

f:id:an_asumin:20200502224758j:plain
ヒンジは持ち運びに便利といえば便利だけど……
また,細かな違いで言えば,本体とバンドはワンタッチで分離できる他,本体にはヒンジ機構が追加され,開閉に合わせた画面点灯制御などが行われます.B2CのExplorer Editionにヒンジがないのは常に装着されるための不便益であったと私は理解しています.それに対してB2Bにおいては大量のデバイスを保管管理し適当な場所に持ち運ぶ必要性があるため,ヒンジ機構は適切であると考えています.他にも,骨伝導スピーカの代わりに確かな音量でクリアに聞こえるスピーカが搭載されていますし,カメラでの撮影時には付近のLEDインジケータが点灯するようになりました.

Google Glass Enterprise Edition 2は手に入る?

Google Glass Explorer Edition 2はB2B用ながらも,各プロバイダにより一般消費者にもディストリビューションが行われています.ただし,私が購入した時点ではいずれも米国内の住所にしか届けることしかできなかったため,転送サービスを利用することで日本国内に届けてもらいました.なお,Google Glass Enterprise Edition 2は技術基準適合証明等において工事設計認証が通っていて,デバイス技適マークの表示能力を有しています*6

f:id:an_asumin:20200502215810j:plain
Google Glass Enterprise Edition 2のRegulatory Infoの画面

アプリケーションを作る

何を作る?

アプリケーションが何もないのであれば作ってみるしかないぽよ.
asumism.hatenablog.com
私はTelepathy Walkerと呼ばれるGoogle Glassに似たデバイスを持っています.
過去には,視界を即座にツイートして帰ってきた「いいね*7」を即座に表示するアプリケーションを作って発表したことがあります.このようなスマートグラスならではの爆速コミュニケーションを行うアプリケーションをまた作ってもよいのですが,できれば今でこそ作れるものを作りたいと思いました.
ここ数年で台頭してきたものといえば,何よりスマートスピーカとそれにおけるVUIと各サービスの統合でしょう.VUIはGoogle GlassでもベーシックなUIとして採用されていたこともあり,Google アシスタントをGoogle Glassから使うことができれば,その体験をアップデートできると考えました.Google アシスタントはAndroidスマートフォン用のアプリケーションが提供されているので,APKを無理やりインストールすることも不可能ではないとは思いますが,やはり使い勝手やUIデザインの面からGoogle Glass用のアプリケーションとして作ってみることが大事であると考えたので,トライしてみました.

Google アシスタントのSDKとサンプルコード

Android Thingsを用いてGoogle アシスタントを使用する方法についてはCodelabsのAndroid Things Assistantのページにおいて取り上げられていて,サンプルコードもステップバイステップで掲載されています.また,Google Assistant SDKのページにおいても同様の解説があり,別のサンプルコードが公開されています.このサンプルコードはステップごとに分かれておらず,Google アシスタントを使用するためのクラスがきれいに分離されているので,こちらのサンプルコードを参考にすることにしました.Android Things用のアプリケーションはAndroid Studioで開発できるだけでなく,AndroidAPIの多くがそのまま使えるのが特徴です.反対に,Android Things用のコードの多くもAndroid用アプリケーションへ流用することが可能です.
Google アシスタントとのプロトコル自体はgRPCで記述されているため,gRPCに対応した言語であればGoogle アシスタントを使用することができそうです.エッジにあまり制約がなさそうなあたり,Google アシスタント様は雲の上の存在なのですね(?)

Google Glassのサンプルコード

Google Glassのディスプレイサイズや解像度はスマートフォンのそれよりも小さく,タッチパネルもないため,ユーザインタフェースのガイドラインに則ることがとても重要になっています.カード状のUIを作ったりタッチパッド上のジェスチャを検知するためのサンプルコードが公開されているためこれらを組み合わせて利用することにします.

スクレイピングなど

Google アシスタントSDKでは音声以外の出力として,単純なテキストかHTML*8を選択することができます.Google Glassのディスプレイが常に視界にあるという長所を活かすため,今回は画像の情報ももらえるHTMLを選択しました.Google アシスタントが返却してくるHTMLデータにはブラウザに表示するために丁度よいデザインが施されていたり,インタラクションが行えるようなスクリプトが随所に含まれるのですが,UIデザインの観点からWebViewで表示することはしませんでした.その代わりにjsoupを用いてスクレイピングした結果を整形することにしました.Google アシスタントは様々なレイアウトや内容で結果を返してきますが,ベクタ画像やお決まりの画像を弾く以外においては,

  • 本文のみ: Fragmentひとつ
  • 本文と主要な画像: Fragment内に画像と本文を並べる
  • たくさんの画像: Fragmentを大量に並べてスライド操作で切り替えられるようにする

という戦略を取ることで体験としてまとまりそうだと判断できました.
また,画像のロードにはGlideを使用しました.予め求める画像サイズを与えておかないとリスナが呼ばれないという点に気付くのに少し時間がかかりましたが,インターネット上の画像を取ってくるコードが一瞬で書けるのでとても便利です.

アプリケーションの動作


Google Assistant on Google Glass
実際に作成したアプリケーションをGoogle Glass Enterprise Edition 2上で動かしている動画を撮影しました.LANを通じてADBを接続した上で,Vysorでキャプチャされた端末の画面とSnapcameraに映る私をまるごと録画しています*9.興味深いのは,私のGoogleアカウントに紐付いた複数のサービス*10の情報を画一的なアプリケーションで取ってこれている点でしょう.私がこのアプリケーションを書いている最中には特別それらのサービスを使うことを意図して書いていた訳でなく,試したらいい感じに使えていた(!)ので,このインテグレーションには流石グーメンという感じなのですね.

アプリケーションを作ってみて

f:id:an_asumin:20200502223618j:plain
カメラアプリのフィルタにがっつり巻き込まれるGoogle Glass
現状の実装ではconversationごとにタッチパッドをタップしていますが,ウェイクワードに反応するようにしたら実用レベルになりそうですね!というか,これに Device Actions の処理を増やしていけば端末の操作がこのアプリで完結しちゃう可能性も……?
Google アシスタント,なんておそろしい子!!!

*1:知るというより気付いたときにはもう既に知っているという不思議な体験

*2:OMAP 4430からSnapdragon XR1になりRAMも3GBまで増えた

*3:正確にはGlass OS.開発に用いるのはGDKと呼ばれるAPI level 19の亜種だった

*4:Play Storeもない

*5:無論ランチャアプリはあるし開発のためのサンプルコードもあるけど,消費者目線で言えば何もない

*6:明らかに技適未取得だったり懸念がある場合は「技適未取得機器を用いた実験等の特例制度」を利用する必要があると思います

*7:ふぁぼ

*8:CSSスクリプトも含まれるけどコード上でもそう表現されていた

*9:ユースケースごとのイメージビデオを作る体力がない

*10:カレンダーやフォトのことですね