今回は、先日ヒューマンアカデミーにて開催された『IoTってなんだ?初心者のため”IoT”入門セミナー』セミナーレポートをお届けします。
株式会社セックにて車両自動走行システム等の開発に従事された 岩井 重陽 氏をお招きして、 IoTとは?IoTエンジニアとはどのような職種で何をするのか?などについて、現場の声を交えながら詳しく解説いただきました!
株式会社セックで人工衛星の運用システム等を開発
岩井氏(以下、岩井) – 簡単に自己紹介をしたいと思います。私は株式会社セックにて、システム開発をしています。セックは従業員300人ほどのソフトウェアの会社ですが、基本的に全員技術屋で、リアルタイム技術を専門としたソフトウェアを開発しています。
私はこれまでに様々なシステム開発を担当いたしました。代表的なものですと、ハワイ島のマウナケアの山頂に日本が立てた、すばる望遠鏡の観測の制御システムや、色々な人工衛星の運用システムを開発しました。小惑星探査機「 はやぶさ2 」 は今地球に戻ってきてますけど、そのソフトウェアもうちの会社で開発しています。
あとは、自動運転のシステムです。自動運転技術はまだ世の中に出ていませんが、2020年にいよいよ各自動車メーカーが出すと言われています。セックでは自動運転の自動車の中で動くソフトウェアの開発を担当しました。
さらに、IoTの教育サービスというのも始めていまして、その企画や運営も行っています。ヒューマンアカデミーとも協力し、IT系の講座の教材の開発やVODの授業を提供しています。
IoTとは何か?
![](https://haa.athuman.com/media/it/wp-content/uploads/sites/2/2020/02/tech_20200227_02.jpg)
岩井 – それではまず最初、「IoTとは何か」 ということを話していきたいと思います。
IoTは Internet of things(モノのインターネット) の略で、ありとあらゆるモノがインターネットに繋がる技術と、その技術を使ったしくみを指している、概念のことを言います。
IoTには『 4つの基本形 』があります。
車や冷蔵庫、ウェアラブル端末であったり、スマートフォン等、昔では考えられなかったものが何でもインターネットに繋がるようになっています。それらのセンサーがまず起点になります。センサーからデータをまず集めます。それが第一段階です
様々な情報がデータとして蓄積出来るようになります。センサーはそれぞれインターネットに繋がっており、クラウドといわれるデータの箱に溜まります。これが第二段階ですね。
次に、クラウドに集められた大量のデータ( ビッグデータ )をAI(人工知能 )が分析します。それが第三段階です。AI(人工知能 )はデータがあればあるほどより精度が上がり、正しい答えを見つけ出せるようになります。今は、色々なモノにネットワーク機能、センサー機能がついてデータが大量に集まるようになりました。そしてAI(人工知能 )が発達して、データの分析が出来るようになりました。
AI(人工知能 )が分析した結果に基づいて、個別に表示したりとか、サジェスチョンをしたり、人が判断出来るようなものを分析結果として返すことが出来るようになりました。これが第四段階です。そこから、新たなサービスが生まれてきています。
IoTの事例を紹介
岩井 – IoTの発達により、センサーが世の中にたくさん出てきて様々なデータを集めれるようになりました。そのことで人工知能が発達し、人間を介さないでもデータが集まり判断出来るようになりました。IoTにおいては、このことが大きいと言われています。
動物も目が出来たことによって、様々な物を見て情報としてインプット出来るようになり、それにより脳が発達し一気に様々な生物が誕生したと言われています。IoTはこの生物の進化に似ています。
この先、ネットワークの発達により蓄積されるデータ量がどんどん増え、人工知能も発達し、より便利なサービスも生まれるのではないかと期待されています。
ここで、IoTの事例をいくつか紹介していきます。
まず、『 タクシーの配車アプリ 』です。
最近私もよく利用しているのですが、東京都内だと、タクシーが呼べて、決済もその場で出来て、目的地も設定しておくと、勝手にタクシーがその場で目的地に連れて行ってくれる、というようなことがアプリのみで出来ます。
スマートフォンとタクシーの端末がデバイスとなり、位置情報もふまえ、ネットワークを介してサーバークラウドに情報が渡ります。その情報により、どこにどの車を配車するかが決定し、利用者のもとへタクシーが到着します。決済も加わっているので、一連の流れをサービスとして提供できるようになっています。
次に、『 機械の故障の前兆を事前に把握するシステム 』です。
製造業にとっては工場の生産ラインが安定的に稼働するというのは非常に大事です。これまでは人が常に張り付いて設備点検を行っていましたが、それをセンサーで解決することが出来るようになりました。生産設備の主要な部分にセンサーを取り付けて、振動や温度などの変化をセンサーが常に捉え続けます。
センサーが異常がないかを常時クラウドに送り、異常があればすぐに知らせることで、機械の故障の前兆を事前に把握することが可能となりました。このシステムは現在かなりのスピードで各工場に導入が進んでいるといわれています。同じシステムは製造業だけでなく、飛行機などにも搭載され、いまや欠かせないものになっています。
最近の例としては、 『 コンビニエンスストアの自動発注システム 』 があります。
これは、コンビニエンスストアが導入実験を行っているシステムで、発注を自動でAI(人工知能)が解析して行うというものです。それまでも、もちろん発注システムはあったのですが、販売実績を基にした基準値を設定し、それを超えたら人が発注するというものでした。
今回の自動発注システムでは、基準値を人が設定しないで、天気予報や、商品が売れた時間などのデータからAIが学習、分析をして、これが売れるとAI(人工知能)が判断したら発注数を提案します。発注担当者ごとの癖や思い込みといった要素がなくなり、適正な在庫確保により売上増加につながることが期待されています。
農業にもIoTは使用されています。元々、水田の温度の管理や水位などは人が行っていましたが、センサーで管理することでいつでも状況を把握することが出来るようになりました。
大学の農学部では、機械学習を中心としたデジタル処理の学科があります。大学生が農業を学ぶ時に、ドローンで畑全体をセンシングする、カメラをつけてどこが今どういう状態にあるのかをデータとして取得します。
どういう時に水をやらないといけないか、肥料をやらないといけないか、そうしたことをAI(人工知能)に学習させて、提案するという研究が進んでおり、実際に農業の世界で使われ始めているというところまできています。
『 自動運転 』は、IoTの目玉になってくると思います。
自動運転の車には、ものすごいセンサーが積まれています。私は昨年まで、自動運転の開発プロジェクトに携わっていました。私が担当していたのは、車の位置を特定するというコンポーネントでした。カメラの画像は当然ですが、レーダーのセンサーや、GPSの位置情報、あとは速度、車そのものの情報など、色々な情報を常に取り続けて、それをクラウドに全て送ります。
集めたデータをAI(人工知能)で解析をして、その結果、予測も踏まえて運転する、というのが自動運転の基本的な仕組みです。ハンドルを切るのか、ブレーキを踏むのか、アクセルを踏むのか、というのを最終的にAI(人工知能)が決定します。
日本でも2020年に、レベル3といわれる条件付きの自動運転が実用化されるといわれています。レベル3というのは、高速道路上で何か起こらない限りは人間は目を離してもよくて、何か異常があった時にアラームが鳴り、すぐに運転が切り替わるようになっていれば良いというレベルです。実は、そのあたりは現在ほぼ実用化出来ています。
これもセンサーでデータを大量に集められるようになったので、AI(人工知能)が正しい判断が出来るようになってきたという事例の一つです。
![](https://haa.athuman.com/media/it/wp-content/uploads/sites/2/2020/02/tech_20200227_03.jpg)
IoTで使用されるプログラミング言語について
岩井 – IoTは大まかにエンジニアリングと言われる4つの技術要素に分解できます。『 組み込み、クラウド、AIエンジニアリング、セキュリティ 』 の4つです。
それぞれ実際どういったプログラミング言語で開発されているかをご紹介していきます。
まず 『 組み込み 』 は、センサー、デバイスに近い部分です。ここはハードウェアに近いので、処理性能が高いもの、早いもの、早く動ける言語というものが使われます。C言語、C++や、アセンブラという機械語が主に使用されます。
それから、 『 クラウド 』は、サーバと言われる大きな計算機の開発です。
今はクラウドと呼び方をしていますが、いわゆるどこにでもあるサーバ機の延長でもあります。使用言語は、Java や C++などで、どんなプログラミング言語でも開発は可能です。Pythonなどは最近流行のスクリプト言語ですが、AIのソフトと親和性が高いと言われています。クラウドのエンジニアリングそのものもPythonで書いていたりします。
『 AIエンジニアリング 』は、分析そのものです。データを大量に集めて分析をして、結果を出します。
今の流行りはとにかくPythonです。非常にシンプルにコードを記述出来るからです。また、誰でも使うことが出来るデータ分析のライブラリーが非常に豊富なので、プログラミングを自分で書く必要がなく、初心者でも扱いやすいです。豊富なライブラリーの中から組み合わせてシステムを組めるので、短い記述で色んなことが出来るという特徴もあります。
最後に、担保しなくてはいけないのが 『 セキュリティ 』 です。
ネットワークに色々なモノが繋がると、外から見えてしまうのでガードしなくてはいけません。特に無線はケアしなくてはいけないところですね。セキュリティに対するシステムの考え方とか、プログラミングレベルでも考えていく必要があります。実施レベルとしては様々で、機械のところで実施する、アセンブラレベルで実施するものから、Javaで扱うというようなところなど、多岐にわたります。
Pythonについて少し説明いたしましたが、エンジニアリングで使用される各プログラミング言語についても、簡単にご紹介していきます。
IoTのためのプログラミング言語としては、『 C言語 』が基本です。
C言語は歴史があるプログラミング言語で、どんなOSでも動きます。Windows系のOSは基本的にはC言語で書かれています。先ほどもありましたけど、コンピュータに近いところで動くものですので、組み込みシステムといわれる、いわゆる資源が大きなサーバではなく、資源が少ない端末上で動くアプリケーションでの開発において、C言語は多く使用されています。デバイスでは、C言語が今最適な言語と言われています。
『 C++ 』はCの拡張ではありますが、全体の考え方がC言語とは異なり、オブジェクト指向という、ある振る舞いを全部オブジェクトに例えて、様々な要素をもって振る舞うという定義の仕方でプログラムを書いていきます。性能がものすごく高いので、様々な開発に使われています。
ハードウェア寄りの開発でも使用されていますし、先ほどのAIのライブラリーにおいてもC++がよく使われています。
次に、『 Java 』です。
これはサーバ系といわれる、オブジェクト指向の言語の一つです。Javaの特徴は、どんなコンピュータでも、どんなOSの上でも動けるという特徴があります。エンタープライズシステムという言い方をしていますが、サーバー系でも動きますし、組み込みと言われているところでも動きます。例えばアンドロイドの端末でもJavaが動いています。
最後に 『 Python 』 です。
Pythonは、色んなアプリケーションが開発出来ます。特徴はさっき言った二つです。
一つ目はシンプルであるということ。短いコードで、色んなことが出来ます。よく考えられてる言語ですね。
二つ目は、ライブラリーが豊富にあること。どちらかというとデータ解析などの数値計算系に強いです。今、AI(人工知能)といわれている色々なモデルのライブラリーが豊富にあるので、これを引っ張ってくればAI(人工知能)に学習させることが出来るというような使い方をされています。
セックでもIoT関連のシステムを多く手掛けています。
例えば、センサーから得られる位置情報をサーバに上げて、正確な位置を室内でも特定していく 屋内位置測位システムや、排水管などのインフラの点検において、ドローンを飛ばして中の状態を全部カメラで撮影し、その情報をデータ化して解析するシステム。データセンターと呼ばれる、大きなサーバーが置いてあるサーバーの拠点の室温の管理のために、ロボット( ドローン)が室内を動き、どこが何度かを計り続けます。そのデータを、解析して空調にフィードバックするというようなシステムも開発しています。
プログラミングを学習する上で大切な3つのこと
岩井 – 最後に、プログラミングを学習していくうえで大切なことをお話します。重要だと思うことを四つ挙げました。
まず、一つ目は 『 基礎の積み上げ 』です。
スポーツでも何でもそうですが、やはり基礎は大事です。基礎がしっかりしていると、簡単に応用がききます。ソフトウェアの世界は50年くらい前に急に大きくなりましたが、ソフトウェアの考え方、オブジェクト指向やプロミングの作法といった特徴的なものというのは実は50年前から提唱されていて、その流れは大きくは変わっていません。
世の中には様々なプログラミング言語がありますが、ある程度特徴的なものはもう決まっています。Cだったら手続き型の言語で、これを派生したものは沢山あります。Javaが根底にあって、そこからの派生で、C++、C#、Javaスクリプト、Python、Ruby、オブジェクティブC等。最近の言語といわれるPythonは書きやすくはなっていますが、大体みんな似通っていて、根底にはC++やJavaの考え方があります。
私の考えとしては、二つ学べばもう十分ですね。一つだと心細いのですが、例えばCとJavaとか、PythonとC++とか、二つ学ぶと違いがわかりますし、どういう特徴があるかわかるので、大体応用がきくようになります。
また、基礎を知るには原理を知るべきだと思います。最近の新しい技術とか、たいして新しくはないんです。基本は変わらないですね。ですので、コンピュータの動作原理を理解することが大事だと思っています。
そのためには、C言語や、C++がお勧めです。
C言語というのは難しいと言われますが、メモリにプログラムがのるということをきちんと理解しないと組めない言語になっています。C言語を理解することで、コンピュータがどういうふうに動いているかっていうのを頭で想像が出来るようになるのでオススメですね。
逆に、Javaを否定するわけでは全くないのですけれど、Javaはある程度隠れて動くので、実際メモリ上にどこにこのプログラムが配置されて、どう振る舞われているかというのは、ユーザー、プログラムを組む人からするとわからないし、わからなくていい設計になっています。動作の原理というのを理解するという点に関しては、C言語の方がより適していると思います。
二つ目は 『 ソフトウェアは簡単と思うようにしましょう 』ということです。
プログラムというのは、書いたようにしか動きません。プログラムを行っていると、バグとか不具合というような言い方をよくしますけど、コンピュータは絶対間違いません。書いた通りに動いているだけで、プログラマーが勘違いをしているんです。
動いた結果が全てなので、それを忠実に理解をすれば納得が出来ます。そういう意味で 「 簡単 」 という言い方をしています。
実際システムを組む時は、ハードウェアがあって動くものなので、そちらの方がものすごく難しいなと思います。ハードウェアとは、人工衛星や、スマートフォン、自動車など、実際に人と接点があるものです。特に動くものに関しては、すごく難しいです。
去年の年末くらいに、米配車サービス大手ウーバー(Uber)の自動運転車が歩行者を死亡させるという事故がありました。詳細は省きますが、これもソフトウェアは言われた通りに動いたのですが、ソフトウェアにこうしなさいと考えるところ、設計といわれるところのデザインが不十分だったことが原因と言われています。
三つ目は、『 コンセプト 』 です。
これは、重要なのはどう作るかではなく、何をつくるかということです。例えば、建築家が家を建てる際、コンセプトがしっかりしていれば芯の通ったしっかりした家が出来ます。ソフトウェアも同じですね。
私は、すばる望遠鏡の観測制御室の担当をしていたのですが、これのコンセプトは、『 徹底的に人間が間違えを起こさないように、大げさに動く 』 でした。というのも、すばる望遠鏡は4,200メートルの山頂にあり、空気が薄くてぼーっとします。高山病になり、頭の判断能力が鈍ります。
その対策として、山頂でのオペレーションや、何か判断をして運用を切り替えたりする際、画面の文字を大きくしたり、音を出すなど、視覚でも聴覚でもきちんと人間が識別できる、判断が鈍ることのないような設計にしました。自分でもなかなか面白いシステムだと思います。
あとは、スマートフォンの電子マネー機能です。 これも私が開発を
クライアントの絶対的な要件として、処理性能がありました。「タ
ですので、とにかく無駄なコードを書かないことを意識していまし
ここで紹介したように、システムによっても特徴があるので、実際にモノを作るとなるとコンセプトを意識するのは重要です。
四つ目は 『 楽しむこと 』 です。
私はいつも色々なところで言っているのですが、プログラミングでモノが動くと楽しいです。私は、セックに全くの未経験から入社して、今で20年以上経ちますが、実際に自分でプログラミングして思った通りに動く、ということが純粋に楽しいなと思えて入社してからプログラミングを色々勉強しました。
学ぶ過程は決して簡単なことではないですが、やるのであれば楽しみながらやった方がいいかなと思います。
プログラミングを学ぼうとしている人にメッセージ
岩井 – 繰り返しになってしまいますが、私はプログラミングをして動くことがすごく楽しかったです。実際の仕事でも、もちろん自分で動かしてみるのも楽しいんですけど、自分が作ったシステムによって、クライアントやユーザーの方が喜んでくれるのは単純にすごく嬉しいです。今の仕事において、そこが大きなやりがいになっています。
プログラミングの興味のある方は是非、楽しみながら頑張ってやって頂きたいなと思います。ご清聴ありがとうございました。
– ◇ – ◇ – ◇ – ◇ –
実際の現場でのエピソードも交えてのお話しに、参加者の皆様は興味深々に耳を傾けられていました。これからプログラミングを学びたい!IT業界に入りたい!と考えている方にとって非常にためになるセミナーだったのではないでしょうか。
参加された皆様、登壇された岩井さん、ありがとうございました!
プログラミングを勉強したい!と思った方は講座説明会に参加してみませんか?
![](https://haa.athuman.com/media/it/wp-content/uploads/sites/2/2020/01/tech_apo.jpg)
ヒューマンアカデミーのプログラミング講座では、全国29校舎にて無料の個別カウンセリングを随時行っております。
「どんなことが学べるの?」「未経験からでも就職はできる?」「勉強についていけるか不安」…等、気になること、不安に思うこと何でもご相談ください。
専任のキャリアカウンセラーが一人ひとりにあった個別サポートをご提供いたします。お電話からでもご参加いただけますよ。是非お気軽にお申込みくださいね。
▼ 【無料】個別カウンセリングに参加する ▼