IoTとAPIの関係は?

ここ数年で盛り上がっているのがIoT(Internet Of Things)です。その領域においてAPIがどのように使われているか紹介します。

デバイスからネットワークへのアクセス

一般的に通信モジュールは値段が高いのですが、重機器や自動販売機のような価格が高いものにとっては通信モジュールの値段は問題になりませんので、そうしたデバイスからサーバにデータをアップロードする際にはAPIを使って行います。この場合、デバイスのID、ステータスをアップロードするのが一般的です。

デバイスが大量であったり、スマートフォン前提のシステム構成の場合、ゲートウェイになるデバイスへの通信にはWiFi/Bluetoothなどを使います。この場合はAPIを使っておらず、データを集積したゲートウェイからサーバへのデータアップロードに対してAPIを使います。

データの特性について

Webブラウザやサーバ間通信に使われていたAPIに比べて、IoTデバイスからのアクセスはよりデータ量が小さく、通信回数が多いという特性があります。数百から数万単位のデバイスを設置した場合、サーバへ定期的にアクセスするようにしていると単位時間(例えば1時間)ごとに瞬間的にアクセスが増えることになります。これはネットワークの遅延につながったり、サーバ負荷の問題になります。

そのためデバイスごとにデータをアップロードするタイミングを分けるのが一般的です。また、データのアップロードタイミングについても考慮が必要で、あまり頻繁にするとその分データ量が増えてしまいストレージを逼迫するようなことにつながります。

相互通信について

IoTで度々求められるのが相互通信です。その場合はMQTTやWebSocketといったプロトコルが採用するのが良いでしょう。ただし相互通信を可能にすると消費電力量が増えますので、常時電源につながれているのが前提になります。

ネットワークに3Gなどを使っている場合、相互通信が100%保証される訳ではないことにも注意が必要です。通信が切れた場合のフローについても検討しておく必要があるでしょう。

認証技術について

Webの世界ではSSLによる暗号化が当たり前になっていますが、ことIoTにおいてはデバイスが小型、超低消費電力が求められることもあってSSL/TLSのような計算処理をするのに向いていないことがあります。そのため、意図的にセキュアでない通信になっていることがあります。

そうした場合、ゲートウェイからサーバ間は暗号化して通信するようにしたり、SORACOMのように閉域網を使って安全にデータをアップロードする仕組みを利用するのが良いでしょう。

また、個々のIoTデバイスに対してOAuth2を使って認証といった操作は困難ですので、個々のデバイスをトークンベースで管理するのが一般的です。もちろん、これはIoTデバイスが消費電力を考慮せずに使えたり、CPUなども十分高速なものが使える環境では状況が異なります。


APIはインターネット技術の一つとしてあって当たり前なもの、融け込んだ技術と言えます。IoTにおいてもそれは変わらないでしょう。ただし、人が介さないケースもあり、その結果としてアクセス方法であったり、通信方式が特有なものとなっています。

スマートフォンアプリなどとはまた異なるAPIが求められる点を注意してください。

© NTT Communications Corporation All Rights Reserved.