初夏のJavaScript祭
JavaScriptでデバイス連携してみて
出会える技術!広がる知識!
ワンフットシーバス 田中正吾
私の話はスライドを後ほど共有します。
話す内容に注力いただいて大丈夫です!
自己紹介
田中正吾(たなかせいご)
屋号:ワンフットシーバス
2004年よりフリーランス。以後、FLASH制作を
中心にインタラクティブコンテンツを主に行い
現在に至る。
最近は、JavaScriptやHTML5アニメーション、
スマートフォン演出制作のワークフロー改善に
関わったりしていました。
デジタルサイネージやアプリ制作もやります。
LIGブログのDevRelコーナーに寄稿してます。
(最近、3記事以上書いたのでライターページできた。)
ウォンバットが好きで、その情報収集に
WEBの知見や技術を全力で注いでいます。
(豆知識)ウォンバットは、おしりが硬くて、
巣穴をおしりで塞いで外敵から防御します。
背景
普段のWEB制作のかたわら
デバイス連携する制作もしてる
なぜやるのか?
デバイス
最近言われはじめてるデバイスをつかった
計測→収集→分析はスマートフォンと似ている
計測 収集 分析
デバイス
スマートフォンが多機能・高機能とするなら
デバイス連携は、特化した計測
デバイス
つまり、自分が使っているJavaScriptは
デバイス連携も可能。
JavaScriptでいろいろ知見広がる。
そんな話をします!
デモ
早速デモします
リモートサイコロ 1号
サイコロの目がいろいろ連動
(まずモニターでWEB連動)
磁石でくっつくlittleBitsというデバイスが
リモートサイコロ1号が反応。
1のときは1つLEDが点灯!
2のときは2つLEDが点灯!!
3のときは3つLEDが点灯!!!
4のときは、さらにBluetooth無線化された
別のlittleBitsがうごきます!!!!
リモートサイコロ 1号のしかけ
中にMESHというデバイス
MESHというデバイスの傾きセンサを
アプリで上のにある面を検知
その情報をアプリ経由でWEBに通知
MESHの情報はIFTTTという
TwitterといったWEBサービスや
いろいろなデバイスをつなぐ
サービスで伝えます。
磁石でくっつくlittleBitsのしかけ
littleBitsはRaspberryPiという小さなPCで
サイコロ反応と連動します。
データ蓄積・連絡は
MilkcocoaというWEBサービス利用
こんな流れ
中継
いざデモ!
うまくいきますように
出会える技術!広がる知識!
こんな流れ
中継
JavaScriptで連携しているところ
中継
MESHアプリ
WEBサービス
一部Arduino
一部をのぞいて、かなりJavaScript連携
中継
MESHアプリ
WEBサービス
一部Arduino
どんな風にJavaScriptが絡んでいるか
まずはここ
中継
MESHアプリ
WEBサービス
一部Arduino
クラウドで気軽にサーバ解説できるHeroku。
NodeJS(express)サーバーを立ててる。
中継
WEBサービス
MESHからの値を使いやすく
Milkcocoaに連絡したいので中継させた。
中継
WEBサービス
「用途に合わせてデータを合わせる」
という知見を持てる
中継
var express = require('express');
次はこのあたり
中継
MESHアプリ
WEBサービス
一部Arduino
デバイス連携はできるだけすぐに
反応を伝えたくなるので
リアルタイム通信したくなってくる!
そこでリアルタイム通信を追っていくと
WebSocket/SocketIO/MQTTと出会える
WebSocket
SocketIO
MQTT
WebSocket/SocketIO/MQTTは
JavaScriptで動かせる!
WebSocket
SocketIO
MQTT
var WebSocket = require('ws');
var io = require('socket.io');
var mqtt = require('mqtt');
HTTP通信だと自宅内デバイスを
やり取りするときにIP特定しにくく
手間がかかるケースもある(NAT越え)
WebSocket/SocketIO/MQTTは
そのあたりも解決しやすい
WebSocket
SocketIO
MQTT
今回のMilkcocoaはMQTT/WebSocketに対応。
JavaScriptだけでリアルタイム通信が
高速開発できるサービス!
中継
var milkcocoa = new MilkCocoa(" .mlkcca.com");
今回のMilkcocoaはMQTT/WebSocketに対応。
JavaScriptだけでデータの保存・更新・取得も
高速開発できるサービス!
「よりリアルタイムに反応させる通信技術」
という知見を持てる
最後はここ
中継
MESHアプリ
WEBサービス
一部Arduino
一部Arduinoのプログラムを書くが
おおむねJavaScriptで制御できる。
(Arduino部分は文字列1でLED1が光る程度のシンプルなもの)
一部Arduino
プログラム
気軽に買えて小さいPC Raspberry Pi は
NodeJSが動くのでWEB連携しやすい
ArduinoとNodeJSで
PCとハードが会話しやすくなる!
WEBともリアルタイム連携しつつ
ハード制御(LED点灯とか)も
JavaScriptで一貫してできる
一部Arduino
プログラム
var serialport = require('serialport'); // ハード制御(シリアル)
var express = require('express');
var milkcocoa = new MilkCocoa(" .mlkcca.com");
さらにBluetoothの制御もできるので
今回のBluetoothなlittleBitsも操作可能!
var noble = require('noble'); // Bluetooth制御
「ハードとWEBの橋渡しするライブラリ群」
という知見を持てる
デバイス連携の楽しさ ふりかえり
デバイス連携をしてみると
普段のWEB制作と別のアプローチで
技術を知ることができる
普段のWEB制作でも触れるかもしれないが
技術の見え方・使い方がちがう
(目下の案件重視になりがち)
トイレや適温管理など身近な問題解決や
おもしろ反応ネタなど取り組みやすい
(やれそうな事例がいろいろ出てきた)
通信機器
RaspberryPiなど
家庭内や会社内ネットワーク
わりと工作がらみをするので
普段とちがうアタマを使っている
手元でモノが動き、やりとりできるので
ディスプレイのなかでの出来事とはちがう体験
さらにいえば、モノのデータを
今回のように手持ちのWEB技術で
可視化するのは楽しい
(今回はMilkcocoa+CreateJSで制作しました)
なによりデバイス連携はWEBの技術を
普段とちがう活かし方を知れる。
新しい興味が生まれる可能性を感じる。
家庭内や会社内ネットワーク
新しい興味はスキルアップの原動力。
そこにJavaScriptでかなり踏み込んでいけます!
家庭内や会社内ネットワーク
デバイス連携楽しいよ!
JavaScript楽しいよ!
ご清聴いただきまして
ありがとうございました!

2016初夏のJavaScript祭り20160514