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
ufoo68
July 14, 2020
Technology
0
490
GraphQLをIoTで使う
ufoo68
July 14, 2020
Tweet
Share
More Decks by ufoo68
See All by ufoo68
OpenAIでクッキー型を作る
ufoo68
1
31
初めて開発リーダーをやってみた話
ufoo68
0
110
M5Stack用の指紋認証デバイスを試す
ufoo68
0
750
結婚式のクイズアプリを自作した話
ufoo68
0
620
M5Stack Core2とAlexaでインターフォンに自動で対応してくれるIoTデバイスを作りたかった話
ufoo68
0
670
KASHIKOIHAKO
ufoo68
0
570
LIFF通話をつくろう!
ufoo68
0
1.4k
KASHIKOIHAKO計画その4
ufoo68
0
290
AWS CDKで作るLINE bot
ufoo68
0
380
Other Decks in Technology
See All in Technology
【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方 / 大吉祥寺.pm 2025
arthur1
1
830
AIエージェント開発用SDKとローカルLLMをLINE Botと組み合わせてみた / LINEを使ったLT大会 #14
you
PRO
0
110
S3アクセス制御の設計ポイント
tommy0124
3
200
人工衛星のファームウェアをRustで書く理由
koba789
15
7.8k
250905 大吉祥寺.pm 2025 前夜祭 「プログラミングに出会って20年、『今』が1番楽しい」
msykd
PRO
1
830
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
5
490
allow_retry と Arel.sql / allow_retry and Arel.sql
euglena1215
1
160
roppongirb_20250911
igaiga
1
220
Generative AI Japan 第一回生成AI実践研究会「AI駆動開発の現在地──ブレイクスルーの鍵を握るのはデータ領域」
shisyu_gaku
0
160
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.3k
【初心者向け】ローカルLLMの色々な動かし方まとめ
aratako
7
3.4k
Featured
See All Featured
Writing Fast Ruby
sferik
628
62k
KATA
mclloyd
32
14k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
Six Lessons from altMBA
skipperchong
28
4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
GraphQLとの向き合い方2022年版
quramy
49
14k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Git: the NoSQL Database
bkeepers
PRO
431
66k
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氏に感謝