IoTシステムの開発はなぜ難しい? AWSで解決するには?
目次
IoTシステムとは?
IoT(アイオーティ、Internet of Things)は、日本語では「モノのインターネット」と訳されます。家電やセンサー機器などの様々なデバイスをインターネットに接続するシステムや技術全般のことを指します。
一昔前までは、インターネットは自宅や会社にあるコンピューターやサーバー、スマートフォンなどから接続するものでしたが、通信技術やデジタル技術の発達に伴い、身近な様々な機器(デバイス)がインターネットに接続できるようになっています。
IoTという言葉が普及する以前にも、「M2M(Machine to Machine)」というモノ同士を接続する手法がありました。M2Mは機器同士が電波などで相互に接続し、情報をやりとりするだけでインターネットには接続しない形式である一方、IoTはインターネットに接続することが可能となっています。
インターネットにつながることで、機器同士の情報のやり取りはもちろんのこと、インターネットを通じた情報の集約や管理が可能になっており、データ分析や集約的な機器の制御など様々なことが可能となっています。世界的なITコンサル会社のGartnerにおけるレポート(https://www.imagazine.co.jp/gartner-hype-cycle2021/)でも、2018年時点でIoTはその後5~10年後にビジネスとして大きく飛躍していくことが予想されていました。
IoTがITの総合格闘技と言われる理由は?
IoTのシステムは非常にさまざまな技術領域から構成されるシステムであり、構築のためには多様な知識や技術が必要です。そのため、『ITの総合格闘技』と言われることがあります。なぜこのようなたとえを使われるのか、記載していきます。
ITシステムの領域とは
そもそもITシステムはIPAの高度情報試験の分野から考えると下記のような領域が存在します。
- ネットワーク
- データベース(データ分析)
- 組込みシステム
- セキュリティ
- アプリケーション
- 運用保守
- プロジェクトマネジメント
ITシステムは上記のような知識領域を組み合わせて1つのシステムを構築しています。例えば一般的なWebサイトであれば、『アプリケーション』『ネットワーク』『運用保守』『プロジェクトマネジメント』の知識領域が必要になります。
IoTはITのほぼすべての領域を網羅しないといけない
しかし、IoTにおいては、上記の知識領域をすべて活用してシステムを構築する必要があります。具体的には下記の通りです。
- ネットワーク…デバイス同士をつなぐ+デバイスとサーバー(クラウド)を繋ぐ
- データベース(データ分析)…センサーやデバイスから得られた大量の情報を蓄積し分析に活用する
- 組込みシステム…センサーなど、デバイスが求められている機能を充足するようにプログラムを構築する
- セキュリティ…ネットワークやデバイスがサイバー攻撃に遭わないように守る
- アプリケーション…デバイス上で動作するアプリケーションとサーバーやクラウド上で動作するアプリケーションが連動して価値を生み出すようなシステム全体を開発する必要がある
- 運用保守…構築したIoTシステム(デバイス、サーバー、クラウド上)が止まらずに稼働し続けるようにする
- プロジェクトマネジメント…IoTシステム開発が問題なく進むように管理を行う
ただし、上記の知識領域をすべて網羅することは非常に難しいことは想像に難くありません。IPAの高度資格をすべて取得するようなものであり、上記の知識領域を備えた人材を採用したり、育成したりすることは非常に困難であると言えます。
IoT開発はAWSなら素早く実現可能、スタイルズのAWSによるIoTシステム構築サービスはこちら→
IT分野とデバイス分野のシステム開発アプローチの違い
IoTのシステム開発が困難なのは、多様な技術領域が必要となるだけでなく、システム開発のアプローチも異なる、という点も理由の一つです。具体的にどのような理由なのか、見ていきましょう。
ステークホルダーの数の違い
先述の通り、IoTシステムを開発するためには様々な知識を持った人間が集まります。また、そのシステムを活用する現場も経営層やホワイトカラー層だけではなく、製造現場などのメンバーも参加することになり、通常のITシステム開発よりもプロジェクトの体制もメンバーの業務分野も大きくなります。
体制が大きくなると、会議の調整などのコミュニケーションコストが増大するだけでなく、認識の相違や連絡ミスが発生しやすくなります。また、本社のホワイトカラー層と製造現場ではプロジェクトの進め方に関する習慣も大きく異なります。これにより、IoTシステム開発におけるプロジェクトマネジメントは通常のITシステム構築と比較して難易度が向上します。
通常のITシステムとIoTシステム開発のプロセスの違い
通常のITシステムにおいては、開発対象のソフトウェアに対して実行先のOSやハードウェアがあらかじめ定まっていることが一般的です。また、ハードウェアは機能こそ分散することはあるものの、多種多様になることはほとんどありません。例えば一般的な3層Webアプリケーションにおいて、Webサーバーとアプリケーションサーバーといった機能の違いはあれども、Webサーバーとアプリケーションサーバーにおいて異なるOSで稼働する、といったケースは非常に少ないです。一方でIoTシステムにおいては、ソフトウェアとデバイス等のハードウェアの開発が同時並行的に進められることがほとんどです。
その多くはウオーターフォールモデルで構築され、基本設計や詳細設計を綿密に実施してから実装を行うことが多くなります。したがって、物理デバイスなどで欠陥が発見されるとアプリケーションも手戻りが発生するためスケジュールへの影響が大きくなります。また、OSやハードウェアも機能によって異なるケースが多いため、OSやハードウェア特有のバグを引いてしまった場合には調査の時間が長くなってしまう、という問題点もあります。
AWS IoTでIoT構築の困難さに立ち向かう
IoTシステムを一から構築することは非常に難しいですが、クラウドを活用することで、ある程度開発を楽に進めることが可能です。AWS(Amazon Web Services)においても、IoTに関するサービスが提供されており、IoTシステムの開発を簡略化し、工数を大幅に削減することが可能になっています。
トータルなサービス名はAWS IoTといい、複数のIoTデバイスを一元管理し、データの収集や分析、デバイスの管理・制御を行う機能が提供されています。これにより、利用者は複数のデバイスの管理が楽になるだけでなく、セキュリティの向上やAWSの各種サービスを組み合わせて活用することができるようになり、『データベース』『組み込みシステム』『セキュリティ』『アプリケーション』『ネットワーク』『運用保守』等に関する領域について、大幅な工数削減が見込めます。
例えば、セキュリティ面においてはAWSによるデバイスの認証・認可の管理を行うことで、外部からの不正な通信からIoTシステムを防御することが可能になっています。また、AWS IoTはAWSのその他のサービスとの連携も容易に可能ですので、AWSで提供されているストレージ、データベース、BIサービスなど多くのサービスを同時に使うことができ、IoTシステムにおけるバックエンド処理の構築も高速化できるようになります。
AWS IoTのサービス一覧
ここではAWS IoTで利用できるサービスについて簡単に解説します。AWS IoTは、AWSによるIoT関連の様々なサービスをひとまとめにした総称となっており、機能別に以下の3つに分類されます。
- 分析サービス
- コントロールサービス
- デバイスソフトウェア
それぞれ見ていきましょう。
https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/aws-iot-how-it-works.html より引用
IoT開発はAWSなら素早く実現可能、スタイルズのAWSによるIoTシステム構築サービスはこちら→
分析サービス
IoTにおける、『データベース(データ)』領域に関するサービスです。IoTデバイスから収集したデータを最大限に活用するための機能が提供されています。具体的なサービスとしては以下が挙げられます。
- AWS IoT Analytics…分析用プラットフォーム
- AWS IoT SiteWise…データの収集、整理を簡素化する
- AWS IoT Events…IoTデバイス上で発生した異変や不備の検出する
コントロールサービス
IoTにおける、『セキュリティ』『ネットワーク』領域に関するサービスです。IoTデバイス・クラウド間の通信や、IoTデバイス同士の通信をより簡単・安全に行うための機能が提供されています。具体的なサービスとしては以下が挙げられます。
- AWS IoT Core…IoTデバイスとクラウドのセキュアな通信を行う機能
- AWS IoT Things Graph…コーディング不要でIoTアプリケーションを構築
- AWS IoT Device Defender…セキュリティの向上機能を提供
- AWS IoT Device Management…複数デバイスとの接続を管理する機能
デバイスソフトウェア
IoTにおける、『組込みシステム』領域に関するサービスです。デバイスソフトウェアを容易に構築するための機能が提供されています。具体的なサービスとしては以下があります。
- AWS IoT Greengrass…デバイスソフトウェアを構築する機能
- FreeRTOS…OSの提供
- AWS IoT Device Tester…デバイスをテストするためのエミュレーター機能
- AWS IoT Device SDKs…システム開発のためのSDK
まとめ
IoTシステムは通常のシステム開発と比較して非常に難しい点が多々あります。一方で、クラウドをうまく活用することによって、システム開発における工数を大幅に削減することが可能になっています。ただし、様々な機能を組み合わせる必要性があるため、開発を進めるにあたっては不明な点も数多く出てくるかと思います。そのような場合には専業のベンダーと相談するのもいいでしょう。