makestack - ipa · 楽しいiotプロトタイピング •...
TRANSCRIPT
![Page 1: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/1.jpg)
MakeStack開発者体験に注力するIoT PaaS
怒田 晟也
![Page 2: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/2.jpg)
自己紹介
• 怒田 晟也 (ぬた せいや)
• 筑波大学 情報科学類 4年暗号・情報セキュリティ研究室
• 2016年度 未踏IT人材発掘・育成事業スーパークリエータ認定
![Page 3: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/3.jpg)
IoT開発の流れ
プロトタイピング 量産化デザイン
![Page 4: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/4.jpg)
プロトタイピング 量産化デザイン
![Page 5: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/5.jpg)
楽しいIoTプロトタイピング
• 画面の中だけでなく,物理世界に干渉できる刺激的な体験
• Webブラウザから遠隔操作したり監視したり
• アイデア次第で楽しく実用的な物も作れる
意味が分からない おー光った!
![Page 6: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/6.jpg)
ただひとつ致命的な問題が
![Page 7: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/7.jpg)
ひらすら面倒くさい
![Page 8: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/8.jpg)
IoTプラットフォームあるある 「まずRaspbianをインストール」
$ wget https://downloads.raspberrypi.org/raspbian_lite_latest $ unzip *.zip $ dd if= 2017-01-11-raspbian-jessie-lite.img of=/dev/disks2 bs=4m $ nmap 192.168.88.0/24 $ scp ~/.ssh/id_rsa.pub [email protected]:.ssh/authorized_keys $ ssh 192.168.88.67 -l pi
$ sudo passwd $ sudo apt-get update && sudo apt-get upgrade $ sudo apt install -y node i2c-tools $ # Install the IoT platform stuffs $ sudo raspi-config$ sudo reboot
Linuxのセットアップがやりたかったのではない
![Page 9: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/9.jpg)
Arduino業界あるある 「ひたすら冗長なコード」
// connect to host const char* host = "192.168.12.1"; int port = 443; if (client.connect(host, port)) { Serial1.print("Connection to "); Serial1.print(host); Serial1.println(" established."); // check the fingerprint of the SSL cert verifyFingerprint(); // send GET request Serial1.println("Sending a message to the server:"); client.print(String("GET /") + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n" + "\r\n"); Serial1.println(String("GET /") + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n" + "\r\n"); blinkSent(); delay(500); // get response int success = 0; failcounter = 10000; while (client.connected()) {
何が悲しくてこんなに長い冗長なコードを書いているのか
https://https://github.com/pinae/ESP8266-Dashより (GPLv2)
![Page 10: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/10.jpg)
「簡単にIoTデバイス開発できるよ」系サービス
Particle.io
RuffMongoose OS
Arduino CREATEresin.io
mbed
johny-fivePlatformIO
isaax
![Page 11: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/11.jpg)
悲しい現実
前時代的で楽しくない開発環境 快適な開発環境と,直感的で便利なAPIでデバイスの開発をしたい
インターネットデバイスをいじれない (一部サービス)
デバイスの初期設定を済ませたら,後は全てリモートから開発したい
OSのアップデートなんてものはない (一部サービス)
アプリのアップデートの面倒は見るがOSのアップデートは考えない
![Page 12: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/12.jpg)
IoTデバイスの構成
ハードウェア
マイコン
通信モジュール
センサー
アクチュエータ
ソフトウェア
ビジネスロジック
管理エージェント
OS
カーネル
自社サービス
Webサービス
データ蓄積
データ解析
デバイス操作
サーバ
デバイス管理
デバイス設定
アプリイメージ配布
OSイメージ配布
![Page 13: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/13.jpg)
IoTソフトウェアスタックの共通基盤を提供
ハードウェア
マイコン
通信モジュール
センサー
アクチュエータ
ソフトウェア
ビジネスロジック
管理エージェント
OS
カーネル
自社サービス
Webサービス
データ蓄積
データ解析
デバイス操作
サーバ
デバイス管理
デバイス設定
アプリイメージ配布
OSイメージ配布
![Page 14: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/14.jpg)
作りたいものに集中できるIoTプロトタイピングフレームワーク
![Page 15: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/15.jpg)
MakeStackA “batteries-included” IoT PaaS for super-rapid prototyping.
![Page 16: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/16.jpg)
セットアップからデプロイまで
![Page 17: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/17.jpg)
ユーザ登録
![Page 18: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/18.jpg)
デバイスにMakeStack OSをインストール
デバイスのセットアップはこれで終わり!
![Page 19: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/19.jpg)
アプリを新規作成
![Page 20: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/20.jpg)
デバイスを作ったアプリに追加
![Page 21: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/21.jpg)
連携する外部サービスを登録
![Page 22: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/22.jpg)
コードを書いて…
![Page 23: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/23.jpg)
クリックひとつでリモートデプロイ
![Page 24: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/24.jpg)
-完-
![Page 25: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/25.jpg)
色んな機能盛りだくさん
![Page 26: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/26.jpg)
みんな大好きCLI開発者ツール
![Page 27: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/27.jpg)
かんたん外部サービス連携
自前のサーバで自由に開発 サーバレスでサクッと作る
普段使っているサービスに繋げるデバイスからのデータをThingSpeakやDatadogに流す
![Page 28: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/28.jpg)
sakura.ioでLTEからリモート監視・デプロイ
デバイスを登録するだけ!
https://sakura.io
![Page 29: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/29.jpg)
Node-REDでIoTデバイスプログラミング
リモートのデバイスからのログもリアルタイムで見れます
![Page 30: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/30.jpg)
設計と実装
![Page 31: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/31.jpg)
アーキテクチャ
デバイス
MakeStackサーバ
ログ,センサーデータ
アップデート,設定, アプリデータ
連携
バックエンドサーバ経由で
コーディング・設定
開発者
![Page 32: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/32.jpg)
デバイスのソフトウェアスタック
ハードウェア
MakeStack Linux
アプリ
API エージェント
Linux
プラグイン
Node.js
アプリ実行環境
• アプリはZIPファイルとしてデプロイ(AWS LambdaのようにGoも使える)
• 独自Linuxディストリビューション
• initramfsに全て同梱
• カーネル含めて13MB
• エージェントがMakeStackサーバとの通信・アプリ管理を担当
• 通信プロトコルは独自 (後述)
• Raspberry Pi 3に対応
![Page 33: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/33.jpg)
SMMS: Simple Management/Messaging Protocol
• Type, Length, Valueが並ぶだけのシンプルな独自プロトコル • デバイスの状態,ログ,設定,アプリイメージなどなど
• 柔軟性・実装の簡単さを重視
• 下層レイヤに求めることは「データを送受信できる」こと
• UDPでもHTTPでもICMPでもDNSでも,SMMSを実装すればアプリから透過的に通信できる
![Page 34: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/34.jpg)
セキュリティ
![Page 35: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/35.jpg)
セキュリティ
ハードウェア
MakeStack Linux
アプリ
API エージェント
Linux
プラグイン
Node.js
アプリ実行環境
• telnet/sshなどの余計なものは一切無し
• アプリはAppArmorのアクセス制御下
• 通信はHTTPS/sakura.io (LTE閉域網)
• 通信内容はHMAC-SHA-256で認証(アプリ・OSのイメージも)
• 物理的接触が可能な場合は問題
• Wi-Fiの認証情報・HMACの秘密鍵の奪取が可能
• あきらめましょう
![Page 36: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/36.jpg)
ロードマップ
![Page 37: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/37.jpg)
ロードマップ
2017年12月 24/7全自動E2Eテスト
2017年2月 バイトコードVM
2017年4月 軽量OSカーネル
2017年5月 Wio LTE JP/ ESP-32サポート
2017年7月 安定版リリース
![Page 38: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/38.jpg)
利用プラン(料金)
![Page 39: MakeStack - IPA · 楽しいIoTプロトタイピング • 画面の中だけでなく,物理世界に干渉できる刺激的な体験 • Webブラウザから遠隔操作したり監視したり](https://reader033.vdocuments.site/reader033/viewer/2022042308/5ed4666cfd1ba21d1424bf04/html5/thumbnails/39.jpg)
MakeStackは全てオープンですCC 0 (パブリックドメイン),MITのデュアルライセンス で公開されています
https://github.com/seiyanuta/makestack