GraphQLをIoTで使う

Cb88f765dd38cd942c39aacb5abbea06?s=47 ufoo68
July 14, 2020

 GraphQLをIoTで使う

Cb88f765dd38cd942c39aacb5abbea06?s=128

ufoo68

July 14, 2020
Tweet

Transcript

  1. IoTLT vol.65 GraphQLをIoTで使う

  2. 自己紹介 • 名前 ◦ 松永勇太(@ufoo_yuta) • 出身地 ◦ 滋賀県 •

    やってること ◦ スポーツIoTLT主催 • 最近の趣味 ◦ VRゲーム
  3. GraphQLとは • WEB APIのためのクエリ・スキーマ言語 ◦ クライアントアプリのためのクエリ ◦ データのモデル定義のためのスキーマ • Facebookの開発チームが提案

    ◦ 公開は2015年 • 個人的に好きなWEBの規格
  4. GraphQLを用いた開発 かなりざっくりとしたイメージ↓ • クエリ ◦ クライアントアプリからのリクエスト ◦ GETやPOSTのようなもの • リゾルバ

    ◦ リクエストに対するレスポンス処理と同じイメージ クエリ構文解析 リゾルバ実行
  5. GraphQLをIoTで使うとは? IoTデバイスから送られたデータを GraphQLサーバで受け止めてみる

  6. データ送信にMQTTを用いる • IoTでよく使われている通信規格 • 軽量なプロトコル • pub/subモデル • 今回のイメージ↓ IoTデバイス

    (publisher) MQTTサーバー GraphQLサーバー (subscriber)
  7. 今回の発表について こちらの記事を参考にしました↓ Live IoT Data Subscription with Apollo GraphQL and

    MQTT
  8. IoTデバイスはM5StickCを使用 コードは以前に記事にまとめた「M5StickCで歩数計を作る」の内容のものを流用 やりたいことは、 1. M5StickCの内蔵センサを用いて歩数を計測 2. 歩数データをJSON化 3. MQTTサーバーへ送信

  9. サーバー側の開発環境 • GraphQLサーバー ◦ 言語 ▪ Node.js ◦ ライブラリ(主要なものだけ) ▪

    express ▪ apollo-server-express ▪ graphql-mqtt-subscriptions • MQTTサーバー ◦ Eclipse Mosquittoのテスト用ブローカー
  10. デバイス側の開発環境 • マイコン ◦ M5StickC • 言語 ◦ Arduino •

    ライブラリ ◦ PubSubClient ◦ ArduinoJson
  11. GraphQLサーバーのためのスキーマ type SensorData { steps: Int! // 歩数 time: String!

    // タイムスタンプ } type Subscription { subscribe2sensor(topic: String!): SensorData! } schema { subscription: Subscription }
  12. センサーデータを受信するクエリ subscription { // GraphQLとリアル通信を行うためのクエリ subscribe2sensor(topic: "test/+/env") { steps //

    歩数 time // タイムスタンプ } }
  13. 動画

  14. さいごに • GraphQLをIoT開発に使うことができた • MQTTはsubscribeと組み合わせることができる • 実際にクライアントアプリを作ってみるとGraphQLの恩恵に授かれそう • 記事を書いてくださったShan Desai氏に感謝