»2020/02/10【コラボレーション】mockmockからambientにデータを送ってなんちゃってIoTシステムを作ってみたこんにちは。私は普段「mockmock」というIoT開発者向けのサービスの運営・開発に携わっています。最近とある筋で「Ambient」という、これまたIoT開発者向けのサービスがあることを知り、半ば強引ではありますがコラボレーションさせてみました。AmbientとはAmbientとはIoTデータの可視化サービスです。Ambientが用意するエンドポイントにデータを送ると、送信したデータがAmbient上でグラフとして可視化されます。IoTシステムにおけるバックエンドを簡単に構築してくれるサービスです。mockmockとはmockmockとはIoT開発のテストを支援するサービスです。具体的にはmockと呼ばれる仮想的なデバイスを作成して、指定した周期、値、条件でデータを送信することができます。IoTシステムにおけるデバイス(仮想)を簡単に構築してくれるサービスです。コラボレーションここまで読んで、「この2つのサービスは相性が良さそう!」と感じた方はとても察しが良いです。2つのサービスを組み合わせるとこうなります。「ノンコーディング(何もコードを書かない)でなんちゃってIoTシステムが構築できる」ではありませんか!というわけで、さっそく作ってみることにしました。意気揚々と構築を初めて約5分。早々に問題が発生しました。送信先の認証はmockmockが直接第3者のサーバにデータを送信してしまうことを防ぐ目的で実施しています。Ambientはmockmockが実施する認証方式には未対応です。仕方がないので構成を見直しました。サーバレスなプロキシサーバを追加しています。SAMを使えばほんの数行のコーディングなので、許してください。Ambientの準備ユーザー登録を完了し、ログインすると「チャネル」というものを作ることができます。ここに表示されている「ライトキー」を使用してデータを送信します。チャネルを開くとグラフが表示されます。SAMを利用して2つのエンドポイントをデプロイします。/auth/{id}mockmockが認証のためにリクエストするエンドポイントです。URLのidをそのまま返します。/mockmock-ambientAmbientへデータを中継するエンドポイントです。AmbientはPythonとnode.jsのライブラリを公開しているのですが、実態は指定したJSONフォーマットでPOSTをしているだけなので、axiosを使ってPOSTしています。}};mockmockの準備プロジェクトの作成mockmockにログインしてプロジェクトを作成します。送信先の認証を行うためのエンドポイントやパスを指定します。送信データ次に送信するデータの値を準備します。2種類のデータを送ることにしました。d1はグラフバリュージェネレータを使用して、このように値を推移させます。d2はバケットバリュージェネレータを使用して、0〜3の値をランダムに送信します。個数が多い0が一番高確率となります。値の準備ができたらテンプレートを作成して、送信データのJSONフォーマットを定義します。mockの設定mockグループ、mockステータスを作成します。なんちゃってIoTシステム起動!作成したmockを起動します。Ambientでチャネルを確認します。mockmockで設定した通りのデータが送信されました。なんちゃってIoTシステムの完成です!FAQなんちゃってIoTシステムは誰に価値を提供するのか?良い質問です。いうユースケースが想定されます。我々mockmockチームのエンジニアにとって価値があります。いうユースケースが想定されます。いうユースケースも想定されます。IoTシステムを企画するエンジニアのロールを持たない人たちにも、価値を提供できそうです。いずれにせよ、時間の経過とともにグラフが描画されていく様子は、見る人に喜びや感動を与えてくれるはずです。なんちゃってIoTシステムを開発することに成功しました!最後になりましたが、Ambientを運営されている「アンビエントデーター株式会社」様、コラボレーションを快諾いただき本当にありがとうございました。Webエンジニアです。mockmockの開発・運用を担当しており、組込みエンジニア時代の経験を活かしてデバイスをプログラミングしたり、簡易的なIoTシステムを作ったりしています。主な開発言語はRuby、時々Go。Hiring!Fusicでは一緒に働く仲間を募集しています。詳しくは以下のページをご参照ください。Viewer」がとても便利(2020/02/07)【PHPerKaigi2020】PHPerトークンを探せ!(Fusic)(2020/02/05)。