新しい IBM Developer JP サイトへようこそ!サイトのデザインが一新され、旧 developerWorks のコンテンツも統合されました。 詳細はこちら

IoT を開始するための主要なコンセプトとスキル

第 4 次産業革命 (インダストリー 4.0) は、18 世紀の産業革命以降 4 回目となる、大々的な産業転換です。インダストリー 4.0 の前に起こった 3 回の産業革命のうち、1 回目は石炭と蒸気による革命、2 回目は電気と自動車による革命です。そして 3 回目の革命に続いて、モノのインターネット (IoT) と呼ばれるコンピューティング手法が急速に普及しています。インダストリー 4.0 の基盤となっている IoT では、インターネットに接続されたデバイスからなるネットワークを使用して、インターネット経由でデータを配信します。現在、医療、製造、自動車、小売、ビルディング・オートメーションをはじめ、さまざまな業界で IoT が使用されています。

IoT の価値は、ビッグデータをキャプチャーできるという点で認められています。ビッグデータは、意思決定を推進して業務効率を高めるために使用されているためです。業界の別を超えて IoT の導入が急速に広がりつつある中、生活様式と働き方を変革する IoT のスキルを持つ開発者の需要も急速に高まっています。

IoT がもたらしている好機を最大限活用しようと目指す開発者は、以下の広範囲な重要トピック・エリアでのスキルを育成する必要があります。

  • ハードウェア
  • ネットワーキング
  • アプリケーション設計
  • アプリケーション開発
  • セキュリティー
  • データと人工知能 (AI)

ハードウェア

IoT の中心となるのは、インターネットに接続されたデバイスです。こうしたデバイスには、他のデバイスに接続する (マシンツーマシン) デジタル・ファースト・デバイスと、センサーに回路を埋め込んで特定の宛先 (ダッシュボード、リモート・モニタリング・プラットフォーム、またはデータを受信するその他の中心点) にデータを送信するフィジカル・ファースト・デバイスがあります。これらのデバイスから、画像、テキスト、その他のパラメーターなどのデータが情報として送信されてきます。

センサーを備え、それぞれに特性を持つデバイスを扱うには、ハードウェア設計に関する知識がある程度必要になります。さらに、デバイス同士を相互に接続し、ネットワーク全体を構成するには、ネットワーク設計のスキルも必要です。ハードウェア設計でもネットワーク設計でも、エンジニアリング設計ソフトウェアを使用したり、他のソフトウェアを統合したりできます。そうすることで、設計目標を達成するようにデバイス、マシン、システムのすべてを連携させて、これらのコンポーネントからインテリジェントな情報を収集する、極めて高度なネットワークを構築することができます。

デバイスの設計には、プロセスとストレージ機能が含まれます。デバイスでマイクロコントローラーやさらに精巧なシステム・オン・チップ (SoC) を使用することもできます。この場合、CPU や I/O デバイスなどの他のコンポーネントを追加して、集積回路を結合できます。

埋め込み型 IoT デバイスは、対象とする設計目標の際立った特性に応じて設計する必要があります。例えば、以下の特性を考慮することになります。

  • 環境条件
  • 使用するセンサーのタイプ
  • 集約するデータの量
  • デバイスの設計で対応できる、所要電力、範囲、速度
  • デバイスの単価コストと総所有コスト

IoT デバイス設計をプロトタイプ化するには、Arduino やシングル・ボード・コンピューター (Raspberry Pi など) といったプラットフォームを使用することもできます。この場合、プロトタイプ化の後、カスタマイズしたプリント回路基板 (PCB) を開発できます。

これらのプラットフォームを使用してプロトタイプ化するには、回路の設計スキルとマイクロコントローラーのプログラミング・スキルだけでなく、ハードウェア通信プロトコルの知識も必要になります。具体的には、マイクロコントローラーとインターネットに接続されたセンサーおよびアクチュエーター間での通信を確立するために一般的に使用されている、シリアル、I2C、SPI などの通信プロトコルの知識です。多くの場合、埋め込み型 IoT デバイスのプログラムを開発するには C++ や C が使用されますが、IoT デバイスのプロトタイプ化には Python と JavaScript が使用される場合も多くなってきています。

ネットワーキング

接続性も IoT の重要な側面の 1 つです。デバイス同士を接続して互いに通信できるようにするとともに、クラウド内で実行されているアプリケーションやサービスと通知できるようにしなければなりません。IoT では膨大な数のデバイスが接続されることから、ネットワークの設計決定が大規模に影響を及ぼし兼ねません。したがって、IoT においてはネットワークの設計と管理のスキルが欠かせないものとなります。

例えば、メッシュ・ネットワークは極めてスケーラブルで堅牢なネットワーク・トポロジー設計であり、IoT 内でよく使用されています。けれども、メッシュ・ネットワークは分散型であることから、システムが複雑化します。さらに、ネットワーク内の各デバイスのレイテンシー要件と電力要件も厳しくなります。

ネットワークの設計スキルに加え、開発者にはネットワークの規格、プロトコル、テクノロジーに関する実用的な知識も必要です。これには、コンシューマー・アプリケーションで使用される Wi-Fi、低エネルギー Bluetooth、Zigbee、セルラー、 RFID テクノロジーと、LoRa などの LPWAN (Low-Power Wide-Area Network) テクノロジーが含まれます。LPWAN テクノロジーには、SigFox と NB-IoT (Narrow-Band IoT) も含まれます。この 2 つは、低コスト、低電力、低帯域幅のワイヤレス接続を使用可能にするため、大規模な産業用 IoT アプリケーションに適しています。

アプリケーションの設計と開発

Web アプリケーションとモバイル・アプリケーションでは、IoT デバイスを操作して、そこからデータを取り込むためのユーザー・インターフェースを用意します。一方、IoT デバイス自体にユーザー・インターフェース (UI) が備わっている場合もあります。IoT 分野においては、特にホーム・オートメーションで音声対応およびジェスチャー対応のインターフェースがよく使われるようになってきています。また、IoT データを物理世界に重ねて映し出す拡張現実インターフェースには、さまざまな心躍るような可能性があります。したがって、目下、最も注目を浴びるスキルの中には UI と UX の設計スキルが含まれます。

Web アプリケーションとモバイル・アプリケーションを開発するには、高水準言語を使用します。IoT アプリの場合は、Java、Swift、Node.js がとりわけよく使われています。ウェアラブルやスマート自動車を含め、IoT アプリケーションの多くは位置を認識するため、特に必要とされているのは GPS のプログラミング・スキルです。開発者として、迅速なプロトタイプ化に利用できる新しいフレームワークと開発者向けキット、ならびに IoT アプリケーションの作成、デプロイ、管理、運用の自動化に役立つインフラストラクチャーとツールが用意されている IoT プラットフォームについて把握してください。

セキュリティー

IoT について語るときに必ず最重要視されるのは、サイバーセキュリティーです。IoT デバイスはセキュリティー侵害に対し、かなり脆弱です。攻撃を受けたと報告している企業は、かなりの数に上ります。攻撃を受けたとしても、それを認識していない企業も数多くあるでしょう。

運用テクノロジー (IoT デバイスとそのネットワーク) は、大きなリスクにさらされます。IT 部門がこうしたリスクに通常のサイバーセキュリティー対策の組み合わせで対処していることは珍しくありませんが、それでは十分とは言えないでしょう。IoT を使用する組織は、組織内のネットワーク・ポリシーとは別に、運用テクノロジーを対象とした明確なポリシーを使用する必要があります。このポリシーには、演習、インシデント対応、災害復旧計画、そしてランサムウェア攻撃に固有のポリシーが含まれていなければなりません。

セキュリティーは結果論として追加するのではなく、システム設計のあらゆる段階で組み込む必要があります。セキュリティーに密接に関連する極めて重要な問題としては、データ倫理、プライバシー、法的責任が挙げられます。

IoT セキュリティーについては、少なくとも以下の点を考慮してください。

  • エンドポイントに対するアクセス
  • 必要に応じたデータ暗号化
  • 適切な認証

毎日、数百万台もの新しいデバイスが IoT 環境に参加することから、ゲートウェイに対する攻撃の件数が増加しています。分散型サービス拒否攻撃 (DDoS) や、他の厄介で大きな損害を与える攻撃を開始するために IoT デバイスが悪用された事例はいくつもあります。

IoT セキュリティーのガイドラインとしては、米国連邦情報・技術局 (NIST) の Framework for Improving Critical Infrastructure Cybersecurity をお勧めします。

IoT はかなりのリスクにさらされるため、この分野においてはセキュリティー・エンジニアリングのスキルが高く評価されます。セキュリティー・エンジニアリングのスキルには、評価、倫理的ハッキング、データ保全性を確保するための暗号化、ネットワーク・アーキテクチャーとアプリケーションのセキュリティー保護に加え、イベント・モニタリング、アクティビティー・ロギング、脅威情報の把握が含まれます。

データと AI

今や、人工知能 (AI) は IoT ネットワークの本質的な部分になっています。その要因は、データが急増したこと、こうした膨大なデータに対し、より効果的で調整されたアルゴリズムを適用できるようになったこと、そしてデバイスの電源能力とストレージ能力が増強したことにあります。

インテリジェントなビッグデータ分析では、コグニティブ・コンピューティング手法を適用する必要があります。これは、データ・マイニング、モデリング、統計、機械学習、および AI から派生した手法です。コグニティブ・コンピューティング手法をセンサーのデータ・ストリームにリアルタイムで適用すれば、予測分析を行ったり、着信データに応じて自律的な意思決定を行ったりできます。また、履歴データに適用して、データに潜むパターンや異常を識別することもできます。

多くの IoT デバイスはレイテンシーを生じさせたり、時間的制約のあるデータを生成したりするため、データをフィルタリングして関連性のないものを破棄する必要があります。IoT 開発者がスキルを磨かなければならない、データ・アナリティクスに重要となるテクノロジーとプラットフォームとしては、Hadoop、Spark、NoSQL データベースが挙げられます。

現役の IoT 開発者およびその志望者は、機械学習と AI のスキルをさらに磨く必要が出てくるでしょう。

IoT ソリューションを開発する準備はできていますか?

IoT アプリケーションの開発に使用されているテクノロジーは、急速に進化しています。開発者はさまざまなスキル・セットを磨き、新しいプロセス、プラットフォーム、ツールに柔軟かつ前向きに順応できるよう、態勢を整える必要があります。

IoT 開発を開始する際は、IoT 初級編ラーニング・パスの記事とチュートリアルを活用してください。