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
GraphQLをIoTで使う
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ufoo68
July 14, 2020
Technology
510
0
Share
GraphQLをIoTで使う
ufoo68
July 14, 2020
More Decks by ufoo68
See All by ufoo68
BlenderをCodexで動かす
ufoo68
0
160
改めて考えるOSSのあり方について
ufoo68
0
51
文法で学ばないJavaScript
ufoo68
0
65
Cookieとは?
ufoo68
1
74
今更ながら、開発現場での生成AI活用について
ufoo68
0
78
28歳独身エンジニア 婚活してみた
ufoo68
0
34
OpenAIでクッキー型を作る
ufoo68
1
67
初めて開発リーダーをやってみた話
ufoo68
0
140
M5Stack用の指紋認証デバイスを試す
ufoo68
0
890
Other Decks in Technology
See All in Technology
O'Reilly Infrastructure & Ops Superstream: Platform Engineering for Developers, Architects & the Rest of Us
syntasso
0
320
なぜ、IAMロールのプリンシパルに*による部分マッチングが使えないのか? / 20260518-ssmjp-iam-role-principal
opelab
2
140
R&D 祭 2024 アニメエフェクト作成の効率化
olmdrd
PRO
0
110
TypeScriptはどのようにどこまで推論できるのか ─ とにかく as は禁止で
ypresto
0
250
TSKaigi 2026 - enumよ、さようなら
teamlab
PRO
1
220
AsyncStreamでマルチブロードキャストを実装する
1mash0
1
180
JaSSTに関わることで変わった人生観 #jasstnano
makky_tyuyan
0
160
Gaussian Splattingの表現力を拡張する — 高周波再構成とインタラクションへのアプローチ —
gpuunite_official
0
200
業務に残された「良くない型」で考える「TypeScriptの難しさ」
sajikix
2
840
その英語学習、AWSで代替できませんか?
suzutatsu
1
160
React Compiler導入から21ヶ月、いま始めるならこうやる
astatsuya
2
280
AWS運用におけるAI Agent活用術 / JAWS-UG 神戸 #11 LT大会
genda
1
310
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
310
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Raft: Consensus for Rubyists
vanstee
141
7.4k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
200
Unsuck your backbone
ammeep
672
58k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
HDC tutorial
michielstock
2
660
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
150
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Transcript
IoTLT vol.65 GraphQLをIoTで使う
自己紹介 • 名前 ◦ 松永勇太(@ufoo_yuta) • 出身地 ◦ 滋賀県 •
やってること ◦ スポーツIoTLT主催 • 最近の趣味 ◦ VRゲーム
GraphQLとは • WEB APIのためのクエリ・スキーマ言語 ◦ クライアントアプリのためのクエリ ◦ データのモデル定義のためのスキーマ • Facebookの開発チームが提案
◦ 公開は2015年 • 個人的に好きなWEBの規格
GraphQLを用いた開発 かなりざっくりとしたイメージ↓ • クエリ ◦ クライアントアプリからのリクエスト ◦ GETやPOSTのようなもの • リゾルバ
◦ リクエストに対するレスポンス処理と同じイメージ クエリ構文解析 リゾルバ実行
GraphQLをIoTで使うとは? IoTデバイスから送られたデータを GraphQLサーバで受け止めてみる
データ送信にMQTTを用いる • IoTでよく使われている通信規格 • 軽量なプロトコル • pub/subモデル • 今回のイメージ↓ IoTデバイス
(publisher) MQTTサーバー GraphQLサーバー (subscriber)
今回の発表について こちらの記事を参考にしました↓ Live IoT Data Subscription with Apollo GraphQL and
MQTT
IoTデバイスはM5StickCを使用 コードは以前に記事にまとめた「M5StickCで歩数計を作る」の内容のものを流用 やりたいことは、 1. M5StickCの内蔵センサを用いて歩数を計測 2. 歩数データをJSON化 3. MQTTサーバーへ送信
サーバー側の開発環境 • GraphQLサーバー ◦ 言語 ▪ Node.js ◦ ライブラリ(主要なものだけ) ▪
express ▪ apollo-server-express ▪ graphql-mqtt-subscriptions • MQTTサーバー ◦ Eclipse Mosquittoのテスト用ブローカー
デバイス側の開発環境 • マイコン ◦ M5StickC • 言語 ◦ Arduino •
ライブラリ ◦ PubSubClient ◦ ArduinoJson
GraphQLサーバーのためのスキーマ type SensorData { steps: Int! // 歩数 time: String!
// タイムスタンプ } type Subscription { subscribe2sensor(topic: String!): SensorData! } schema { subscription: Subscription }
センサーデータを受信するクエリ subscription { // GraphQLとリアル通信を行うためのクエリ subscribe2sensor(topic: "test/+/env") { steps //
歩数 time // タイムスタンプ } }
動画
さいごに • GraphQLをIoT開発に使うことができた • MQTTはsubscribeと組み合わせることができる • 実際にクライアントアプリを作ってみるとGraphQLの恩恵に授かれそう • 記事を書いてくださったShan Desai氏に感謝