
【IoTって…何の略?】から始まった!IotPFのAPIテストついて
自己紹介
こんにちは、割と最近まで“IoT“の事を「Information of Technology」= [情報技術]の略だと勘違いして、ここ数年生きてきたMagaraです。
近年、IoT/DX/自動運転/AIなどのトレンドワードとかなり聞く事が増え、IoTに関する業務をする機会があった為簡単に紹介します。イラストはほぼエクセルで頑張って作ってみました。
初めに
まず、IoT【アイオーティー】の正式名称は「Internet of Thing」です。訳すると「モノのインターネット」という意味になり、『モノ(様々な端末)をインターネットに繋げ新たな
付加価値を生み、新しいサービスが期待されています。』という事を知っている人が多いと思いますが、どういった形で成り立っているかテストツールや解析ツールを絡めて説明していきます。
◇説明するツールは以下です。
テストツール: Postman
⇒APIの試験でよく使われるツールです。
(シナリオを作成し、簡易自動化も可能)
使い方も非常に簡易的なので、簡単に活用可能です。

解析ツール:Wireshark
⇒パケット(通信のログ)を確認できるツールです。
こちらは通信プロトコルの知識があると分かりやすいです。

IoTPlatformとは

上記の例で説明すると各地域の自販機にIoTデバイスを設置した場合に各自販機の販売状況を日々IoTPFに連携する事で、販売機メーカーXXの担当者が数十万台近い自販機の売上データや在庫数を一元管理する事が出来ます。それにより、売上データを基にマーケティング戦略を練る事や、補充配達員へ優先的に補充すべき自動販売機へ自動連携を行う事が出来るなど、補充員の人件費を削減、季節や気温など地域によった売上データなどのビックデータを活用する事が可能となります。
モノとモノ(人や機械)がインターネットで繋がる例は上の画像のように様々なケースがあります。
例)
・毎月など定期的に点検などが必要な機械(火災探知機の点検やガスメーターの点検)
・遠方の地の人が立ち入りくい地域に設置された機械(危険物の点検等)
・自宅にあるスマート家電(冷蔵庫、洗濯機などの故障状況の点検)
などなど、、、あげるときりがないぐらいあります。
自分の身の回りに存在するモノでいうと、Amazon社が出していた機械のボタンを一つで押すだけで届く製品や前社では男性が多いので男性用個室が朝などは混雑していた為、オフィス内の男性トイレの個室使用状況が分かるサイトなど振り返ると多くありました。
それらの大半はIoTPlatformという「IoTサービスの脳」のような言える存在によって成り立っています。Amazon社のAWSやMicrosoft社のAzureが業界シェアの50%以上の為有名だと思います。


以下の図は総務省の情報通信白書令和2年版のプラットフォームレイヤーにおけるトレンドの資料の一部です。
総務省トップ > 政策 > 白書 > 令和2年版 > プラットフォームレイヤーにおけるトレンド

2017年(5年前)に比べて、2023年後は約7倍に市場規模が成長すると言われています。今まさに増加中な最中です。
また、IoTデバイスは、以下の特徴があります。
①24時間/365日常接続されている
②PC等に比べ低機能でシンプルな設計
➂管理が不十分でソフトウェア・アップデートもされていない事が多くなる。
その為、正常な連続稼働が常時出来るかどうか、セキュリティ対策が出来ているかどうか異常やアップデートを行う場合にFirmwareアップデート可能かどうかなどが懸念事項となると思います。
APIテストとは

この先で詳細に説明していますが、CURLでAPIを実施し、ユーザーがIoTPFに対してリクエストを発行し、デバイス側からIotPFを介してレスポンスを受け取り、自販機のデータを収集します。その際に、レスポンスやリクエストの速度やコードやエラーメッセージ等を事前に定義されたものかどうか確認する試験です。
仮想Coapデバイス(Leshan)を起動してみる

Eclipse Leshanはクライントとサーバーの両方の役割を果たしJavaで実行します。LwMのアプリケーション層として CoAPが使われています。
(http://projects.eclipse.org/projects/iot.leshan)プログラム言語はJavaでClient +とServerが出来ます。(以下、Javaが導入されている前提で記載していきます。
#導入する方は「#Java 入れ方」とかでググって下さい。)
・クライアントをDL(直リンクでダウンロード出来ます。)
https://ci.eclipse.org/leshan/job/leshan/lastSuccessfulBuild/artifact/leshan-client-demo.jar
・サーバーをDL(直リンクでダウンロード出来ます。)
https://ci.eclipse.org/leshan/job/leshan/lastSuccessfulBuild/artifact/leshan-server-demo.jar
それぞれ以下のようにコマンドプロンプトで入力し、サーバー/クライアント起動します。


クライアントとサーバーが上がったら、仮想PFを立ち上げます。
URL:http://localhost:8080/#/clients/<PC名>
立ち上げると以下のようなサイトが表示されます。

これで準備が完了となります。
IotPFと仮想Coapデバイスを通信してみる
◆READ実行

イメージは上記画像の形でREADオペレーションを使用した場合はデバイス(自販機A)のデータを指定し、そのデータを取得する事が可能です。
例)設置IDや地域を取得する
READ(/3/0/2)を実行する ⇒デバイスのシリアルナンバーを取得(COK_T_23_6454)
READ(/3/0/11)を実行する ⇒デバイスのエラーコード取得(0)
※0はエラーなし

以下では、Wiresharkを用いてトラックを見たPCAPファイルの一部の画像です。

詳しくインスタンスの中身を見てみると以下の表のように整理できます。
独自インスタンスなどを作成すれば、ユーザーライクなオブジェクトを設置する事も可能です。

◆WRITE実行

続いて時刻のWRITEをしてみます。
まず、Current TimeのWRITEをクリックし、「202010-10T10:10:10+09:00」を入力します。

先程と同様にWiresharkを起動し、パケットキャプチャを開始します。
以下がパケットキャプチャの結果です。
レスポンス側は/3/0/13の現在時刻を書き込みましたので、
「202010-10T10:10:10+09:00」がセットされたのが確認出来ます。

また、リクエスト側は/3/0/13にWRITEしたことが確認可能です。

◆OBSERVE実行

まず、OBSERVEを押してCurrent Timeを監視します。

Wiresharkを起動し、パケットキャプチャを開始します。
以下がパケットキャプチャの結果です。
上の画像がパケットの全部の画像で、下2枚の左側がリクエスト、右側がレスポンスで送った時刻が表示されたことを確認できます。時刻は常時変化するので、IotPFの設定やデバイスの設定によって、常時Notifyを上げる事や1日1回Notifyを上げるようにするなどの様々な使い方が可能となります。

補足①)APIのテストに活用する事ができる ”POSTMAN”

Postmanは、Chromeの拡張機能ツールで、サーバーサイドでAPIを作成した時に、リクエストに対して想定通りのレスポンスを返却できているかを確認したい場合に、クライアント側のプログラムを作らずに確認することができます。
★Postmanをインストール
Chromeメニューから、その他のツール>拡張機能と選択し、Chromeウェブストアで「postman」と検索します。検索結果に表示されたPostmanの「Chromeに追加」をクリックすると、インストールが完了です。※インストールは非常に簡単です。
★Postを行う場合

① Postメソッドを選択
② Body/URL等を入力
③ Postボタンを実行する
これだけでGUI上でポチポチと入力すれば簡単に実行可能です。
送信誤は、下の個所にレスポンスコード、レスポンス内容等が記載されます。参考にレスポンスコードのざっくりとしたステータスコードを記載しておきます。

★その他よく使われる機能
■Collection機能
Runner機能を併用し、コレクションを実行すると簡易自動化試験が実施可能です。

■Collection 変数
内部で環境変数やコレクションの変数などを定義する事で、テスト実行時に不変な部分を一括で入力しておくことでメンテナンス性が向上します。

■Test Script/Test機能
簡易的なJavaが出来れば、ちょっとした処理を作成する事が可能です。
また、Test機能を使用すればRunner実行時にレスポンスコードが200かどうかや対象の文字列が返却されたかなどを自動試験時に判定する事も可能です。

補足②)ネットワークトラフィックを手軽に解析できる ”Wireshark”

多くのプロトコルに対応した高機能なパケット取得・プロトコル解析ソフト。ネットワークに流れるパケット情報をリアルタイムで調査できる。有線・無線LANや“InfiniBand”などさまざまなインターフェイスに対応している。

◆使用方法
1)WIRESHARKを開き、通信を監視する内容を選択してください。
2)選択した通信内容のパケットキャプチャが始まり監視出来ます。




おわりに
今回大手通信会社のAPIテスト案件に従事しており、1年経過した為、自分が学んだ事や教えて貰った事などを自分のBacklogsのような形で記載しました。「黒板のイラストをEXCELで頑張って作ったな」とか思ったら「@いいね」押していただけると、次回の案件終了時にもう一回書こうと思います。
_________________________________
執筆者プロフィール:Magara
新卒で独立系SIerにて自動運転関連に2年間従事した後、SHIFTへ入社。
大手通信会社のIoT案件に従事中。
最近は体重が100Kg付近に迫り、産業医面談を受け危機感を感じてダイエットを開始し、来年後の健康診断で正常な数値を目指し運動を始めました。
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/