エンベデッドシステムとは「組み込みシステム」のこと。「エンベデッド(embedded)」は直訳すると「組み込み」であり、2010年代には組み込み機器の総合技術展示会を指す言葉としても使われていました。
現在は、エンベデッド=組み込みシステムという認識が一般的です。
続いて、エンベデッド(組み込みシステム)において混同しやすい用語について解説します。
エンベデッドのCPUにはさまざまな仕様があり、選ぶ際には性能や互換性、コストなどを比較検討する必要があります。
例えば、高度な処理が実行できるCPUには消費電力や発熱が多いというデメリットが。サイズが小さいCPUは電力消費が少なく信頼性が高いのが特徴ですが、処理能力や拡張性に限界があります。
ハードウェアやソフトウェアとの互換性の確認も必要。メモリなどの周辺回路との接続に問題がないか、OSやドライバが対応しているかを確認しましょう。CPUは組み込み機器のコストに大きく影響するため、開発要件に見合ったものを選択するのがベストです。
ブートストラップとは、組み込み機器の電源を投入した時にCPUが最初に実行するプログラムのこと。ハードウエア固有のCPU設定、ピン設定、メモリ設定を行い、ファームウエアの先頭番地にジャンプするところまでを担当します。各ベンダーが出しているマイコンの評価基板には、あらかじめ動作可能なブートストラップが付属しているため、自分でプログラムを書いて準備する必要はありません。
エンベデッドで使用するOSの選択肢としては以下が挙げられます。
必要最低限の機能に留めたい場合は、OSのライセンス料がかからないため開発コストを抑制できるベアメタルを選択するとよいでしょう。ただし、OSが提供する機能を自分で実装しなければならず、マルチタスクの実現が難しいというデメリットがあることを覚えておいてください。
ITRON系OSは組み込み機器用のOSで、日本ではエンベデッドの業界標準となっています。無償版と有償版がありますが、組み込み機器の導入に慣れていない方にはサポート窓口が設けられている有償版がおすすめです。
Linuxはサーバやパソコンで広く使われていますが、エンベデッド向けのLinuxは通常よりメモリサイズなどが削減されているのが特徴。RaspberryPiなどのハードウェアに対応し、すぐに使用できるようにプログラムが揃っています。一方、リアルタイム処理が行えなかったり、RAMやROMなどのハードウェアの要件が厳しかったりする場合もあるため注意が必要です。
エンベデッド向けのWindows「Windows Embedded」があり、Windowsの豊富なアプリケーションが動作します。
クラウド系RTOSはIoTデバイス向けのOSで、AWS (Amazon Web Services)などが無償で提供しています。クラウドサービスと連携し、IoTデバイスの監視・制御を行うことが可能。サポート窓口が用意されていないため、トラブルの対処はユーザーフォーラムで相談しましょう。
デバイスドライバは、デバイスコントローラ(USBやLANなど)とデータをやり取りするために必要なプログラムのこと。
例えばデバイスドライバの一種であるUSBドライバを構成するのは、デバイスの制御を担当するコントローラドライバとUSBメモリなどの機能を実現するクラスドライバ。組み込み機器でUSBを動作させるためには、目的に合わせてドライバを入手する必要があります。
デバイスドライバは、デバイスドライバ販売会社から購入する、デバイスメーカが無償提供しているものを使用する、自力で開発する、開発会社に委託する、といった方法で入手することになります。
入手する際は以下の点を確認しましょう。
アプリケーションとOSの中間に位置するミドルウェアは、デバイスドライバと同じようにメーカーから有償または無償で入手するか自ら作成します。デバイスドライバ開発のようにデバイスの制御に関する知識は必要としませんが、開発の難易度は高め。自分で開発する時間やコストを考えると、メーカーから入手した方が効率的でしょう。
メーカーからミドルウェアを手に入れる場合は、デバイスドライバと同様にカスタマイズの度合い・ライセンス形態・サポートについて確認するようにしましょう。
一般に、ミドルウエアは幅広い用途向けに汎用的に設計されているため、そのままでは要求仕様に対して機能が不足していたり、性能が満たない可能性もあります。要求仕様を満たせるか、必要なカスタマイズができるか、ミドルウエアの仕様についてよく確認しましょう。
無償のミドルウエアは、無償だからといって完全に好きに使って良いわけではありません。外部からの要求によるソースコードの公開や、製品マニュアルへのライセンス条項の記載が求められることがあります。
有償ミドルウエアの場合はそういったことは発生しませんが、どこまでそのソースコードを流用して良いかが条件として決められています。ライセンスが用途に合致しているか確認しておきましょう。
ミドルウェアが無償の場合、不明点はユーザーフォーラムで確認することになり、回答が得られなければ自ら解決する必要があります。有償のミドルウェアならメーカーのサポート窓口に相談できるため、満足できる回答が得られるでしょう。
ユーザーアプリケーションとは、エンベデッドで機能やサービスを利用するために必要なアプリのこと。自分で実装するか外注業者に実装してもらうかの2択となりますが、ハードウェアよりも先に着手することが多いため、パソコンや過去の組み込み機器で動作確認することになるでしょう。
ユーザーアプリケーションをパソコンで動作確認する場合、組み込み機器に比べて豊富な開発ツールが利用可能。ただし、実際とは異なる環境で動作するため、組み込み機器に移植した際に互換性や安定性の問題が発生する可能性があります。
また、マイコンはパソコンよりも処理能力が低い傾向にあり、効率が悪いプログラムを書くとマイコンでの処理が遅くなることも。
開発する組み込み機器とハードウェアやOSなどが似た過去の組み込み機器があれば、開発のハードルが下がって効率的に作業を進められるようになるでしょう。
ユーザーアプリケーションの一種でありながら、ハードウェアとも密接に関連するのがファームウェア。脆弱性の修正が行われるファームウェアの更新は、組み込み機器のセキュリティを向上させる重要な役割があります。
パソコンはネットワークを経由して更新プログラムを適用する仕組みが整っていますが、エンベデッドのファームウェアは個々の仕様に依存しているのが特徴です。
ファームウェアの更新は、フェイルセーフ機能が必要です。例えば、ファームウェア格納領域を2面作成し、更新時は古いVer.を新しいVer.で上書きするように設計しましょう。上書き更新に失敗した際には、書き換えをしなかったもう1面で起動するようにするとよいです。ファームウェアを更新する場合は手順を十分に確認し、バックアップやテストを入念に行うようにしましょう。
エンベデッドの開発で必要となる主なツールには以下のようなものがあります。
近年は主に2~5をまとめた統合開発環境(IDE)が主流です。
Windowsのソフトウェア開発では主にVisual Studioを使用しますが、マイコンのファームウェア開発ではメーカーごとのIDEが必要になります。デバッガは、IDEに含まれているもの以外にも、より強力な機能を備えたサードパーティ製のものもあります。
ミドルウェアとは、コンピューター全体の動作を管理・制御するOSと、OSだけでは行えない業務・目的に応じて作成されたアプリケーションの間に存在するソフトウェアのこと。本来はOSとアプリケーションが直接指示・応答をしますが、間にミドルウェアがあればOSの負担が減って動作が円滑に。また、アプリケーションの機能の一部をミドルウェアに担わせることで開発を効率的に行えます。
ミドルウェアには、データのバックアップを行うもの・システムを監視するもの・アプリケーションの共通処理を行うものなどさまざまな種類があり、例えばIoT家電のネット接続、音声認識機能の追加といった処理のために搭載されています。
既成のミドルウェアの中からエンベデッドに合致するものが見つかれば、自社で開発する時間と労力を大幅に削減することが可能です。
組み込み開発に20年以上関わり、1000プロジェクト・3000ライセンシーの実績のあるCenteが、動作実績のあるファームウェアを再整備しパッケージ化したのが「Centeミドルウェアシリーズ」。ミドルウェアとアプリケーションが滞りなく動作するよう、ミドルウェアを動作させるためのCPU基板を自社開発したうえで充分な動作検証を行っています。
Centeはプライスをすべて開示しているため予算組みがしやすく、ロイヤリティ不要で導入しやすいミドルウェア。すべてソースコードで提供されるため、開発するプログラムとミドルウェアを同じレベルで管理できる利便性の高さも魅力です。
購入後半年間の無償サポート期間が標準付属しているため、不具合が発生した時なども安心。
多種多様なミドルウェアが網羅されていますので、自社のエンベデッドシステムに最適なものがきっと見つかるはず。ぜひご検討ください。
IoTとは、「Internet of Things(モノのインターネット)」のこと。以前はインターネットといえばコンピューター同士をつなぐものでしたが、技術の進歩により自動車や家電・医療機器・製造機器などモノ同士をつなげられるようになりました。
モノとインターネットがつながることでデータ収集が可能となり、故障などの予兆を検知したりビッグデータとして活用したりすることができるようになってきています。
一例として、IoTを活用し生産システムを最適化する「スマート工場」という取り組みがあります。
これは、工業機械にセンサーを取り付けてタブレットなどの端末とつなぐことで、現場にいなくてもモニタリングや品質管理などの業務を行える、というもの。
スマート工場以外に、自動車や医療現場でもIoTの活用が進んでいます。
IoT製品には、あらゆる面でエンベデッド技術が使われています。IoT機器は用途によって使用環境がバラバラであることやモジュールのサイズが小さい場合が多いことなどから、カスタム可能でコンパクトなエンベデッド技術が重宝されている、というのが理由。リアルタイム性のあるエンベデッドは、IoTによって得たビッグデータから最適な結果を素早くモノへ返すという処理も可能です。
現在のIT業界はWebやAI、スマホアプリなどがメインで、エンベデッドは古いというイメージを持っている方もいるかもしれません。
しかし、IoT機器はエンベデッドによってインターネットにつながりデータを収集します。そして、そのデータを分析したりレスポンスを返したりするのがサーバーサイドと呼ばれるWebやAIなどの役割。サーバーサイドとエンベデッドは対の関係にあるため、AIやIoTが普及すればエンベデッドの需要も同時に高まっていくでしょう。
AI分野でも組み込み技術が活用されており、今後需要の高まりが見込まれています。
現在のAIはスマートフォンやスマートスピーカーの音声認識などが代表的ですが、推論アルゴリズムの構築を利用するため、インターネット環境がないと使用できない場合がほとんど。
組み込みAIには推論アルゴリズムの構築はできませんが、「音声データから状況認識をする」「低解像度の静止画を認識する」「センサーデータから特定波形パターンを認識する」といったことが可能です。加えて、ネットワーク接続しないため負荷を軽減できる、データをネットワーク上へアップロードしないためセキュリティ面のリスクを避けられるという利点も。
組み込みAIはマイコンで動作が可能なため、低消費電力タイプのマイコンを使用すれば長時間のバッテリー駆動が実現可能。専用のハードウェアが不要でクラウドでの処理やサーバ・GPUも必要ないことから、エンベデッドシステムの小型化も可能です。
エンベデッドシステムスペシャリストとは、エンベデッドシステムに関するハードウェア・ソフトウェアを要求仕様書に基づき開発・実装・テストするエンジニアのこと。主に電子システムの開発やハードウェア製造などを行う会社で、顧客の要望に沿いながらエンベデッドシステムを開発します。
エンベデッドシステムスペシャリストの年収相場は明確になっていませんが、エンベデッドシステム開発者の年収相場は400~1,000万円程度(※)。条件によって異なるため、あくまで目安としてください。
※参照元:レバテックキャリア「組み込みエンジニアの年収相場は?仕事内容や需要が将来性についても解説」
https://career.levtech.jp/guide/knowhow/article/814/
エンベデッドシステムスペシャリストには国家資格があり、取得するためには情報処理推進機構(IPA)による「エンベデッドシステムスペシャリスト試験」に合格する必要があります。資格を保有すれば培った知識や能力を客観的に証明できるため、自身の市場価値が高まるでしょう。
エンベデッドシステムスペシャリスト試験には実務経験や下位資格保有などの条件がないため、誰でも受験可能です。
試験は午前Ⅰ(50分)・午前Ⅱ(40分)・午後Ⅰ(90分)・午後Ⅱ(120分)の4回に分けて実施されます。午前ⅠおよびⅡは多肢選択式(四肢択一)で、出題数は午前Ⅰが30問、午前Ⅱが25問。午後ⅠおよびⅡは記述式で、午後Ⅰは出題数2問のうち1問に解答、午後Ⅱは出題数3問のうち1問に解答する形です。
エンベデッドシステムスペシャリスト試験は誰でも受験可能ですが、高度情報処理技術者試験の中でも最高ランク「スキルレベル4」相当の難易度なので、合格には一定の経験が必要だと考えられます。
エンベデッドシステムスペシャリスト試験の合格率は16~17%で推移しています。合格するために必要な勉強時間は、実務経験のある人で1日3時間×半年間程度が目安。応用情報についての知識がない人の場合、さらに100時間程度の勉強時間が必要となるでしょう。