Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GAS(Google Apps Script)がつくりだす JavaScriptとIoTハ...
Search
pokiiio
November 18, 2017
Technology
1.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GAS(Google Apps Script)がつくりだす JavaScriptとIoTハードウェアの禁断の関係 @秋のJavaScript祭 in mixi 2017
https://javascript-fes.doorkeeper.jp/events/66335
https://github.com/pokiiio/2017-11-19_JSFES
pokiiio
November 18, 2017
More Decks by pokiiio
See All by pokiiio
enebularで釣果情報を収集する
pokiiio
0
300
enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた
pokiiio
0
2.5k
東京の陽性者数ばかりTVに出ててずるくない?
pokiiio
1
180
実践Node-RED活用マニュアルで電子ペーパーネタを書きました!
pokiiio
0
1.7k
テレワークを1ヶ月してみて分かった 3つのこと
pokiiio
0
460
技術書典の進捗を監視する
pokiiio
2
500
SonoSwitch
pokiiio
0
120
SonoSwitch
pokiiio
0
130
冬休みを利用して子供と遊べるゆるメカトロを作ったよ
pokiiio
0
310
Other Decks in Technology
See All in Technology
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
130
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
1
1.4k
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
3
930
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
210
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
DatadogのBits Chatが開発組織にもたらしたもの / What Bits Chat Has Brought Us
sms_tech
1
280
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.1k
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
340
Genie Codeハンズオン基礎編
taka_aki
1
130
MIRU 2026 チュートリアル
keisuke198619
0
960
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
1
310
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
210
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Color Theory Basics | Prateek | Gurzu
gurzu
0
420
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
56k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
300
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
290
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
420
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
940
Transcript
GAS(Google Apps Script)がつくりだす JavaScriptとIoTハードウェアの禁断の関係 @秋のJavaScript祭 in mixi 2017 ポキオ
禁断って なんだよ
ポキオとは • Androidエンジニア • Twitter : @pokiiio • Blog :
Androidのメモとか (http://relativelayout.hatenablog.com/ )
IoTLT Connpass最大の IoT関係の勉強会で ちょいちょい登壇
デブサミ2017 コミュニティ展示を させていただきました
de:code 2017 前夜祭(day0) LTしてきました
dotstudioさんで 記事も公開 京急ネタです
ハンズオン会も 開催してます IoTの楽しさを広める活動
KQ-IoT
None
京急は神 *個人の感想です
KQ : Keikyu 京急好きの京急好きによる京急好きのためのIoTガジェット 俺得だっていいじゃないか、にんげんだもの
K: クソみたいな Q: クオリティ 凝ったことはしない、最小工数でやりきる、たまに力尽く クソコードだって、動けばいいよ、にんげんだもの
KQ-IoT
はい
IoTの話
Wi-Fiが使える マイコンボードが いっぱいある
Raspberry Pi 3 Model B https://www.raspberrypi.org/ ESPr Developer https://www.switch-science.com/catalog/2500/ Nefry
BT https://dotstud.io/shop/nefry-bt-single/ ESP32-DevKitC http://akizukidenshi.com/catalog/g/gM-11819/
そもそも マイコンボードって 何ができるの?
マイコンボード INPUT OUTPUT センサー各種 電気信号 時間トリガー LED スピーカー ディスプレイ 電気信号
たとえば「リモコンの操作」 ①ボタンを押す ②ボタンが押されたことを検知 ③赤外発光ダイオードを特定の 光らせ方で光らせる ④赤外発光 ダイオードが光る ⑤チャンネルが変わる
たとえば「リモコンの操作」 ①ボタンを押す ②ボタンが押されたことを検知 ③赤外発光ダイオードを特定の 光らせ方で光らせる ④赤外発光 ダイオードが光る ⑤チャンネルが変わる INPUT OUTPUT
それに 応じて
マイコンボード INPUT OUTPUT センサー各種 電気信号 時間トリガー HTTP-GET LED スピーカー ディスプレイ
電気信号 HTTP-POST 「HogeなINPUTがあったら、FugaなOUTPUTをする」 みたいなロジックを自由にプログラムできる! Wi-Fi付きマイコンボードならHTTP-GET/POSTも!
このプログラミングを JSで行えるのが…
None
JavaScriptでIoTができる! • Jonny-Fiveはnode.js上で動作する • JavaScriptでコーディングするとマイコンボードの GPIO(入出力端子)をコントロールできる • node.js⇔マイコンボードはFirmataというプロトコルで通信する
JavaScriptでIoTができる! • Jonny-Fiveはnode.js上で動作する • JavaScriptでコーディングするとマイコンボードの GPIO(入出力端子)をコントロールできる • node.js⇔マイコンボードはFirmataというプロトコルで通信する ただし大きな制約が
マイコンボードによっては母艦PC必須 マイコンボード OS タスク タスク タスク Raspberry Pi 3 Model
B マイコンボード タスク ESPr Developer Nefry BT ESP32-DevKitC ※マルチタスク可能な子もある
マイコンボードによっては母艦PC必須 マイコンボード OS タスク タスク タスク Raspberry Pi 3 Model
B • Raspberry Pi上ではOSが走る • OSがnode.jsやJohnny-Fiveをサポートすれば Raspberry Pi単体でJohnny-FiveによるGPIOの 操作が可能
マイコンボードによっては母艦PC必須 マイコンボード OS タスク タスク タスク Raspberry Pi 3 Model
B • Raspberry Pi上ではOSが走る • OSがnode.jsやJohnny-Fiveをサポートすれば Raspberry Pi単体でJohnny-FiveによるGPIOの 操作が可能 ラズパイは大丈夫
マイコンボードによっては母艦PC必須 マイコンボード タスク • 非力なマイコンボードだとOSなし • もちろんnode.jsもだめ • Johnny-Fiveでプログラミングするには 別途PC等が必要
• PCとマイコンボードはUSB接続 or Wi-Fi接続 が必要
マイコンボードによっては母艦PC必須 マイコンボード タスク • 非力なマイコンボードだとOSなし • もちろんnode.jsもだめ • Johnny-Fiveでプログラミングするには 別途PC等が必要
• PCとマイコンボードはUSB接続 or Wi-Fi接 続が必要 IoT感が薄れる
IoTでJSを もっと使いたいなぁ…
そこでGAS
Google Apps Script https://www.google.com/script/start/
Google Apps Script • JSベース • Googleが提供するサーバサイドスクリプト環境 • 雑に言うとGoogle版VBA:Google Suiteとの連携が簡単にできる
• オレオレWebAPIが無料で簡単に作れる
例:電車遅延通知ガジェット ②HTTP-GET ③情報取得 ⑤GPIOを操作 LEDを点灯 ①定期的に処理を開始 ④情報をパース 遅延情報 サーバー
例:電車遅延通知ガジェット ②HTTP-GET ③情報取得 ⑤GPIOを操作 LEDを点灯 ①定期的に処理を開始 ④情報をパース 遅延情報 サーバー AUTHとか
あると だるい パースとか だるい
例:電車遅延通知ガジェット ②HTTP-GET ⑥何色に 光らせるか通知 ⑦言われるが ままにLEDを 光らせる ①定期的に処理を開始 遅延情報 サーバー
GAS ③さらに HTTP-GET ④情報取得 ⑤情報をパース
例:電車遅延通知ガジェット ②HTTP-GET ⑥何色に 光らせるか通知 ⑦言われるが ままにLEDを 光らせる ①定期的に処理を開始 遅延情報 サーバー
GAS ③さらに HTTP-GET ④情報取得 ⑤情報をパース 面倒な処理は GASでやっちゃう マイコンは 言われるがままに LEDをを光らせる
Pros. • Google Apps Script ◦ 無料 ◦ 簡単にAPIを作れる ◦
JavaScript • マイコンボード ◦ マイコンで難しい処理をする必要がない ◦ ロジック変更はGASをいじるだけ ◦ 簡単に複数台対応できる
Cons. • 全部JavaScriptで書けるわけではない ◦ マイコンボード上の実装は Arduino言語を… ◦ ちょっと長い…(なんとかライブラリ化したい) • 基本的にトリガーはマイコンボードから書ける必要がある
◦ リアルタイム性がアレ ◦ ユースケースによっては許容できる
デモ
構成 ②HTTP-GET ③何色に光らせるか通知 ④言われるが ままにLEDを 光らせる ①定期的に処理を開始 GAS モバイル ルーター経由
ESP8266側のコード(一部) #include <ESP8266WiFi.h> #include <Adafruit_NeoPixel.h> #include <HTTPSRedirect.h> #define PIN 4
#define NUMLED 1 #define SSID "xxxxx" #define PASSWORD "xxxxx" #define HTTPS_PORT 443 #define HOST "script.google.com" #define URL "/macros/s/xxxxx/exec" #define FINGERPRINT "08:9E:B2:B8:77:37:3E:85:26:09:CA:29:13:D2:B0:57:26:DE:C4:6D" #define INTERVAL_SEC 5
HTTPSRedirect* client = nullptr; Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMLED, PIN, NEO_RGB
+ NEO_KHZ800); void setup() { // Serialの初期化 Serial.begin(115200); Serial.println(""); // マイコン内蔵RGB LEDの初期化 pixels.begin(); // Wi-Fi接続開始 connectWifi(); } void loop() { // Google Apps Scriptを叩く String result = doRedirectGet(); // サフィックスを念のため確認 if (!result.startsWith("pokio")) { delay(INTERVAL_SEC * 1000); return; } // 光る letMeBlink(result); } 続きはこちら… https://github.com/pokiiio/2017-11-19_JSFES
GAS側のコード function doGet() { return ContentService.createTextOutput("pokio,255,0,0"); } デモでは色を決め打ちで…
サマリ • IoTやらマイコンボードをJSで扱える環境が増えている • 一番楽なのはRaspberry Pi+Johnny-Fiveだと思う • GASもユースケースによっては有用 • マイコンボードは触らずにGASだけ触れば挙動の変更ができる
Thank you