GraphQLをIoTで使う
by
ufoo68
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
IoTLT vol.65 GraphQLをIoTで使う
Slide 2
Slide 2 text
自己紹介 ● 名前 ○ 松永勇太(@ufoo_yuta) ● 出身地 ○ 滋賀県 ● やってること ○ スポーツIoTLT主催 ● 最近の趣味 ○ VRゲーム
Slide 3
Slide 3 text
GraphQLとは ● WEB APIのためのクエリ・スキーマ言語 ○ クライアントアプリのためのクエリ ○ データのモデル定義のためのスキーマ ● Facebookの開発チームが提案 ○ 公開は2015年 ● 個人的に好きなWEBの規格
Slide 4
Slide 4 text
GraphQLを用いた開発 かなりざっくりとしたイメージ↓ ● クエリ ○ クライアントアプリからのリクエスト ○ GETやPOSTのようなもの ● リゾルバ ○ リクエストに対するレスポンス処理と同じイメージ クエリ構文解析 リゾルバ実行
Slide 5
Slide 5 text
GraphQLをIoTで使うとは? IoTデバイスから送られたデータを GraphQLサーバで受け止めてみる
Slide 6
Slide 6 text
データ送信にMQTTを用いる ● IoTでよく使われている通信規格 ● 軽量なプロトコル ● pub/subモデル ● 今回のイメージ↓ IoTデバイス (publisher) MQTTサーバー GraphQLサーバー (subscriber)
Slide 7
Slide 7 text
今回の発表について こちらの記事を参考にしました↓ Live IoT Data Subscription with Apollo GraphQL and MQTT
Slide 8
Slide 8 text
IoTデバイスはM5StickCを使用 コードは以前に記事にまとめた「M5StickCで歩数計を作る」の内容のものを流用 やりたいことは、 1. M5StickCの内蔵センサを用いて歩数を計測 2. 歩数データをJSON化 3. MQTTサーバーへ送信
Slide 9
Slide 9 text
サーバー側の開発環境 ● GraphQLサーバー ○ 言語 ■ Node.js ○ ライブラリ(主要なものだけ) ■ express ■ apollo-server-express ■ graphql-mqtt-subscriptions ● MQTTサーバー ○ Eclipse Mosquittoのテスト用ブローカー
Slide 10
Slide 10 text
デバイス側の開発環境 ● マイコン ○ M5StickC ● 言語 ○ Arduino ● ライブラリ ○ PubSubClient ○ ArduinoJson
Slide 11
Slide 11 text
GraphQLサーバーのためのスキーマ type SensorData { steps: Int! // 歩数 time: String! // タイムスタンプ } type Subscription { subscribe2sensor(topic: String!): SensorData! } schema { subscription: Subscription }
Slide 12
Slide 12 text
センサーデータを受信するクエリ subscription { // GraphQLとリアル通信を行うためのクエリ subscribe2sensor(topic: "test/+/env") { steps // 歩数 time // タイムスタンプ } }
Slide 13
Slide 13 text
動画
Slide 14
Slide 14 text
さいごに ● GraphQLをIoT開発に使うことができた ● MQTTはsubscribeと組み合わせることができる ● 実際にクライアントアプリを作ってみるとGraphQLの恩恵に授かれそう ● 記事を書いてくださったShan Desai氏に感謝