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
290
enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた
pokiiio
0
2.4k
東京の陽性者数ばかりTVに出ててずるくない?
pokiiio
1
180
実践Node-RED活用マニュアルで電子ペーパーネタを書きました!
pokiiio
0
1.7k
テレワークを1ヶ月してみて分かった 3つのこと
pokiiio
0
450
技術書典の進捗を監視する
pokiiio
2
500
SonoSwitch
pokiiio
0
110
SonoSwitch
pokiiio
0
120
冬休みを利用して子供と遊べるゆるメカトロを作ったよ
pokiiio
0
310
Other Decks in Technology
See All in Technology
エンジニアリング戦略の作り方 / Crafting Engineering Strategy
iwashi86
18
6k
Databricks における 生成AIガバナンスの実践
taka_aki
1
370
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
ChatworkとBPaaS 異なる特性で学んだAI機能開発の ベストプラクティス
kubell_hr
2
3.4k
EventBridge Connection
_kensh
5
680
Agentic ERPをどう設計するか ー 受発注エージェントを動かす、現場の知見と設計思想ー
recerqainc
1
2.1k
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
3
560
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
810
AI Engineering Summit Tokyo 2026 AIの前に、やることがある 〜医療データ企業の4フェーズ〜
dtaniwaki
0
2.4k
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
3
2k
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
200
Building applications in the Gemini API family.
line_developers_tw
PRO
0
2.6k
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
We Have a Design System, Now What?
morganepeng
55
8.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
22k
Chasing Engaging Ingredients in Design
codingconduct
0
220
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
470
Designing for humans not robots
tammielis
254
26k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
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