はじめに

こんにちは、LIGの菅原のびすけです。最近はIoTとかBaaSという単語を聞くことが増えてきたと思います。また、IoTとBaaSの組み合わせが増えてきてる印象です。先日IoT x BaaSのハンズオンイベントを開催しましたが、そのレポートの意味も含めてIoTとBaaSの話や、マイコンボードの話をしたいと思います。

IoTとは

IoTという単語が分からない方のために簡単に解説します。
IoTとはInternet of Things(モノのインターネット)の略称です。今までインターネットというとWebと同義で扱われがちで、ハードウェア界隈とは少し離れたポジションでした。

しかし、ハンダ付け不要でセンサーやモーターなどハードウェア的な機能を扱うことが出来るRaspbberyPiやArduinoといったマイコンボードが有名になってきて、Web界隈の人でも簡単にハードウェア領域に参入することができるようになってきた。この流れから インターネットとモノを接続して何か新しい表現をすること、Webとハードのインターフェイスになるようなデバイス、そういった領域のことをIoTと呼ぶようになっています。(あくまでも筆者の言葉で書いていて明確な定義は無いような気がしています。)

最近は言葉が独り歩きして、マイコンボード=IoTみたいな言われ方をしたり、センサーを使うこと=IoTみたいになっています(笑。なので実を言うと 筆者もIoTってなんなの?という問いに関しては明確な答えは持っていません。

BaaSとは

Backend as a Servisの略称をBaaS(バース)と呼びます。Webサービスを作る際には、目に見えるフロントエンドの技術以外にもバックエンドの技術が必要になってきます。例えば、さくナレを運営しているさくらインターネットはWebサービスの基盤となるサーバー機能を提供してくれていますが、これはバックエンドの技術と言えます。
Webサービスを作る際にデータをデータベースに保存する機能はけっこうな頻度で作ります。この場合はサーバーサイドのプログラムとデータベースを使う必要あり、Webサーバーを立ち上げる必要やサーバーにプログラミング言語の実行環境をインストールする必要があり、バックエンドの専門的な知識が必要となる場合や、準備に手間や時間が掛かる場合があります。
BaaSはこれらの機能を機能単位で提供してくれて、フロント開発者がフロント技術だけでサービス開発ができるようにしてくれます。
端的にいうと、 BaaSはアプリケーション開発を加速させてくれるサービスだと言えます。(魅力的ですね!)

BaaSはクラウドサービスの一形態を指していて、PaaS,IaaS,SaaSといった言葉が1世代前に流行ったのですが、この流れから来る言葉だと思います。

リアルタイム通信が得意なBaaS Milkcocoa

MilkcocoaはそんなBaaSの一つで国産のクラウドサービスです。Milkcocoaは主にリアルタイム通信とデータ保存をサポートしてくれるサービスです。Node.js+Socket.ioでリアルタイム通信を実装するのが流行った時期がありましたが、リアルタイム通信を実現する場合はサーバーサイドの実装も必要となり、フロントエンドの技術だけでは実現できませんでした。
これをフロントエンドのスキルだけで簡単に実現してくれるのがMilkcocoaというサービスです。 Milkcocoaの事例などはgihyo.jpの連載(MilkcocoaでBaaSを体験!~バックエンドの仕組みと使い方~)をご覧ください!

MilkcocoaMeetup

Milkcocoa MeetupはMilkcocoaのユーザー会のようなものです。過去に2回開催しています。2015年5月にMilkcocoaがバージョンアップしてIoT向けの展開を見せてきています。3回目となる今回はMilkcocoaのIoT対応を記念してIoTデバイス3種とMilkcocoaを使ったハンズオンイベントを実施しました。Milkcocoaの開発を行っているテクニカルロックスターズとLIGののびすけが主催です。

http://mlkcca.connpass.com/event/15787/

Javascript制御可能なマイコンボード3種

今回のイベントではその中でも有名どころの3種のマイコンボードを使用しました。イベント的にはスイッチサイエンスさんに協力して頂いて、イベント会場で3種のマイコンボードを物販して頂きました。参加者は会場に手ぶらで来てもらい、その場で購入してハンズオンを行うという珍しいタイプのイベントだったと思います。

ちなみに JS制御できるマイコンボードはまだまだありますが、今回はイベントで利用したものを紹介したいと思います。ちなみにCylon.jsといったフレームワークを使えば、市販されている大半のマイコンボードやガジェッドがJS制御できます。

Raspberry Pi 2

IoTの先駆けとも言えるRaspberryPi(以降、RasPi)の最新版です。割と入手困難とされていて、オンラインストアなどでも入荷待ち状態が続いています。初代RasPiと比較すると値段は同じで性能が倍になったと言われています。
RasPiの特徴はOSなどのインストールが別途必要になる点でしょうか。別売りのSDカードにLinuxOSをインストールして起動させます。Linuxが動くので小型のPCという見方も出来ると思います。 他のマイコンボードに比べて挙動が安定していて汎用的に使われているイメージです。

RasPiは無線LANモジュールなども付属していなく、別売りで購入するものが比較的多く、準備が大変なイメージですが、今回はスターターキットという最初に必要となるもののセット販売商品を販売して頂きました。

Intel Edison

Intel EdisonはIntelが販売しているマイコンボードです。Intel Galileoというマイコンボードもありますが、その後続版です。
Edisonの特徴はサイズだと思います。本体は切手サイズでかなり小さいです。 実際の開発には本体以外にBreackout BoardやArduino Boardといったアダプタ的なボードを利用します。今回はBreackoutBoardを使用しました。YoctoというLinuxが初期状態でインストールされていてSSHやUSBシリアル通信でMacなどからログインしてプログラムを記述します。

Tessel

Tesselは先に挙げた二つのマイコンボードとは少しタイプが違います。RasPiとEdisonはLinuxOSが動作するのでどちらかというとパソコンに近いです。TesselはMacなどで開発したプログラムをマイコンボードに送ることで、ソースコードに記述した挙動をしてくれます。
LinuxなどのOSが入っているわけでは無いため、できることはRasPiやEdisonよりも少ないのですが、 センサーなどの外部専用モジュールがすごく扱いやすいです。個人的な意見ですがWebの人には一番使いやすいと思っています。
通常のマイコンボードでセンサーなどを使う時は別売りのセンサーに抵抗と導線を繋げて特定の箇所に接続する必要がありますが、これはWeb技術者などには意外と難しいです。Tesselのセンサーモジュールはブロックを組み立てるようにTesselにセンサーを刺すだけで良く、シンプルなNode.jsコードで値を取得することが出来ます。

 

今時マイコンボードとBaaSの親和性

今回のイベントはMilkcocoaとIoT連携ということでしたが、最近のBaaSはIoT対応したというプレスリリースを良く見ます。対応と言ってもSDKをマイコンボード向けにリリースした、通信方式を変えた(MQTTなど)など様々です。少し前にMicrosoftがRasPi向けにWindosw10を無償提供を開始するという話題が盛り上がっていました。何が嬉しいのかというと、 Webとセンサーデータの連携がしやすくなるという点だと筆者は思ってます。 RasPiなどのマイコンボードはセンサーデータを取得するハードルを下げてくれましたが、そこからWebとの連携はLinuxが入っているし各自の実装に任せるという雰囲気がありました。RasPiにWindows10が入るということはAzureなどにRasPiで取得したデータを蓄積することができ、Azureではそのデータをもとに機械学習などしてマーケティングやサービスなどに利用する、といった 一連のプロセスを作りやすくなると思います。
BaaSがIoTに対応してくるという流れは、このセンサーからのデータ取得からWebサービスの活用までの一連のプロセスを加速させてくれると思います。

JavascriptとBaaSでIoTを加速

私がJS界隈の話題を追っているからかもしれませんが、今時のマイコンボードはJavascriptで制御出来るものや、Javascriptで制御出来るようにしたライブラリが公開されていたりとWeb界隈の人にとって親しみやすい作りを考慮してくれています。同じようにBaaSベンダー側もJavascript向けのSDKを積極的にリリースしていて、フロントエンドのWeb技術者や初心者などでも試しやすい環境になってきています。
今回取り扱ったRaspberry Pi、Tessel, Intel Edisonは全てNode.jsを使いMilkcocoa連携の確認が出来ています。 Javascriptさえ覚えておけば、マイコンボードとMilkcocoaを使ってデータのリアルタイム取得などが簡単に出来るようになるので、あとはどんなアプリケーションを作成するか、データを活かしてどんなサービスを作るかといった部分が今後重要になっていく気がしています。 (もちろん他のBaaSを使う場合でも同様です。)

イベントを通しての所感

今回はIoT x Milkcocoaというハンズオンイベントでしたが、1時間30分くらいのハンズオンイベントでしたが、大半がマイコンボードの初期設定でつまずいてました。ただ、マイコンボードの設定が終わり、 Milkcocoaを使ってWebアプリケーションとの連携部分は本当に簡単で数分で終わっている人もいました。(もちろん時間内に完了することができなかった人もいました^^;)

このことから、Milkcocoaを使うことでWebとデータの連携はサクっとできますが、マイコンボード側はまだ障壁があるなという印象を受けました。プログラム以外の部分でつまずくのは、エラーコードが出るプログラムと違い、ネットで原因を調べにくいです。なので、実際にリアルの場でその現象を見て対応していく ハンズオンはIoTには相性が良い印象です。
個人的にはこの辺りの障壁を少なくして、IoT界隈にみんなが入って来やすくなると良いなと思っていますので、Milkcocoaのブログなど自身のQiita、 今回のイベントでスポンサーになっていただいたエンジニア向けQAサービスのテラテイルなどでなるべくノウハウを残したいと思っています。

まとめ

今回はIoTとBaaSという言葉を振り返り RasPi,Edison,TesselとJS対応状況を紹介しました。BaaSと組み合わせることでIoT領域が加速してくると感じています。 今回のハンズオンイベントで改めて、IoTとBaaSは相性がいいなと感じました。マイコンボードにBaaSを組み合わせることで、Webとハードの垣根がさらに無くなっていくと思います。
BaaS側はMilkcocoaのように初心者でもすごく使いやすいサービスを使うことで障壁が下がりますが、マイコンボード側の障壁はまだあると思っています。ハンズオンを行うことで少しでも障壁が下がったと感じた人がいれば幸いです。また、Milkcocoaがマイコンボードと連携できることは伝えられたかなと思います。

需要がありそうだと感じたので定期的に開催していけたらと思っていますので、こちらのグループで情報を追って頂きたいです!

IoTとBaaSに関連したイベントのお知らせ

  • IoT縛りの勉強会 「IoTLT vol6」が8/19に開催されます。
    IoT界隈のネタを紹介して、情報共有し合う会です。参加者100名を超える人気イベントになりつつあります。執筆時点でイベントページが公開されていないので、こちらのグループから情報を追ってください。