IoT TECH EXPOでデモをしてきました!(準備編) - Life in Berlin vol.6

2016年6月13と14日、ベルリンで「IoT TECH EXPO 2016 CENTRAL EUROPE」が開催されました。
私がジョインしているHigh Mobilityはこのイベントにブースを出展し、この3ヶ月開発に取り組んできたライブラリのお披露目デモを実施しました!

「IoT」は、「Internet of Thing」の頭文字を取った略称です。このIoTという概念はスタートアップのみならず、大手企業や行政機関などからも注目を集めており、今回のイベントは、100以上の展示と200人以上のスピーカーが参加し、大盛況に終わったようです。

セッションのテーマは5つに分かれていました。
データとセキュリテデータとセキュリテ / スマートシティ / コネクトする生活 / コネクトする産業 / IoT技術と開発
の5つです。

デモで何をやるのか

High Mobilityではデベロッパーが自動車向けアプリケーションを開発できるプラットフォームを提供していく予定です。
今回のデモでは、このプラットフォームを利用してどういうアプリが開発できるようになるのかをイメージしてもらうため、スマートウォッチを利用して車のロックの開閉を行うアプリを開発しました。
PVはこちらで、実際に自動車メーカーの方にも見せている動画です。(動画の中ではスマートフォンを利用していますが)

Project 01 / Enter from Risto Vahtra on Vimeo.

今回のデモでは、実際の車ではなく、車載システムに搭載されたOS上のブラウザを想定し、Chromebookを利用しています。

実際の操作の流れとしては、まずWebBluetoothAPIを利用してブラウザとスマートウォッチを接続(ペアリング)します。このアプリケーションはサーバサイドとも連携しており、接続をする際に、端末情報をサーバに送信し、認証を行います。また、情報の伝達に関しても、すべて端末とサーバサイド側で暗号化した値を利用しており、セキュリティにも注意しています。スマートウォッチのアプリでは「ロック」「アンロック」のボタンがあり、このボタンを押下することで開閉を行います。

私は、このアプリケーションのフロントエンド開発を担当していました。

OSSとエンタープライズの違い

ベルリンに来る前は、ゼクシィやリクナビといった長年利用されているサービスの開発に関わってきました。
これらの開発では、俗にいう”枯れた”技術を中心的に利用しています。(もちろんそれ自体は悪いことではありません。)
それに対して、今回の開発ではWebBluetoothAPIという現在進行形で仕様の策定がW3Cにて行われているAPIを利用しています。

今回の開発で一番大変だったのは、仕様の変更をキャッチアップしていくことです。
かなりの頻度で「新しい機能がChromeOSに実装された」「この機能がMacOSでも利用できるようになった」というアナウンスが流れていました。
また、開発ではChromeのcanaryを利用しているため、ブラウザ本体がアップデートされた際に、突然これまでの機能が動かなくなる、ということが何度かありました。
最近では、実装ではなくブラウザ側に原因があることにすぐに気付くようになってきましたが、当初は動かなくなった箇所の特定までは出来たものの、原因まではわからなくて困っていました。

この時に学んだことは、「W3Cコミュニティグループの人に直接聞く」ことです。

そして、グループの人たちはきちんと回答してくれます。
CTOやチームのメンバーに聞いてもお手上げ状態だったので、W3Cのコミュニティグループのメーリングリストに投げてみました。

「getPrimaryService()が動かなくなって、エラーも出なくなりました。何が原因でしょうか?」
「ごめん、それChromeOSのバグ」とパリにいるgoogleのエンジニアからすぐに回答が返ってきました。

原因が判明したので、いったんchromeのダウングレードを行い、バグが修正されるのを待ちました。
翌週にはアップデートされていたので、chromeの開発の速さにも驚きました。

OSSを開発している方にとっては、至極当たり前の光景かもしれませんが、大規模開発から、OSSに飛び込んだ私にとっては新鮮で学びのある開発期間でした。

間に合わない危機

いよいよデモの前日(営業日換算)になりましたが、完成していませんでした。
時間はすでに19時を過ぎています。ベルリンのスタートアップの人たちは、基本的には18-19時に帰ります。
しかしながら、この日ばかりはCTOも、「終わるまで頑張るぞ!」という感じでした。個人的には、「間に合うかな。最悪土日やるしかないかな」と切羽詰まり始めていました。

そんな時、CTOは何をしていたでしょうか。

金曜日の夜。
ビールを飲み始め、EURO2016を見始めました。

IMG_1730

これがベルリンスタイルです。

CTOは「フライデーナイトだよ??EURO2016だよ???」と言いつつも、
手はきちんとキーボードの上でもくもくと動かしており、無事に最終動作確認を終えることができました。
この時すでに時刻は23時を過ぎていましたが、直前の追い込みがスタートアップらしくて個人的には楽しんでいました。

(当日編につづく)