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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ufoo68
July 14, 2020
Technology
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GraphQLをIoTで使う
ufoo68
July 14, 2020
More Decks by ufoo68
See All by ufoo68
BlenderをCodexで動かす
ufoo68
1
590
改めて考えるOSSのあり方について
ufoo68
0
72
文法で学ばないJavaScript
ufoo68
0
87
Cookieとは?
ufoo68
1
97
今更ながら、開発現場での生成AI活用について
ufoo68
0
94
28歳独身エンジニア 婚活してみた
ufoo68
0
47
OpenAIでクッキー型を作る
ufoo68
1
78
初めて開発リーダーをやってみた話
ufoo68
0
160
M5Stack用の指紋認証デバイスを試す
ufoo68
0
940
Other Decks in Technology
See All in Technology
35分でわかるEffective Platform Engineering
nwiizo
5
530
ホームラボ紹介
y_sera15
0
220
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
120
Apache Icebergインフラストラクチャ:ストレージ・カタログ・エンジンの選択肢とClouderaプラットフォームでの実装
tsugiyama
0
120
私がブラウザを自作したくなった理由
supurazako
1
270
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
LanceDB入門
mocobeta
9
630
Kiro入門|仕様駆動開発で変わるAI時代の開発スタイル
cmkudo
0
240
猫付きpingコマンドを自作
uyuki234
0
270
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
350
Digitization部 紹介資料
sansan33
PRO
2
7.7k
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
340
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
410
Accessibility Awareness
sabderemane
1
180
The Cost Of JavaScript in 2023
addyosmani
55
10k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Utilizing Notion as your number one productivity tool
mfonobong
4
550
Side Projects
sachag
455
43k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
790
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
700
4 Signs Your Business is Dying
shpigford
187
23k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
540
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
620
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氏に感謝