「つくる人」と「つかう人」のこだわりを追求する

tsumug edge

『IoT周り』のことは全部やりたい:Inside TiNK-ソフトウェアのこだわり

株式会社tsumug(ツムグ)が提供する「TiNKシリーズ」には作り手のこだわりが随所にあります。そのこだわりを読み解いてみましょう。今回はソフトのこだわりの第2弾です。

f:id:tsumuginc:20180509233327j:plain
tsumugのエンジニアであるKeyさん

株式会社tsumugが発売するコネクティッド・ロック「TiNK」のソフト開発のこだわりについて、tsumugのソフトウェアエンジニアであるKeyさんにお話をお伺いしました。

後編は、実際の「開発手法」についてお届けします。

IoT周りは全部やりたい

Keyさんは、ソフトエンジニアとして、スマートフォンアプリを主軸にしながら、ハードウェアも含めた全体の工程を確認しています。

Keyさんがハードウェアに少し詳しくなったのは、別の会社で3年間ほど、チームの電気系のエンジニアや組み込みエンジニアと、「こういうことができないか」「センサーがあったらこういう使い方ができるんじゃないか」など、ソフトウェア開発側から提案したり、「できる」「できない」などのフィードバックをもらって調整したりしていたから、とのこと。

当時はまだ、ハードウェアはすごく難しいと思っていたそうです。

実際に電子工作をはじめたのは一昨年の年末。

当時、『さくらインターネットが提供するIoTプラットフォームサービス』が基板と同時に発表され、「これなら僕の欲しいハードウェアがつくれるかも」とセットで買ってプログラムを始めたところ、2,3日で加速度センサーをつけて、データをネットに飛ばすところまで完成してしまい「パーツもすぐ手に入るし、意外と簡単だな」と思ったそうです。

「いろんな電子工作用のモジュールやセンサーが売っていて、何でもできるなと感じました。そこまでハードが簡単になると、今度はソフトウェアが大変だなとも思いました。」

Keyさんは、取得したデータを計算する場所が、ハードウェアから遠くなればなるほど、レスポンスが遅くなっていくと言います。

即座にユーザーにレスポンスを返したかったらそのハードウェア本体でやるのが一番で、レスポンスよりも処理を複雑にしたかったらアプリに転送したほうがいいかもしれないし、もっと大量のデータを扱いたいならサーバーで行なうほうがいい。データの内容によって処理を行う場所が変わると考えているそうです。

「組み込みのソフトウェアのエンジニアがすごいと思うのは、そういうところを意識してプログラムを書くんですよね。“ここの割り算は時間かかるからやめよう”“こんな精度は必要ない”“浮動小数点いらないんじゃないの?”“ステップ削ろう”って数バイトずつ削っている、かなりストイック。」

ただし、ハードウェアに依存した書き方になりすぎると、チップセットの違いで動かないなど、再利用性が低くなってしまうことがあります。

tsumugでは、「ソフトウェアは、きちんと入力と出力がテストできる部品として使うべき」との考え方から、ウェブアプリケーションやモバイルアプリケーションはもちろんのこと、ファームウェアにも自動ビルドが導入されており、テストとビルドの自動化が進められています。

「別の場所で働いている中で培ったプロセス(手順)があり、そのプロセスから、なにかのステップを無視すると、かならずしっぺ返しを食らうことが多いことを学びました。」

シミュレーターを作ってしまう

IoTプロダクトのソフトウェアの開発をしていると、ハードウェアができていない段階でウェブアプリやモバイルアプリを開発しなくてはいけない状態も出てきます。

その場合、Keyさんはそのハードウェア相当の動きをするシミュレーターを作るとのこと。

TiNKの場合も、そこに使われているsakura.ioのフリをするWebアプリケーション(シミュレーター)を別の人に作ってもらい、開発をしていたそうです。

f:id:sofkun:20180429234309p:plain
TiNKのシミュレーター

クラウドと自動化

TiNKのファームウェアのビルドはクラウド上のCI(Continuous Integration:継続的インテグレーション)ツールで自動化されているので、どこでも開発ができる状態になっているそうです。

ファームウェアの開発者以外がファームウェアのバイナリを使いたいときに、都度ファームウェア開発者に「ビルドしてください」と連絡し送ってもらっていると、時間帯によってはバイナリがもらえず作業が止まってしまい、非効率的です。

「自動化させて、CIでビルドさせて取ろう」と提案したところ、最初は「そんなのうまくいくわけないよ」「使い方わからないよ」という声があったそうなのですが、実際に導入したら信頼性が高く、「今はもうそれしか使えない、ここからとったものでリリースしよう」とまで言われているそうです。

f:id:sofkun:20180429234524p:plain
CIの画面

TiNKという製品はAPIをもったハードウェア

Keyさんは「TiNKはいわば"リファレンスモデル"であり、もっと横に展開していきたい」と言います。

TiNKの開発向けディベロッパーキット「TiNK DVK」が公開予定になっており、先駆けとして「TiNK DVK」を使った「メルチャリ」というシェア・サイクルサービスも開始されています。

また同様に「TiNK DVK」を使った会員制のレストラン、シェアハウス、コアワーキングスペースなど、活用の幅を広げていきたいとのこと。

「TiNK DVK」で使えるTiNK APIも提供される予定で、その活用の場はさらに広がるもようです。

「今はこのAPIを使った賃貸物件を管理できるシステムがありますが、それとは別に個人向けのサービスがあってもよいと思っているし、このAPIを使ってだれでも作れるようになってほしいと思っています。」

今後の課題

TiNKのハードウェア構成は、現在は落ち着いており、今後は使い勝手を重視して、ソフトウェア・チューニングをするフェーズになっているそうです。

たとえば現在の「TiNK」の仕様だと、家に入るときに「PINコード」を入力しますが、出るときにも「PINコード」を入力しなければなりません。「ボタンを押したら一発で閉じられるようにしよう」とか、「ドアが閉まったことを検知して施錠」ような機能を検討しています。

また、今は鍵を発行したら、セキュリティ上の理由で同じ鍵を表示することができないようになっています。

ですが、ユーザーの使い方を観察すると、鍵のスクリーンショットを撮るなど、セキュアではない使い方がされていたことがわかり、今後はセキュリティを保ちながら別の使いやすい形にしていきたいとのことです。

f:id:tsumuginc:20180509233401j:plain
PINコードはこのように表示される(※画面はまだ開発中のもの)

ハードウェアの知識は、データのやり取りや「そのようなパーツがあるのか、実装できるのか」という考えに大きく影響を与えていて、ウェブアプリケーションとの双方向のアプローチにより、いろいろな化学反応でサービスが生まれていくのが分かります。

このように総合的に関われるのも、TiNK開発現場の魅力と言えるのかもしれません。

株式会社 tsumug | 〒810-0041 福岡市中央区大名 2 丁目 6-11 FUKUOKA growth next 301