Tech Sketch Bucket of Technical Chips by TIS Inc.

Google Glass開発第一歩~(1)Google Mirror APIでHelloアプリケーション

Pocket

Google I/O 2012で発表された Google Glass (以下、Glass)は、日本では現在のところいつ販売されるか未定の状況です。一方、米国では、定額制音楽ストリーミングサービス「Google Play Music All Access」ユーザにまで範囲を拡大して販売されており、 TwitterやFacebookをはじめとしたアプリケーション の数も増加しています。しかしながら、キャズムを越えるためのキラーアプリケーションとなるほどのものは出現していない、という状況です。


グラス型ウェアラブルデバイスとエンタープライズシステム

ところで、エンタープライズシステムの視点でGlassをはじめとしたグラス型のウェアラブルデバイスを見た場合、これまでのスマートデバイスと比較してどのような特徴があるでしょうか。まず、以下のような特徴はグラス型を採用するメリットになるでしょう。

  • ハンズフリー。 製造ライン、エンジニアリング、メンテナンス、等の現場でもモバイルデバイスの恩恵を受けることができます。ちなみにタブレットでは、ラインで導入しても大抵の場合固定されており、また軍手では使えませんので、「安価な端末」以上のメリットを得るケースは稀でした。
  • 視覚との連動性。 健常者ではもっとも発達している知覚は視覚であり、人は両眼の向いている方向に注意を払っている、ということができます。または両眼の向いている方向は主な進行方向でもあり、逆に両眼の向いているほうに注意を払うべき、ともいえます。グラス型は両眼の向いている方向にカメラが向いており、両眼の動きにしたがって上下や左右への運動を検知しますので、「現在注意を払っているものに対する情報」を出すことが容易になります。
  • 音声との親和性。 人がもっている五感の基礎的な能力のうち、視覚よりも精緻な情報の受発信を行うことのできる双方向性をもったプロトコルは、音声です。しかし、音声受信(聴覚)はS/N比が小さく、工場のラインなどでは聞き取りにくい、という側面もあります。その点で、グラス型は頭部に取り付けるデバイスですので、イヤホンやマイクとの接続が容易であり、音声を使ったヒューマン・マシン・インタフェースとの親和性が高いといえます。実際に、Glassも音声認識と音声合成には力を入れています。現在はまだ十分な精度が出ているとはいいがたい領域ですが、今後急速に技術が進歩すると予想されます。

一方、現在のところデメリットと考えられている特徴もあります。

  • プライバシー問題。 グラス型が普及するといつのまにか画像や動画に撮影されてしまい、プライバシーが守られなくなるのではないか、という議論があります。2013年3月にはシアトルで実際に Glassを禁止するバー が出現して話題になりました。先行する噂や動画に基づいたグラス型に関する誤解もふくめて、これから何を規制し何を認めるかの整理がされていくものと思われます。この問題は、工場の製造ライン等の限定空間内では問題にならないと思われますが、フィールドワーク用途ではルールが必要になるかもしれません。
  • 注意(attention)に関する問題。 アメリカのいくつかの州では、 Glassが運転中のドライバーの気をそらすものとして規制しようという検討 が始まっています。工場のような場所でも同様の懸念があります。たとえば、フォークリフトが常時行き交うような工場では、構内を歩くときにグラス型端末に注意を取られることは危険です。この問題に対しては、情報着信は音声でのみ行い、視覚による確認は利用者による能動的な操作を要する、というようなユーザ・インタフェースで工夫することで、少なくとも工場等の限定空間では対応できると考えられます。

こういったメリットを享受することで、グラス型のウェアラブルデバイスは2014年から2015年にかけて、アーリーアダプター企業による先進的な事例が出てくるようになるでしょう。すでに、 ヴァージン・アトランティック航空がロンドンのヒースロー空港でGlassを使ったコンシェルジュサービス を開始した、というニュースも流れました。また、Glassではありませんが、SAPとVuzixが グラス型デバイスを在庫管理業務に活用するという非常にコンセプチュアルな動画 を公開しています。

Glasswareの基本的概念―タイムライン

さて、このようにエンタープライズシステムでの可能性を感じさせるGlassですが、アプリケーションの開発はどのように行うのでしょうか。国内ではGlassを保有している人口が少ない、ということもあり、まだまだ情報が不足しています。この連載では、具体的なコードの書きかたについて調査検証したことを少しずつ共有していきます。

まずはじめに、Glassアプリケーション(glassware)の開発について知りたいという方には、現在のところ、 本家のサイト を見ることがもっとも近道です。

その中でも、もっとも基本的な概念が タイムライン です。タイムラインは、glasswareがコンテンツ、履歴、通知などのアクティビティを記録したカードの時系列に沿った集合です。 自由に画面を使うアプリケーション(Glassでは「 イマージョン 」と呼びます)でない限り、glasswareはタイムラインを通じてユーザとの情報のやりとりを行います。screenshot-timeline.png

Mirror APIとGlass Developent Kit(GDK)

さて、それではタイムラインでカードやメニューを扱ったり、イマージョンを実現するにはどのようなコードを書くのでしょうか。

Glasswareの開発には大きく2種類の方法があります。

  • Mirror API ― GoogleのWebAPI (Google Mirror API)を経由してGlassにアクセスする方法。Webサービスから直接Glassのタイムラインを操作することができます。
  • Glass Development Kit ― Android SDKにGlass Development Kit (GDK)を追加し、apkとして実現する方法。端末スペックやユーザ・インタフェース、ユーザ・エクスペリエンスの観点からの妥当性などについて検討が必要ではあるものの、一般的なAndroidアプリケーションと同様の機能を実現することができます。

本記事では、Mirror APIを使って単純な"Hello"カードをタイムラインにインサートするサンプルを作成してみます。

Google Mirror APIを使ったタイムライン操作の手順

自分で立ち上げたWebサービスからGoogle Mirror APIを経由してタイムラインを操作するアプリケーションは、以下のように非常に簡単な手順で作成することができます。

  1. Google Mirror API利用の準備を行う
    1. Google Mirror APIを有効にする
    2. OAuth認証のためのClientIDを作成する
  2. アプリケーションを実装する
    1. Google認証を呼び出す
    2. アクセストークンを取得する
    3. アクセストークンを使用してGoogle Mirror APIにjsonデータを投げる

Google Mirror APIの利用準備

まず、適当なGoogleアカウントで Google Developers Console に入り、[CREATE PROJECT]で適当なプロジェクトを作成します。

次に、プロジェクトを選択して詳細を設定していきます。

1点目はGoogle Mirror APIの有効化です。プロジェクトの設定で左側のメニューより[APIs & auth]を選択し、その下の[APIs]を選択すると、右側にGoogle APIの一覧が列挙されます。この中から「Google Mirror API」を探し、STATUSをONにします。mirror-api-status-on.png

2点目はOAuth認証のためのClientIDの作成です。今度は[APIs & auth]の下にある[Credentials]を選択します。ここで、[CREATE NEW CLIENT ID]を押してClientIDを作成します。mirror-api-clientid.png

以上により、ClientIDが作成され、GoogleのOAuth認証を呼び出す準備ができました。
mirror-api-clientid-created.png

アプリケーションの実装

続いて、アプリケーションを実装します。今回はnode.js+express+passport (passport-google-oauth)を使用してOAuth認証を実装しました。大まかな流れは本ブログに 「node.js+express+PassportでOAuth認証」 という記事があり、今回もほぼ同様ですので、詳細はそちらを参照ください。

本記事のサンプルでは、上で作成したClientIDの定義をconfig/default.jsonに記述します。リポジトリにあるconfig/default.json.smpをコピーして設定するとよいでしょう。

最後に、Google Mirror APIを呼び出すコードです。Google APIを簡単に呼び出すモジュールはいくつかありますが、ここでは素のhttps.request()を使って投げています。

この部分が実行されると、認証されたユーザに対応するGlassに対して、データが送信されます。Glass側では、 notification の値( "DEFAULT" )に従ってトーンによる通知が行われ、タイムラインにカードがインサートされますので、スワイプするとカードを見ることができます。screenshot-mirror-api.png

ソースコード全体は gitのリポジトリ に掲載してあります。

次回は、GDKを用いてAndroidアプリケーション(apk)からタイムラインにカードをインサートするサンプルを作ってみる予定です。

エンジニア採用中!私たちと一緒に働いてみませんか?