事業内容
- DX推進/IoT開発事業
- AI/ROBOTICS開発事業
従来は人間が行っていた作業の自動化や効率化を目的として、IoTシステムを構築する機会が増えてきました。当記事をご覧の方のなかには、IoTシステムを構築する際に通信プロトコルの選定を検討している方もいるでしょう。
そこで今回は、「IoTに適した通信プロトコルはどのようなもので、どう選べばいいのか」について解説します。IoTシステムを構築する際に適した通信プロトコルが分からず悩んでいる方は、参考にしていただけたらと思います。
データの通信を行う際には、通信に関わるデバイスやクラウドなどの間で「取り決め」をしておく必要があります。その取り決めのことを「通信プロトコル」と呼びます。
通信プロトコルはIETF(インターネット技術特別調査委員会)によって定められており、技術仕様は、 RFC(Request For Comments)という名前で文書化され、一般に公開されています。通信プロトコルが決められていることで、通信を円滑に行うことが可能です。
通信プロトコルには、普段インターネット検索で用いられているようなHTTP(S)などさまざまなものがありますが、IoTシステムを構築する際には、それぞれの用途に合った通信プロトコルの選択が必要です。
IoTシステムの構築に適した通信プロトコルとして、代表的なものには以下の3つがあります。
それぞれの通信プロトコルについて、特徴を解説します。
HTTP(S)は、多くの人にとって一番身近な通信プロトコルで、Webサイト閲覧時などに用いられています。HTTPとHTTPSの違いは通信が暗号化されているかどうかの違いで、HTTPSは暗号化されていることを示しています。
本来はハイパーテキスト送信のために開発された通信プロトコルですが、汎用性が高いため、テキスト以外にも画像や音声、動画などさまざまなデータの送受信が可能です。大量のデータをやり取りできることが特徴で、IoTシステムを構築する際の通信プロトコルとしても採用できます。
通信プロトコルには同期プロトコルと非同期プロトコルがあり、HTTP(S)は同期プロトコルです。リクエストした順番通りにレスポンスを返す(リクエストとレスポンスの順番が同期されている)ため、通信のタイミングをIoTシステムに任せることができません。
IoTシステムでは、リアルタイム性が重視される場合があり、そのような場合には処理されたものから順に送受信するような非同期プロトコルが求められることが多いです。HTTP(S)は同期プロトコルであるため、IoTシステムへの採用は、リアルタイム性が重視されない大容量のデータ通信などに用途が限られています。
MQTT(S)はアメリカのIT大手であるIBMが開発した通信プロトコルで、IoTデバイスと処理を行うクラウドの間にMQTTブローカという中継地点を設けて通信環境を構築します。
通信に制限があるデバイスや低ネットワーク帯域用に設計された通信プロトコルのため、少量のデータ送受信に特化しており、HTTP(S)のように大量のデータは送受信できませんし、汎用性も高くありません。
一方で、高速な通信が可能であり、非同期通信を採用しているため複数の処理を並行して行いながらデータの送受信を行うことができ、リアルタイム性に優れています。また、デバイス側にトラブルが発生した場合、あらかじめデバイスがMQTTブローカに登録した「遺言(Will)」とよばれるメッセージを、MQTTブローカがクラウドに送信します。
クラウドはこのメッセージを受信することで、デバイスにトラブルが発生していることを速やかに把握できることが、MQTT(S)のメリットです。
IoTシステムを構築する際には、通信制約が厳しい制約が採用されたり、待ち時間が長かったりする場合があるため、高速でリアルタイム性に優れたMQTT(S)が用いられる機会は多くあります。
CoAPは軽量なM2M(Machine to Machine)プロトコルとして設計されており、マイクロコントローラや制限付きネットワークなどの制約付きデバイスでも採用できます。
HTTP(S)と似たような仕組みを持っていますが、より軽量なフォーマットであるUser Datagram Protocol(UDP)上で機能する通信プロトコルとして開発されています。UDPは、アプリケーション同士が最小限の仕組みでデータを送受信できるように考案されているため、それを用いたCoAPはリアルタイム性が重要になるIoTシステムで採用されることが多いです。
一方で、CoAPは外部からの攻撃に弱く、セキュリティを高めようとするとCoAPのメリットである軽量な通信プロトコルとしての特徴が失われてしまいます。多くのCoAP搭載機器はセキュリティを高めないモードで使用されているため、外部からの攻撃には注意が必要です。
CoAPを使用する場合には、インターネットに直接つながらない、閉域網で使用するのがよいでしょう。
IoTシステム構築に適した通信プロトコルを選ぶためには、どのようなポイントを押さえておけばいいのでしょうか?代表的な以下の3つのポイントについて、解説します。
IoTシステムの中には、リアルタイムでデータを把握し、速やかな判断が必要な場合が多くあります。そのようなシステムを構築する場合には、遅延なく次々と処理を行い送受信できる通信プロトコルが必要です。
同期通信が行われるシステムでは、通信する順番が規定されているため、どこかで待ち時間が発生すると他の通信を行うことができません。そこで、リアルタイム性の確保が必要な場合には、高速通信が可能な非同期の通信プロトコルを用いる必要があります。
IoTシステムにおいて、判断を適切に行うためには、データを確実に送受信する必要があります。そこで、データの送受信に失敗した場合に、再度送受信を行うような仕組みがあるかどうかは重要なポイントです。
仮にデータの再送受信ができなかったとしても、故障が発生しているかどうかを通信相手に通知できるようなシステムがあれば、判断を誤るリスクは低くなります。
通信プロトコルは、その種類ごとに一度に送受信できるデータ量に制限があるため、送信したいデータの内容によって対応可能な通信プロトコルを選択する必要があります。
例えば、テキストや数値データだけを送受信するのか、データ量の大きい画像や音声、動画などを送受信する必要があるのかによって、選定すべき通信プロトコルが異なります。
表1.通信プロトコルの特徴
項目 | HTTP(S) | MQTT(S) | CoAP |
同期/非同期 | 同期 | 非同期 | 非同期 |
再送受信 | × | ○ | × |
通信データ量 | 大(重い) | 小(軽い) | 小(軽い) |
今回はIoTシステムに用いられることが多い通信プロトコルとして、3種類紹介しました。通信プロトコルには、今回紹介したもの以外にもさまざまな種類があります。
また、通信プロトコルを選ぶ際のポイントについても、今回紹介したものは一部で、他にもさまざまな要素を検討してバランスを取る必要があります。
これらを考慮しながら、構築したいIoTシステムに適した通信プロトコルを選定するのは簡単ではなく、しっかりと吟味する必要があります。ASTINAはIoTシステム構築時の通信プロトコル選定について、ご相談を承りますので、お問い合わせください。