Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

mockmockのSORACOM連携機能を試してみた

f:id:acro-engineer:20190701141735p:plain:w550

こんにちは、IoTデータ分析プラットフォーム「Torrentio」開発者のmiuraです。

2019年7月2日にリリースされたばかりのmockmockのSORACOM連携機能について試してみましたのでご紹介します。

■mockmock SORACOM連携機能とは

https://mock-mock.com/ja/

mockmockは、クラウド上に仮想デバイスを作成し、開発中のサーバーに疑似データを届けられるサービスです。

そのmockmockのデータ送信方法に、今回新たにSORACOMとの連携が出来るようになりました。
これにより、実デバイス(実環境)/仮想デバイス(mockmock環境)のどちらでもSORACOMを通じてデータを送信することになるため、ユーザー環境にそれぞれの環境構成を用意する必要がなくなります。

f:id:acro-engineer:20190701135939p:plain:w600

SORACOMのサービスからデータを受け取れるか確認するには実際にデバイスを用意する必要がありました。
私も自社サービスの開発過程で検証する際に、SORACOM SIMを挿した実機を用意して試験を行なっていましたが、試験の度に実機を用意するのが面倒だと思っていました。
しかし、この新機能を使えばmockmockで生成した疑似データを使って確認することが出来ます。

では、さっそくmockmockの新機能を試していきましょう。

1. 試してみる前に

今回はmockmockの新機能SORACOM連携機能とIoTデータ分析プラットフォーム「Torrentio」との連携を行います。

https://www.site.torrentio.tech/torrentio/

Torrentioとは弊社(アクロクエストテクノロジー株式会社)が開発しているサービスです。
SORACOM Beamで利用できるREST-APIhttps)や、SORACOM Funnel Adapterに対応しており、デバイスからのデータを収集・分析することができるサービスです。
今回はデバイスから直接ではなく、mockmockからSORACOM経由でTorrentioにデータを送ることを試してみます。

2. mockmockの環境を作成する

2-1. SORACOMタイプのプロジェクトを作成する

プロジェクト一覧タブからプロジェクト作成ボタンを押して新規作成します。

f:id:acro-engineer:20190628173705j:plain:w500

2-2. グラフバリュージェネレーターを作成する

サイドメニューの「グラフ」の+ボタンから新規作成を行います。
グラフバリュージェネレーター名を「temperature」と登録し、以下の設定を入力して更新します。

f:id:acro-engineer:20190628171613p:plain:w500

2-3. データテンプレートを作成する

サイドメニューの「データテンプレート」の+ボタンから新規作成を行います。
JSON形式で送信データの形を登録すると、パースされてテーブル形式で表示されます。
また、キーごとに編集が出来るので、生成タイプを変更します。

f:id:acro-engineer:20190628171725p:plain:w500

2-4. mockを作成する

まず、サイドメニューの「mockグループ」の+ボタンから新規作成を行います。

f:id:acro-engineer:20190628172509p:plain:w500

次に、新規作成されたmockグループのmockステータスタブに移動し、mockステータスを新規作成します。

f:id:acro-engineer:20190628172529p:plain:w500

最後に、mockグループのmock管理タブに移動し、mock一覧にあるmock作成ボタンを押して新規作成します。
その際、mockごとにidを割り当てられるので、12345など適当な値を入力し、登録してください。

3. SORACOM連携の準備をする

3-1. soracom-cliをインストールする

mockmockで自動で生成されるsoracomデバイスグループに設定を行うためにsoracom-cliを準備します。
soracom-cliのGitHubリポジトリから「soracom_0.4.4_windows_amd64.zip」をダウンロードします。
ダウンロードしたzipファイルを解凍し、「soracom.exe」を適当なフォルダに配置してください。
(必要であれば、PATHを通して実行できるようにしてください)

3-2. soracom cliのprofileを設定する

プロジェクト設定画面にてSORACOM認証キー一覧の新規作成ボタンを押して、SORACOM認証キーID(AuthKeyId)とSORACOM認証キーシークレット(AuthKey)を取得します。

f:id:acro-engineer:20190628180409p:plain:w500

以下のコマンドを実行してAuthKeyIdとAuthKeyを入力し、soracom-cliのprofileを設定します。

$ soracom configure --profile mockmock
--- SORACOM CLI セットアップ ---
/Users/yourname/.soracom ディレクトリがなければ作成し、そこにファイル 'mockmock.json' を作成します。

カバレッジタイプを選択してください。

1. Global
2. Japan

選択してください (1-2) > 2


認証方法を選択してください。

1. AuthKeyId と AuthKey を入力する(推奨)
2. オペレーターのメールアドレスとパスワードを入力する
3. SAM ユーザーの認証情報を入力する(オペレーターID、ユーザー名、パスワード)

選択してください (1-3) > 1
authKeyId: <JSONファイルに書かれたAuthKeyIdを入力する>
authKey: <JSONファイルに書かれたAuthKeyを入力する> ← 入力内容は非表示となります。


以上でSORACOMと連携するための下準備は完了です。
それでは実際にmockmockと今回対応されたSORACOMのサービス「Beam」と「Funnel」との連携、おとびTorrentioへのデータ送信を行っていきます。

4. SORACOM Beamと連携する

4-1. REST APIのエンドポイントを作成する

TorrentioにてデータをREST APIで受け付けられるようにエンドポイントを作成します。
エンドポイント一覧画面の新規作成ボタンを押し、各項目を選択して作成します。
その後、作成したエンドポイントの更新画面に行き、以下の値をメモしておきます。

  • エンドポイント
  • APIキー

f:id:acro-engineer:20190628182310p:plain:w500

4-2. サービスを作成する

Torrentioにてデータを格納する場所である「サービス」を作成します。
サービス一覧画面の新規作成ボタンを押し、サービス名とエンドポイントを選択して作成します。

f:id:acro-engineer:20190628182328j:plain:w500

4-3. soracomデバイスグループにSORACOM Beamを設定する

SORACOM Beamの設定となるbeam.jsonを準備します。

[
  {
    "key": "inventory://beam.soracom.io",
    "value": {
      "enabled": true,
      "name": "Torrentio",
      "addEquipmentHeader": false,
      "addSignature": false,
      "addSubscriberHeader": false,
      "customHeaders": {
        "x-api-key": {
          "action": "append",
          "headerKey": "x-api-key",
          "headerValue": "<APIキー>"
        }
      },
      "skipStatusCode": false,
      "useClientCert": false,
      "useClientCredentials": false,
      "addDeviceIdHeader": false,
      "destination": "<エンドポイント>"
    }
  }
]

mockmockで生成されたsoracomデバイスグループに対して、以下のコマンドを実行します。

$ soracom groups put-config  --group-id <デバイスグループID> --namespace SoracomBeam --body @beam.json --profile mockmock

4-4. テスト送信をしてみる

mockステータス画面にてテスト送信を実行します。
レスポンスコードが200という結果になり、データをTorrentioへ送信することができました。

f:id:acro-engineer:20190628191414j:plain:w500

Torrentioのサービスコンソールにてデータが来ていることも確認できます。

f:id:acro-engineer:20190628190915j:plain:w500

5. Funnelと連携する

5-1. SORACOM Funnel対応のエンドポイントを作成する

SORACOM Funnelと連携できるTorrentioのエンドポイントを作成します。
エンドポイント一覧画面の新規作成ボタンを押し、種類に「SORACOM Funnel」を選択して作成します。
その後、作成したエンドポイントの編集画面に行き、以下の値をメモしておく。

  • テナントID
  • エンドポイントID
  • APIキー

f:id:acro-engineer:20190628183514p:plain:w500

5-2. サービスに紐づくエンドポイントを変更する

「4-2. サービスを作成する」で作成したサービスのエンドポイントを変更します。

f:id:acro-engineer:20190628185457p:plain:w500

5-3. soracomデバイスグループにSORACOM Funnelを設定する

SORACOM Funnelで使用する認証情報をSORACOMに登録するためにcredential.jsonを準備します。

{
  "type": "api-token-credentials",
  "description": "for_mockmock",
  "credentials": {
    "token": "<APIキー>"
  }
}

mockmockのプロジェクト設定のSORACOM 認証情報ストアにてSORACOM 認証情報IDを新規作成する。

f:id:acro-engineer:20190628184513p:plain:w500

以下のコマンドを実行して認証情報を登録します。

$ soracom credentials update --credentials-id <SORACOM 認証情報ID> --body @credential.json --profile mockmock

SORACOM Funnelの設定となるfunnel.jsonを準備します。

[
    {
      "key": "contentType",
      "value": "json"
    },
    {
      "key": "credentialsId",
      "value": "<SORACOM 認証情報ID>"
    },
    {
      "key": "destination",
      "value": {
        "provider": "acroquest",
        "resourceUrl": "torrentio",
        "service": "torrentio",
        "tenantId": "<テナントID>",
        "endpointId": "<エンドポイントID>"
      }
    },
    {
      "key": "enabled",
      "value": true
    }
  ]

mockmockで生成されたsoracomデバイスグループに対して、以下のコマンドを実行する。

$ soracom groups put-config  --group-id <デバイスグループID> --namespace SoracomFunnel --body @funnel.json --profile mockmock

5-4. テスト送信をしてみる

mockステータス画面にてテスト送信を実行します。
SORACOM Funnelを経由してのTorrentioへのデータ送信が出来ることが確認できました。

f:id:acro-engineer:20190628192307p:plain:w500

5-5. mock起動

mock管理画面のmock一覧にある作成したmockの操作メニューから起動を選択します。
mockmockで生成されたデータが定期的にTorrentioに蓄積されていきました!

f:id:acro-engineer:20190628193324p:plain:w500

まとめ

SORACOMのサービスと連携させた際に、実際のデバイスを用意してデータを送信する必要がありました。
しかし今回のmockmockのSORACOM連携により、実際のデバイスがなくともSORACOMのサービスを介したデータ送信を試すことが出来るようになります。
また、実際のデバイスを使う際には切り替えるだけでデータを送信することが出来るので、適用が楽になります。
SORACOMのサービスとの連携がぐんとやりやすくなった新機能でした。

Acroquest Technologyでは、キャリア採用を行っています。

  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
モノリシックなアプリケーションをマイクロサービス化したいエンジニア募集! - Acroquest Technology株式会社のWeb エンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com