Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GraphQLをIoTで使う

ufoo68
July 14, 2020

 GraphQLをIoTで使う

ufoo68

July 14, 2020
Tweet

More Decks by ufoo68

Other Decks in Technology

Transcript

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

    View Slide

  2. 自己紹介
    ● 名前
    ○ 松永勇太(@ufoo_yuta)
    ● 出身地
    ○ 滋賀県
    ● やってること
    ○ スポーツIoTLT主催
    ● 最近の趣味
    ○ VRゲーム

    View Slide

  3. GraphQLとは
    ● WEB APIのためのクエリ・スキーマ言語
    ○ クライアントアプリのためのクエリ
    ○ データのモデル定義のためのスキーマ
    ● Facebookの開発チームが提案
    ○ 公開は2015年
    ● 個人的に好きなWEBの規格

    View Slide

  4. GraphQLを用いた開発
    かなりざっくりとしたイメージ↓
    ● クエリ
    ○ クライアントアプリからのリクエスト
    ○ GETやPOSTのようなもの
    ● リゾルバ
    ○ リクエストに対するレスポンス処理と同じイメージ
    クエリ構文解析 リゾルバ実行

    View Slide

  5. GraphQLをIoTで使うとは?
    IoTデバイスから送られたデータを
    GraphQLサーバで受け止めてみる

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. サーバー側の開発環境
    ● GraphQLサーバー
    ○ 言語
    ■ Node.js
    ○ ライブラリ(主要なものだけ)
    ■ express
    ■ apollo-server-express
    ■ graphql-mqtt-subscriptions
    ● MQTTサーバー
    ○ Eclipse Mosquittoのテスト用ブローカー

    View Slide

  10. デバイス側の開発環境
    ● マイコン
    ○ M5StickC
    ● 言語
    ○ Arduino
    ● ライブラリ
    ○ PubSubClient
    ○ ArduinoJson

    View Slide

  11. GraphQLサーバーのためのスキーマ
    type SensorData {
    steps: Int! // 歩数
    time: String! // タイムスタンプ
    }
    type Subscription {
    subscribe2sensor(topic: String!): SensorData!
    }
    schema {
    subscription: Subscription
    }

    View Slide

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

    View Slide

  13. 動画

    View Slide

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

    View Slide