- 更新日 2024.03.15
- カテゴリー システム開発
組み込みシステム開発とは?IoTとの関係・高機能化が進む業界の動向を解説【2024年最新版】
ある意味、ITシステムよりも私たちの生活に密着した存在なのが「組み込みシステム」といえます。しかし、身近であるがゆえに「組み込みシステム開発といっても、具体的なイメージがわかない」と感じて、下記のような悩みを抱えていませんか。
・組み込みシステムの仕組みはどうなっているの?
・組み込みシステムは今後どう進化していく?
そこで本記事では、意外に奥深い組み込みシステムの仕組み、開発の手順、IoTとの密接な関係など、知っておきたい組み込みシステム開発の基本を解説!DX(デジタルトランスフォーメーション)に向けて急激に変化する、組み込みシステムを取り巻く動向も紹介していきます。
組み込み以外のシステム開発の基本的な流れや工程は、こちらにまとめました。あわせて参考にしてください。
※組み込みシステム開発に豊富な実績のある優秀なシステム開発会社を探している方は、システム幹事にご相談ください。専任のアドバイザーが最適な開発会社をご紹介します。相談料などは一切かかりませんので、お気軽にお問い合わせください。
組み込みシステム開発とは
組み込みシステム(Embedded System)とは、ある特定の機能を持たせるため、機器本体に組み込まれる「ソフトウェア・ハードウェアからなるコンピューターシステム(制御システム)」のこと。すなわち、組み込みシステム開発とは「ソフトウェアとハードウェアを組み合わせて組み込みシステムを開発する」ことです。
Web系・オープン系といわれる一般的なITシステムの場合、ハードウェアは既製品を調達して構築します。しかし、組み込み系ともいわれる組み込みシステムは、LSIなどを調達することはあっても「回路は独自開発」される場合がほとんど。これは、機器ごとに異なる組み込みシステムが必要になるからです。
※LSI:一般的にマイクロコントローラを含んで組み込みシステム製品の主要な電子回路を1チップ程度に集積した半導体素子
具体例
画像引用:ラトックシステム
組み込みシステムが内蔵される機器(組み込み機器)も多種多様。洗濯機・テレビ・エアコン・冷蔵庫などの家電製品、Wi-Fiルーター・スマートフォン・デジタルカメラなどの身近なものから、小売店のPOSシステム・マルチメディア端末・自動車のナビシステム・産業機械まで、さまざまな機器に組み込みシステムが利用されているのです。
例えば、洗い終わった洗濯物を脱水槽に移す必要があった二層式が、全自動洗濯機へと高機能化したのは組み込みシステムが内蔵されたから。インターネットに接続されたエアコンを外出先からコントロールするなど、いわゆるデジタル家電が当たり前になったのも組み込みシステムが進化したおかげです。
組み込みシステムの仕組み
コンピューターシステムである組み込みシステムの仕組みは、基本的にITシステムと同じだと考えていいでしょう。簡単にいえば「ユーザーが入力する」>「ソフトウェアが入力に従ってハードウェアに指示を送る」>「ユーザーの意図に従って機器が動作する」ということです。
ただし、大きな違いとして挙げられるのは下記の通り。
- ITシステム:ソフトウェアのアップデート・ハードウェアの拡張が比較的容易
- 組み込みシステム:原則「一度機器に組み込まれたシステムの変更は想定されていない」
汎用性・拡張性が重視される傾向のあるITシステムと異なり、特定の機能に特化した組み込みシステムでは、リアルタイム性・確実性・省電力性・コンパクトさが重視されることも大きな違いです。
組み込みソフトウェア
洗濯機であれば、洗濯機に求められる機能だけを実装すればいいため、当初の組み込みシステムはそれほど複雑なものではありませんでした。しかし、市場競争力を高めるためには、他社よりも利便性の点で優位に立たなければなりません。そのため、現代の組み込みシステムでは、ITシステムと同様のソフトウェアプログラム(組み込みソフトウェア)を搭載することが一般的です。
組み込みシステム開発では、OS(オペレーションシステム)の機能を応用して動作するプログラム「アプリケーション」および、ユーザーの操作画面となる「UI(ユーザーインターフェイス)」などのソフトウェアを開発します。
組み込みOS(オペレーティングシステム)とは
ITシステムと求められることが異なる組み込みシステムの場合、ITシステム用の汎用OSをそのまま使うのは都合がよくありません。やるべきことが限定される組み込みシステムでは、実行すべきアクションがただ一つだけの場合もある一方、そのアクションを継続的かつ確実に実行する必要があるからです。そのため、組み込みシステムにはITRON / VxWorks / LynxOSなどのOS(組み込みOS)が利用されることが多く、場合によっては「確実に時間内に処理を実行できる」BeRTOS / Nucleus RTOSなどのRTOS(Real-Time Operating System)が利用されることもあります。
OSとアプリケーションの中間に位置するミドルウェアについては、下記記事をご参照ください。
関連記事:ミドルウェアとは?アプリ・システム開発との関係・仕組み・役割・具体例を解説!
組み込みハードウェア
ITシステムでハードウェアに該当するものは「CPU」ですが、組み込みシステムのハードウェアには「MCU(マイクロコントロールユニット)」「MPU(マイクロプロセッサーユニット)」などのLSI(集積回路)を利用することが一般的。これは、ソフトウェア同様、組み込みシステムのハードウェアにもリアルタイム性・確実性・省電力性・コンパクトさが求められるからです。
一般的なPCでは、CPUの搭載された汎用ロジックボード基盤に、ディスプレイ出力 / USB / サウンド入出力などのコントロールチップ / 回路が用意されています。しかし、個別機器ごとの対応が必要な組み込みシステムではそうはいきません。組み込みシステム開発用の汎用テスト基盤はあるものの、そのままでは機器に組み込めないことがほとんど。そのため、カスタマイズして利用するか、新たに回路設計する必要があります。組み込みシステム開発では、ソフトウェアだけではなくハードウェアの知識も求められるのです。
組み込みシステム開発の手順・流れ
ソフトウェア・ハードウェアの同時開発が必要な組み込みシステムは、ITシステム開発と手順・流れは似ていますが、異なる部分も少なくありません。以下から、一般的な組み込みシステム開発の手順・流れを簡単に紹介していきましょう。
組み込み機器の要件定義
開発する機器に求められる機能を定め「要件定義」としてまとめていくこと。つまり、どんなシステムを開発するのかを見える化することです。発注者の希望を叶えるために、必要な機能などを明確にします。具体的には下のような項目を決めます。
・開発目的
・ターゲット
・予算
・必要な機能
・用いられる技術
・スケジュール(納期)
・必要な人員(工数)
・実装手順
要件定義はITシステム開発でも最上流で実施されるステップです。ただし、システムの変更が想定されていない組み込みシステム開発の場合、抜け・漏れがないかをより慎重に機能要件を定義していく必要があります。綿密に行わないと「無駄に高機能になって予算オーバーになる」などの事態になる恐れがあるので、注意しましょう。
ソフトウェア・ハードウェアの設計
特定の機能のみに絞られる組込みシステムではありますが、製品によって利用できるOSやマイコンに制限が生じる場合も少なくありません。ソフトウェア・ハードウェアそれぞれの開発チームが協働しながら、設計作業を進めていきます。設計は、開発するシステムの機能・構成などの基本的な仕様を大枠で策定する作業工程。そのため、開発会社が発注者にもわかりやすくシステムのアウトラインを決めていきます。
後になって実際にシステムを動す段階になって、機能など変更したくなっては、修正作業が入ってしまいます。これを防ぐために設計段階で、パイロット版(正式なリリースでの製品より先に製作する簡易的な仮製品)を作ってみるといいでしょう。試験的に操作してみれば完成イメージがしやすくなり、認識のずれも防ぎつつ設計できるでしょう。データベース定義書を作り、ローカル環境にデータベースを構築する方法なども有効です。
システム開発の基本設計は下記記事をご参照ください。
関連記事:システム開発の基本設計とは?その位置付け・重要性・発注者としての関わり方を解説!
ソフトウェア・ハードウェアの開発・実装
設計通りにソフトウェア・ハードウェアを開発・実装します。ハードウェアは回路図をもとに基盤・パーツを実装していき、ソフトウェアは主にC / C++を使ってプログラミングされます。しかし、なんらかの理由でOSを利用できない場合は、アセンブリ言語を使ってマイコンを直接制御する場合もあります。
開発担当者間で共通で扱えるライブラリや関数を活用すれば、開発時間・コストを短縮可能です。すると修正作業減少につながりやすくなります。
クロスデバッグ
図面通りに仕上がった基盤にソフトウェアを実装し、ソフトウェア・ハードウェア両面からテストするクロスデバッグを行います。一般的には、開発したソフトウェアをテスト基盤上で動作確認してから、本番基盤上のROM(読み出しのための記憶装置)に焼き込んでクロスデバッグを実施します。ただし、バグがソフトウェアによるものなのか、ハードウェアによるものなのかの見極めが難しいことも事実。あらゆる可能性を考慮に入れながら慎重に進められるフェーズです。
環境試験(フィールドテスト)
クロスデバッグをパスしたシステムが、実際の環境でも問題なく動作するのかを確認する「環境試験(フィールドテスト)」を行います。ナビシステムであれば温度変化の激しい車の中、湿気の影響を受けやすい洗濯機など、組み込みシステムは必ずしも条件の良い場所で使われるとは限らないため、必ずテストは行う必要があります。
また、開発システムの性能が滞りなく稼働するか、要件定義書で定めた機能に漏れはないかなどもテストします。とくにセキュリティ面は、悪用されるリスクも想定してテストしましょう。
※組み込みシステム開発に豊富な実績のある優秀なシステム開発会社を探している方は、システム幹事にご相談ください。専任のアドバイザーが最適な開発会社をご紹介します。相談料などは一切かかりませんので、お気軽にお問い合わせください。
組み込みシステムとIoTの関係
ここまでで、組み込みシステムの基本概要や開発の手順・流れを簡単に解説してきました。しかし、「ある特定の機能を持たせるため、機器本体に組み込まれる」という、これまでの組み込みシステムとは違った潮流が広がりつつあります。それこそが、組み込みシステムと密接な関係にある「IoT」の普及です。
IoTとは
IoT(Internet of Things)とは、「すべてのモノがインターネットにつながる」こと、またはその技術です。IoTでは、インターネットに接続されたモノを活用し「遠く離れた場所の状況を把握する」「遠隔操作する」などの実現が目指されます。例えば、外出先から専用のアプリがインストールされているスマホで、自宅のエアコンを遠隔操作するなどがイメージしやすいでしょう。
最近では、スマート農業も注目されています。スマート農業では「田畑のデータをリアルタイムで収集」し、必要とあらば「水分の足りない箇所を散水」するなどが実施されますが、「データ収集するセンサー」「散水機の制御」には組み込みシステムが必須です。
IoTと組み込みシステムの違い
すべてのIoTは「組み込みシステム」の一つですが、組み込みシステムはインターネットにつながっていないもの、エアコンや洗濯機、テレビなども含まれます。つまり、組み込みシステムが親で、その中の一つがIoTと覚えてください。
高機能が加速する組み込みシステムの動向
IoTの普及は、結果的に組み込みシステムのソフトウェア・ハードウェア高機能化を促すことになったといえます。それは私たちの身近な存在でもあるデジタル家電にもいえること。これらを踏まえ、組み込みシステムの今後に向けた動向を紹介しておきます。
ネットワーク / GUIなどの複雑な機能が求められている
さらなる利便性を求めるユーザーニーズもあり、クラウドサービス、AI、ビッグデータなどの技術も兼ね備えた技術・製品開発も行われるようになり、ニーズに応えるための技術は一層複雑化しているのです。また、デジタル家電も含むIoTの普及は、組み込みシステムにネットワーク機能 / GUIなど、より複雑な機能を求める流れを生んでいます。これを支えるのがハードウェアの小型化・高性能化・省電力化です。
高性能なハードウェアをコンパクトに機器に組み込めるようになったと同時に、メモリ領域も拡大できるようになったことから、組み込みソフトウェア側の柔軟性も高まりました。ハードウェアの制限によって従来は使えなかった「Linux」「Windows Enbedded」「Android」などのOSが利用できるようになり、リアルタイム性を確保しながら多機能性も実現できるようになったのです。
従来の組み込みシステムは、一度組み込まれたシステムの変更は想定されていませんでした。しかし近年では、書き換え可能な「Flash ROM」にソフトウェアを搭載し、ファームウェアアップデートという形で機能追加・バグフィックスできるものも増えています。
FPGAのハードウェアアクセラレーション
ただし、コンパクトさのほかにリアルタイム性・確実性・省電力性が求められる組み込みシステムでは、ハードウェアの高性能化を引き換えにしたいくつかの課題があります。それは、マイコンをはじめとしたLSIやCPU、GPUなどの高性能化は、リアルタイム性・確実性・省電力性とトレードオフの関係になりやすいことです。
これを解決するために注目されているのが「FPGA(Field-Programmable Gate Array)」。文字通り、現場で再プログラムできる集積回路であるFPGAは、製造後でも回路を変更できる特徴を持ちます。ソフトウェアとメモリ間をジャンプさせないため、消費電力を抑えながら大量のデータをリアルタイム処理するのに向いています。
従来のLSI / CPUなどに一つ、もしくは複数のFPGAを追加することによって、組み込みシステムの高機能化で課題になりがちなリアルタイム性・確実性・省電力性を確保できると期待されているのです。
AIモデル / Pythonプログラミングの活用
組み込みシステムの課題解決に有望なFPGAですが、回路のプログラミングに使われる「HDL」は、主にハードウェアエンジニアが利用する低水準語です。これが組み込みシステムへのFGPA活用における、ハードルのひとつとされていました。
しかし、この課題もIoTの普及に伴って解決しつつあります。IoTと密接に関連する技術としては、組み込みシステムのほかに「AI分野」が挙げられますが、ディープラーニング / 機械学習のフレームワークとして知られる「TensorFlow」「PyTorch」などで構築されたAIモデルを利用して、FPGAを高速化できるプログラムをコンパイル可能です。
AIモデルが利用不可能な場合でも、FPGAをプログラミングするPython向けオープンソースプログラムが登場しており、ソフトウェアエンジニアがFPGAの高速化も込みで開発できる環境が整いつつあります。従来から関連の深かった「組み込みシステム」「IoT」「AI」ですが、今後ますますその傾向が強まることは間違いないでしょう。
組み込みシステム開発におすすめの会社一覧
組み込みシステムにおすすめの会社10選
会社名 | 所在地 | 特徴 |
株式会社RayArc | 東京都新宿区 | 40年以上の実績 |
株式会社エクセルソフト | 山形県山形市 | 1990年創業の老舗 |
アイテック阪急阪神株式会社 | 大阪府大阪市 | 開発実績が豊富 |
株式会社エンビテック | 東京都墨田区 | 海外メーカーとも提携 |
株式会社CIJネクスト | 東京都品川区 | 交通管制分野の開発が得意 |
株式会社プリバテック | 東京都品川区 | スマホとの連携開発が得意 |
株式会社Present Square | 東京都中野区 | AIや機械学習の開発が得意 |
ナショナルソフトウェア株式会社 | 東京都文京区 | 先端技術の開発が得意 |
日本インサイトテクノロジー株式会社 | 東京都中央区 | 組み込みソフトウェアの技術が高い |
株式会社ヘルヴェチア | 岡山県岡山市 | ARMを使用した開発の実績がある |
上の表が組み込みシステム開発におすすめの開発会社です。社名をクリックすると公式サイトに遷移しますので、気になる会社のホームページを覗いてみてください。また、下記の記事では上の10社の特徴を詳しく紹介しています。合わせてご覧ください。
まとめ:総合力が求められる組み込みシステム開発
組み込みシステム開発とはなにか?具体的にイメージできない方に向け、本記事では、意外に奥深い組み込みシステムの仕組み、開発の手順、IoTとの密接な関係など、知っておきたい組み込みシステム開発の基本を解説するとともに、DXを見据えた組み込みシステムを取り巻く近年の動向も紹介してきました。
ソフトウェアだけでなく、ハードウェアの知識も求められる組み込みシステム開発は、優秀なエンジニアを探すのが難しいといわれており、必要とされる技術も急速に進化しています。組み込みシステム開発の害虫を検討しているのであれば、ITシステム開発以上に慎重な見極めが必要です。
※組み込みシステム開発に豊富な実績のある優秀なシステム開発会社を探している方は、システム幹事にご相談ください。専任のアドバイザーが最適な開発会社をご紹介します。相談料などは一切かかりませんので、お気軽にお問い合わせください。
コンサルタントのご紹介
岩田
専任のコンサルタントが、
お客様の予算と目的を丁寧にヒアリング。
最適な会社をピックアップ・ご紹介させていただきます!
初心者の方でも安心してご相談いただけます。
Q. 組み込みシステム開発とは何ですか?
組み込みシステム開発とは、ソフトウェアとハードウェアを組み合わせて組み込みシステムを開発することです。LSIなどを調達することはあっても、回路は独自開発される場合がほとんどの特徴があります。
Q. 組み込みシステム開発の手順は?
組み込みシステム開発の手順は「組み込み機器の要件定義」「設計・開発・実装」などです。詳細は記事内で紹介していますので、ぜひご覧ください。
この記事を書いた人
梓澤 昌敏
専門分野: 音楽・映像制作、オウンドメディア、ビジネス
音楽・映像制作の現場を経て、スタジオ構築側の業界へ。マネージャー・コンサルタントとして制作現場の構築に携わる一方、自社オウンドメディアの立ち上げを含むマーケティングも担当してきました。現在アメリカ在住。作曲を含む音楽制作も提供しています。
このライターの記事一覧