Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GAS(Google Apps Script)がつくりだす JavaScriptとIoTハ...
Search
pokiiio
November 18, 2017
Technology
1.8k
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
310
enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた
pokiiio
0
2.5k
東京の陽性者数ばかりTVに出ててずるくない?
pokiiio
1
180
実践Node-RED活用マニュアルで電子ペーパーネタを書きました!
pokiiio
0
1.7k
テレワークを1ヶ月してみて分かった 3つのこと
pokiiio
0
460
技術書典の進捗を監視する
pokiiio
2
510
SonoSwitch
pokiiio
0
120
SonoSwitch
pokiiio
0
130
冬休みを利用して子供と遊べるゆるメカトロを作ったよ
pokiiio
0
320
Other Decks in Technology
See All in Technology
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
150
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
930
事業課題から技術的負債に向き合う
sansantech
PRO
2
2.2k
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
25
17k
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
260
Goodbye ShellScript, Hello File-based App
shunsock
0
630
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.5k
Von-Neumann Machines, Dreams & The Futures of IT
ufried
0
120
LLMに渡さなかった仕事
nanaism
0
1.3k
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.7k
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
240
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
120
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
400
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Faster Mobile Websites
deanohume
310
32k
Deep Space Network (abreviated)
tonyrice
0
320
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
Code Review Best Practice
trishagee
74
20k
Technical Leadership for Architectural Decision Making
baasie
3
580
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Paper Plane
katiecoart
PRO
4
53k
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