ITエンジニア特化型Q&Aフォーラムteratailが主催するカンファレンス「MANABIYA」において、IoTに取り組むエンジニアが登壇して、観客からの質問に答える「IoT CrossSession」が行われた。
菅原のびすけさん(dotstudio代表取締役、IoTLT主催)が司会、パネリストにtsumug(ツムグ)Tech Leadの部谷修平(ひや・しゅうへい)さんが登壇したほか、馬橋雄祐(うまはし・ゆうすけ)さん(ファブレス系電機メーカー)、新里祐教(にいさと・ひろたか)さん(GMOインターネット)、菊地仁(きくち・ひとし)さん(ソフトバンク)が参加した。
MQTTかHTTPかよりも消費電力
観客の多くがWebエンジニアやアプリエンジニアであり、そうしたソフトウェアエンジニアとしてIoTにどのように向き合っていくべきか、という観点での質問が多くを占めていた。
初めの質問は、「なぜIoTではMQTT(Message Queue Telemetry Transport、IoTデバイスに特化した通信プロトコル)が使われるの? HTTPじゃダメなの?」というもの。これに対して新里さんが「どっちでも一緒」だと回答。確かにMQTTの方がヘッダが小さく省電力だが、バッテリーを多く積むことで消費電力は回避できるし、IoTデバイス向けのプロセッサーも高性能になってきているためだという。また、クラウドサービスの多くもMQTTとHTTPの両方に対応しているのだという。
これに対して、ハードウェア側の人間として馬橋さんが「電池使い放題と言われるとめんどくさい」と本音を漏らした。また低コストなIoT向けプロセッサでは、HTTPの処理が重いとも。ただし、一方ではコネクティビティにおいて無線か有線かの方が消費電力には影響が大きく、HTTPかMQTTかは大した違いではないとの見方も示した。
さらに部谷さんも、IoTではMQTTという風潮があるが、実際には商業レベルではMQTTをそのまま使うケースは少なく、前職でもMQTTをカスタマイズしたものを使っていたという。
「MQTTは、とっかかりとしては使いやすいけど、カスタマイズしないと使えないので、とっかかりとしては良い」「IoTデバイスの開発は大変なので、最初は使いやすい物で始めれば良い。ただし、量産する場合は、実装してから電力が足りないといったことはあり得ない。だから、段階に応じて考える必要がある」(部谷さん)
67歳のイノシシ猟師もIoTの開発ができたわけ
次の質問は「IoTの成功事例としてどういうものがあるか?」。これに対して菊地さんから「エンジニアなら成功するかどうか深く考えず、世の中の課題を意識して、それを解決することを考えるべき」と手厳しい回答があった。
その上で、ゼロからIoTを学びIchigoJam(プログラミング言語BASICを使った子供用パソコン)を使ってイノシシの罠を自作した67歳のイノシシ猟師の谷川一男(たにがわ・かずお)さんと、元エンジニアできゅうり農家の小池誠(こいけ・まこと)さんがディープラーニングを使ってきゅうりの仕分けを行ったという2つの事例を紹介。
「課題をわかっている人が、技術を使えるようになるとスゴいものができる。シリコンバレーはそういうのが多くて、そのなかの一部が生き残って成長して行く。あまりどれが成功か気にしないで、おもしろいものをみつけて触っていくのが大事じゃないか」(菊地さん)
Node.jsで製品化までイケる?
最後の質問は、ツイッターから投稿された「IoTでNode.js(非同期型のイベント駆動のJavaScript環境)が使われているが、実際にどのくらい使われているのか」というもの。
馬橋さんが「Node.jsしか使っていない。IoTは突然Windowsが割り込んでくるから、入出力のリクエストが発生したら動作するイベント駆動があっている。ただし僕は電子工作レベルなので、業務になってくると(イベント駆動だけとは)違ってくる」と回答。
その理由として、ハードウェアの量産の場合はデバイスに組み込まれたソフトウェアのアップデートが難しいという課題を挙げた。
「Node.jsの場合はセキュリティアップデートがあるため対応が困難」(馬橋さん)
部谷さんは、Milkcocoa(IoTデバイス・スマートフォン・PC間で簡単にリアルタイム通信を可能にするクラウドプラットフォーム)の開発にあたり初めはNode.jsで開発していたが、途中でErlang(通信システムを管理するソフトウェアの開発を支援するプログラミング言語で並列処理や分散処理に向いている)に変えた経験があるという。その理由のひとつはErlangはプロセスが軽量のため、サーバーサイドとして動かす場合、多くの同時接続が可能になるからだという。ただし、とっかかりとしてはNode.jsで十分だという。それにサーバーサイドのスペックは、結局のところお金で解決出来る問題であるため、さほど重要ではないとも話した。
また、新里さんは「サーバー側はNode.jsだが、デバイスのファームウェアはC言語で書く」と話し、デバイス側は安定した技術を使うべきだと持論を述べた。
司会の菅原さんも、これらの意見を受けて「量産フェーズは複雑なので、エンジニアの好みだけでは使う技術を決められない。Node.jsもよく使われているというのは、あくまでも入口のところ」とまとめた。
もはやIoT企業というくくりに意味はない
WebエンジニアからIoTを見ると、Node.jsなどなじみの技術から入ることができ、その意味で入口が広くなっている。一方で、事業としてデバイスの量産が視野に入ってくると、そこではハードウェアとしての強い制約があり、そこでの作法に従わなければならない。
だが、ソフトウェアとハードウェアの間にある垣根は着実に低くなっている。まずは取り組んでみて、見つけた課題を解決してみることが大事だ――というメッセージをこのセッション全体が強く打ち出していた。
最後に菅原さんが「IT企業というくくりに意味がなくなったように、IoT企業というのにも意味がなくなる。やらないといけない未来はすぐそこにある」と改めて大きな環境変化が起きていることを強調してセッションを締めた。