IoT開発の流れとは?エンジニアに必要不可欠なスキルも紹介
インターネット全盛の現代において、感度の高いビジネスマンであればIoT(Internet of Things)に勝機を感じている方もいると思います。
しかし実際に自社でもIoTを開発して、自社製品に新たな価値を付与しようと思っても、専門的な知識がないと、何から始めれば良いかすらわからないものです。
この記事ではまずおさらいとして、IoTでできることを事例とともに解説しています。そのうえで、具体的な開発フロー、開発に必要な人材などについてまとめています。
この記事を読んで、IoT開発の第一歩を踏み出しましょう。
目次
IoTとはモノとインターネットを繋ぐこと
IoTとは、Internet of Thingsの略で、モノのインターネットと呼ばれています。モノとは、物体的な物だけでなく、機械や人間の行動、自然現象、生物の行動なども含みます。
それらのすべてのモノがインターネットに繋がることで、それぞれのモノから個別の情報を取得することができます。
その情報から、モノの状態を知れたり、離れたモノを操作できたりします。
2020年までには約500億個のモノがインターネットに接続されると言われています。
参考:IoTとは?|IoT:Internet of Things(モノのインターネット)の意味、読み方、事例 – モノワイヤレス
IoTを取り入れて利益を生み出した5つの企業事例
すでにIoTを取り入れて成功している事例があります。どのような事例があるのかご紹介します。
スマホをアクセスコントロールツールに変え1万を超える導入を実現した株式会社アートの事例
株式会社アートでは、スマホとIoT、クラウドを活用して、カギの受け渡しをクラウド上で行う電子錠を実現しました。スマホやICカードを利用して、扉に取り付けた電子錠の開け閉めを行うことができるようになるシステムです。
扉に取り付けるのは鍵穴のないタイプの錠になります。クラウドを活用して電子錠の管理を行うため、月額の使用料は必要になります。
しかし、初期導入費用は不要になっている価格体型なので、取り入れやすい仕組みといえるでしょう。
サービス開始から、1万を超える扉やロックに株式会社アートのALLIGATEが導入されています。
参考:スマートIoT推進フォーラム :: スマートフォンをモノや場所のアクセスコントロールツールに変える株式会社アートのIoTプラットフォーム「ALLIGATE」
自動で自宅の温度管理をして電気代やガス代を20%節約したNest Themostat
Nest Themostatは、自宅の温度管理をしてくれるIoTデバイスで、住人の好みの季節や変化に応じて最適な温度に調整してくれるサービスです。
さらに、搭載されている独自の人工知能が起床時間や帰宅時間を学習してくれるので、生活リズムに合わせた温度管理をすることが可能になっています。
自宅に人がいないときはエアコンなどをオフにするなど、省エネへの効果が期待でき、電気代やガス代を約20%節約することも可能になります。
参考:日本と世界のIoT活用事例39選~スマート家電から産業事例まで~ | XERA
工場に一括管理システム・センサーを導入し製品品質と生産性を向上させたFUJITSU
製造業の現場でもIoTのシステムは重宝されています。FUJITSUは各地の向上のデータをネットで繋いで可視化することで、一括管理しやすくしました。
各種センサーから情報を受け取り、解析した結果をモニターで確認することができるようになるシステムです。
様々な問題がリアルタイムで一括管理でき、さらに可視化できるので、生産性向上や品質向上を可能にしてくれます。
参考:[IoTの活用事例26選] 身近なモノから都市での活用まで幅広く紹介!
生産設備をIoT化し、約25%の設備稼働状況を向上させた株式会社三友製作所
株式会社三友製作所では、工場に設置された生産設備をネットワークに接続し、稼働状況を可視化できる仕組みを構築しました。
これまで可視化できなかった現場の問題点を一目瞭然にすることができ、問題点解消のためにスピーディに動くことができるようになっています。
ネットワークに接続して可視化することで、遠隔でも現場の状況を把握することが可能になります。そのため、業務の振り分けなどがスムーズに行えるなど、約25%も稼働状況が向上しています。
参考:IoTは製造業の要!スマート工場実現のための基礎のキソ – KUMICO
鶏舎の環境をスマホで確認できるシステムを開発し、5分の1に短縮させたNECとマルイ農協
NECとマルイ農協は、鶏舎の環境をスマホで確認できる「斃死鶏(へいしけい)発見システム」を共同開発しました。ケージで死んでしまった鶏を画像判別技術で効率的に検知する装置を設置し、業務の効率化を図っています。
この装置を導入することで、斃死鶏(ケージ内で死んだ鶏)を検知する時間を、従来の5分の1まで短縮できるようになりました。
人手不足や安全性の確保という問題点の改善に効果的に働きかけています。
参考:マルイ農協とNEC、AIを活用した斃死鶏発見システムを共同開発
IoTを開発する一連のフロー
IoT開発にはどのような手順で進めていけばよいのでしょうか。システム開発業者に依頼するにしても、要望を確実に実現するためには、開発の流れを知っておくことが大切です。順を追ってみていきましょう。
参考:システム開発の工程(流れ)とは?覚えておきたい略語も解説|発注成功のための知識が身に付く【発注ラウンジ】
1.要件定義
まずは、新たに開発するシステムにどのような要素を盛り込みたいのかを明確にしましょう。
具体的にはIoTシステムの性能や機能、運用方法、予算、人員、期間について決めていきます。
システム開発を行う目的やターゲットなどを明確化し、システム開発業者としっかりと認識をすり合わせておくことが、違った完成システムにならないための重要なポイントといえます。
2.外部設計
要件定義が固まったら、外部設計を行います。ここでは、システムの大枠を決めていきます。
具体的には、システムを使用するユーザーの視点からシステムに必要な機能を洗い出すという作業を行います。
ここでの決定事項は、ユーザーの使い勝手に大きな影響を与えるので、ユーザーが使いやすいシステムを開発するためにも重要なプロセスです。
3.内部設計
システムの大枠が決まったら、具体的な内部設計を行います。システムの詳細を決めていくため、ユーザー側の視点よりも、開発側の視点で内容を詰めていくことになります。
具体的には、コードやプログラムの設計などを行っていきます。
4.プログラミング
内部設計の内容を基に、プログラミング用語を用いてシステムを構築していくステップになります。
分かりにくい場合は家を建てる工程に置き換えて考えてみましょう。内部設計では家の間取り図を作成し、プログラミングでは実際に間取り図を見ながら家を建てていく工程とように置き換えられます。
5.単体テスト
プログラミング工程が完了したら、作動するのかテストをします。
ここで、最初に決めた要件定義で求められている内容を満たしているかをしっかりと確認する必要があります。
単体テストでは、小さい単位から大きい単位の順にテストを行うので、対象単位(モジュール)ごとにテストを行っていき、要件定義を満たしているかチェックしていきます
。
6.結合テスト
単体テストで問題がなければ、複数の対象単位を結合してテストを行います。
具体的には、データの受け渡しや画面の切り替わりなど、一つ一つのプログラムが結合しても正常に作動するかを確認していきます。
7.システム(総合)テスト
結合テストで問題がなければ、システム(総合)テストを行います。
ここでは、ユーザーが要求する機能や性能を満たしているか厳しくチェックしていきます。
実際にアクセスしたときの処理速度や、大量にアクセスした場合への耐久性などを確認し、ユーザーにとって使い勝手のよいシステムかどうかを判断します。
8.運用テスト
システム(総合)テストをクリアしたら、運用テストを行います。
実際にシステムを運用する環境のもとで、不具合などが発生しないかをチェックしていきます。
最も実用的なテストになるため、ユーザー側の視点での確認が判断基準になるといえるでしょう。
9.リリースする
運用テストでも問題がなければ、実際のシステムとしてユーザーにリリースします。
リリースの方法には、旧システムから一気に切り替える一斉移行や、徐々に切り替える順次移行などの方法があります。
システムの規模や内容など、システム一つ一つに様々な方法があると考えておくとよいでしょう。
10.運用・保守
システムを使用していく上では、なにかしらの不具合が発生する可能性があります。そのため、リリース後であっても、常にシステムを監視し、不具合が発生した場合には即座に修正を行う必要があります。
よりよい状態でシステムを使用し続けることができるよう、随時アップデートを行うことも、ここの工程では重要な作業の一つです。
システム開発にはウォーターフォールモデルとアジャイルモデルがある
IoTシステムを開発するには、いくつかの方法がありますが、ここでは代表的な2種類の方法についてご紹介します。それぞれに方法についてどのような開発の手順になるのかチェックしておきましょう。
ウォーターフォールモデルとは工程を上から下へ順に行う開発方法
ウォーターフォールモデルとは、上流の工程から下流の工程へ順に行っていく方法になります。上記で述べた10の工程を1から順に進めていくのが大きな特徴です。
10の工程の流れに沿って開発が進んでいくので、進捗状況の把握がしやすいというメリットがあります。また、スケジュール管理もしやすく、計画的に開発を進めたいケースには最適な方法です。
1~10までの工程を一つ一つ完了させていくので、品質が維持しやすいという点もメリットとして挙げられるでしょう。
ただし、一つの工程を完了させてから次の工程に移っていくので、時間がかかってしまうという点がデメリットとして挙げられます。
スケジュール管理が重要な大規模なシステム開発などにはおすすめの方法です。
アジャイル開発とはスピーディに全体をすすめる開発方法
代表的な方法のもう一つは、アジャイル開発という方法です。アジャイルとは日本語で素早いという意味になるため、スピード感のある開発方法と認識しておくとよいでしょう。
アジャイル開発には細かなルールはなく、システム全体を作りながら随時変更・修正を繰り返して作り上げていく方法になります。
成果物が素早く完成するため、スピーディな事業展開が求められる新規事業のようなケースにはおすすめです。
随時変更や修正を行わなければならないため、顧客と開発者の密なコミュニケーションが必要です。両者がしっかりと連携をとることで、理想的なシステムを構築することができるでしょう。
IoT開発に必要なのはフルスタックエンジニア
フルスタックエンジニアとは、全ての開発を自分一人で手がけられる人材のことをいいます。IoT開発には、多方面にわたる豊富な知識が必要となります。
プログラミングやネットワーク構築、組み込み、OSなど様々な知識が必要になるため、どの分野にも長けているフルスタックエンジニアが欠かせません。
参考:フルスタックエンジニアとは | 年収・必要なスキル・現状を解説
参考:【必須スキル】製造業のIoTエンジニアに必要な技術・知識まとめ
参考:IoTのエンジニアにはどのようなスキルが必要か
組み込み系(ハードウェアやデバイス)の知識と技術
IoTはモノに機能を組み込む必要があるため、ハードウェアやデバイスを操作する組み込み系の開発スキルが必要です。
組み込み開発にはC言語やC++、Javaなどのプログラミング用語、Linux、WindowsなどOSの知識が必要になってきます。
さらに、組み込み系の開発スキルであるプログラミング用語だけでなく、デバイスや基盤、センサーなどハードウェア全般の知識が必要不可欠といえるでしょう。
モノをネットに繋ぐネットワーク知識と技術
IoTは、モノをインターネットやクラウドに繋ぐ必要があるので、ネットワークに関する知識も必須といえます。
Wi-Fiやモバイル通信、Bluetoothといった無線系の通信も活用するため、リアルタイム通信などで効率良くデータの送受信ができる環境を構築するための知識や技術が必要になります。
これは単にインターネットに繋ぐだけではなくそれ以上の知識が必要となるので、専門的な深い知識と技術が必要と考えるとよいでしょう。
セキュリティ対策の知識と技術
IoTではネットワークと接続するため、外部からの攻撃や情報漏洩などへのセキュリティ対策が必須です。
セキュリティ対策が万全でないと、外部から悪意ある攻撃を受けてしまったり、プライバシーデータが漏洩するなど、大きな被害をもたらしてしまいます。
ネットワークやシステムの安全性はもちろんですが、安心してシステムを運用・活用していくことができるよう、セキュリティ対策を構築することも求められます。
AIや機械学習の知識と技術
IoTでは、AIや機械学習の知識と技術が求められることが多いです。これは、モノをネットに繋ぐ際に、機械学習で収集したデータを可視化して特徴をつかみ、AIの認識・予測システムでうまく組み込む技術が求められます。
つまりは、IoTエンジニアとして、技術力が試されるスキルといえるでしょう。
AIや機械学習に関するスキルは、必要なスキルの中でも高度な技術を必要とするものですが、収集した膨大なデータを解析し、さらなら利便性を向上させるためには必要不可欠なスキルといえます。
センサーを接続する場合は電気・電子回路の知識と技術
IoTでは、デバイスとセンサーを接続する場合、電子・電機系の知識が欠かせません。
センサーはアナログ出力なのかデジタル出力なのか、電源は何v必要なのか、外部のドライバが必要なのかといった知識が必要で、それらの情報を総合的に判断するスキルも必要です。
電機回路や電子部品の特性をきちんと理解していないと、センサーを壊してしまったり、部品が爆発してケガをしてしまったりという危険が伴います。
開発にアプリを使用する場合はアプリの開発知識と技術
収集した膨大なデータをデスクトップやアプリで確認・操作するような場合には、アプリケーション開発スキルも必要になってきます。
スマホやPCで利用できるアプリケーションを開発する知識が欠かせません。
現代では、スマホやタブレットなどの端末が普及しているので、収集したデータの確認や操作自体をスマホやタブレットと連動させて行うシステムを開発する可能性が高いです。
スマホやタブレットでの使用を前提としたシステム開発を求められることが多くなると認識しておくとよいでしょう。今後はスマホやタブレットで使用できるアプリ開発スキルを問われることがあるかもしれません。
まとめ
今度ますます身近になっていくであろうIoTシステムですが、開発者には幅広い知識とスキルが必要であるといえます。
また、システムを構築していく上では、どのような目的でシステムを構築したいのかといったユーザー視点での熟慮も必要です。
システム開発を行うための手順や、開発に必要なエンジニアスキルについてしっかりと理解しておくことが成功の秘訣といえるでしょう。