組み込みソフトウェア開発とは?開発プロセスと費用相場・外注する際の注意点・おすすめの開発会社も紹介【2024年最新版】

組み込みソフトウェア開発とは?開発プロセスと費用相場・外注する際の注意点・おすすめの開発会社も紹介

「組み込みソフトウェアって何?」
「組み込みソフトウェアを作りたいが流れがよく分からない」
「開発会社の選定ポイントは何?」

高機能な製品を開発したい、既存製品の機能をバージョンアップしたい。そのために組み込みソフトウェアを開発したい企業は多いですよね。

しかし開発の全体像が分からず、何から手を付けたらいいか分からない人も多いでしょう。外注したくても開発会社が多すぎて、どこに依頼すればいいか迷う開発担当者も少なくありません。

そこでこの記事では、以下の内容について解説します。

  • 組み込みソフトウェアの開発プロセス
  • 開発費用の相場
  • 外注する際の注意点
  • おすすめの開発会社

この記事を読めば、組み込みソフトウェア開発の概要と流れ、自社のニーズに合った外注先を選ぶヒントが見つかるので、ぜひ最後までお読みください。

※組み込みソフトウェア開発を検討している方はシステム幹事にお問い合わせください。予算や目的などをヒアリングした上で、御社に最適な開発会社を選定します。相談料・紹介料はいっさいかかりません。

【無料】おすすめの組み込みソフトウェア開発会社を紹介してもらう

ソフトウェア開発に役立つ記事もご覧ください 組み込みソフトウェア開発の前におさらい!ソフト開発の流れや工程、費用相場まとめ

目次
  1. 1. 組み込みソフトウェア開発とは?
    1. 1-1. 組み込みソフトウェアとは?
    2. 1-2. 組み込みハードウェアとの違い
    3. 1-3. 組み込みソフトウェアの事例
    4. 1-4. 組み込みシステム、IoTとの違い
  2. 2. 組み込みソフトウェア開発でよく使われるプログラム言語
    1. 2-1. C言語
    2. 2-2. C++
    3. 2-3. Java
  3. 3. 組み込みソフトウェア開発に必要なスキル
    1. 3-1. 電子基板に関する知識
    2. 3-2. AIやIoTに関する知識
  4. 4. 組み込みソフトウェア開発のプロセス
    1. 4-1. 製品の企画
    2. 4-2. システム要求定義
    3. 4-3. システム基本設計
    4. 4-4. ソフトウェア要求定義
    5. 4-5. ソフトウェア設計
    6. 4-6. 実装
    7. 4-7. ソフトウェアテスト
    8. 4-8. システムテスト
  5. 5. 組み込みソフトウェア開発を外注する費用・相場
    1. 5-1. 組み込みソフトウェア開発の費用の大半は人件費
    2. 5-2. 人件費(開発費)は「人月×人月単価×開発期間」
  6. 6. 組み込みソフトウェア開発を外注するときの注意点5つ
    1. 6-1. 開発実績が豊富な企業を選ぶ
    2. 6-2. 要件を明確にする
    3. 6-3. ソフトウェアの仕様を固める
    4. 6-4. 過剰な要求はNG
    5. 6-5. 開発を丸投げしない
  7. 7. 組み込みソフトウェア開発におすすめの企業2選
    1. 7-1. 株式会社RayArc
    2. 7-2. 株式会社エクセルソフト
  8. 8. 組み込みソフトウェア開発のまとめ

組み込みソフトウェア開発とは?

組み込みソフトウェアとは?

組み込みソフトウェア

組み込みソフトウェアとは、組み込みシステムが搭載されている製品を直接制御するプログラムのことです。例えば炊飯器のボタンを押す際に、炊飯釜に何kwhの電力を出力する、何分後に炊飯を止める、といった指示を出すのが組み込みソフトウェアの役割。コンピュータを動かすためのプログラムが組み込みソフトウェアです。

組み込みシステムは特定の機械に搭載されたコンピューターシステムのこと。炊飯器の炊き出し・保温機能や洗濯機のタイマー、自動車のカーナビ等は全て組み込みシステムでコントロールされています。

組み込みハードウェアとの違い

組み込みハードウェア

組み込みソフトウェアに対するハードウェアは目に見える部分です。例えばカーナビの液晶パネルやボタンなどを指します。目に見える部品がハードウェア、機器の中に組み込まれ見えない部品がソフトウェアと区別すればわかりやすいです。

組み込みソフトウェアの事例

組み込み機器 組み込みソフトウェアの役割
カーナビゲーション 目的地までのルート表示
炊飯器 主力のワット数、タイマーなど
エレベーター 扉の開閉や、目的の階への指示など
エアコン 温度や風向きの調整、タイマーなど

私たちが生活の中で使っているものを見れば、組み込みソフトウェアがイメージしやすくなるでしょう。上の表のように、組み込みソフトウェアは、カーナビやエアコンなどの機器にし対し、様々な指令を送るプログラムです。

組み込みシステム、IoTとの違い

IoTとはInternet of Things(モノのインターネット)の略称で、家電や自動車、建物など様々なモノをインターネットでつなぐ技術を示します。

例えばスマートロック(遠隔で自宅やオフィスの鍵をかける技術)や自動問診システムと呼ばれる、電子カルテをネットワークで共有しAIに機械学習させて、患者の症状を解析してくれるサービスなどがあります。

RATOC IoT solution

画像引用:RATOC IoT solution

Iotはインターネットに接続されたもの、組み込みソフトはネットなしも該当する
IoTも組み込みシステムの一つですが、従来の組み込みシステムとの大きな違いはインターネットにつながっていること。エアコンを例に挙げると、部屋で直接リモコンを操作しなければ起動できませんでした。
しかしIoT対応のエアコンであればWiFi経由でスマートフォンからどこでも起動が可能。

このように、従来の組み込みシステムにネットワークを応用した技術がIoTといえます。

【無料】組み込みソフトウェア開発について相談する

組み込みソフトウェア開発でよく使われるプログラム言語

言語

特徴

代表的なシステム

組み込みシステムの

ライブラリが豊富

家電、産業用ロボット

PC周辺機器

C++

オブジェクト指向

複雑なシステム向き

自動車の制御系

Java

ガーベージコレクション

仮想マシン上で動作

カーナビ、携帯電話

スマホ

組み込みソフトウェア開発ではCやC++、Javaなどさまざまな開発言語が用いられます。発注者は開発言語の詳細まで知る必要はありませんが、外注先とスムーズにコミュニケーションを取るために、基礎知識を理解しておきましょう。ここでは、代表的な3つの言語について解説します。

C言語

C言語は、1972年にAT&Tベル研究所で開発されたプログラミング言語。
大きな特徴はコンパイラ型ならではの高速性で、リアルタイム動作が求められる組み込みシステムで重宝されています。代表的なシステムとして、産業用ロボットや家電、プリンターのようなPC周辺機器などが挙げられます。

そしてC言語はアセンブリ言語(マシンが直接プログラムを実行するための言語)に近い記述ができるため、ファイルが肥大化しない点が大きなポイント。またC言語は組み込みシステムで長い歴史を有しており、ライブラリ(特定の機能がひとまとまりになったプログラムセット)が充実しています。そのため、開発効率を上げやすい点が大きなメリットです。

C++

C++はC言語の拡張版として開発された言語で、従来のC言語に加えオブジェクト指向を採用しています。オブジェクト指向とはモノとモノの関係に視点を当てた概念で、大規模かつ複雑なソフトウェアの開発に適しています。そのため自動車メーカーなど組み込みシステムが主体の業界でよく使われています。

デメリットはC言語ほどライブラリーが充実していないこと。そのためコードが長く複雑になりやすく、開発に慣れていないとエラーやバグが起こりやすくなります。開発会社がC++を使う際には、C++の開発実績が豊富か確かめた方がいいでしょう。

Java

Javaは、1995年にサンマイクロシステムズが開発した、オブジェクト指向(モノとモノの関係性に重点を置く考え方)のプログラミング言語です。JavaはJVMと呼ばれる仮想マシン上で動くため、JVMに対応したコンピューターであれば環境を選ばずにプログラムを動かせます

またJavaには、ガベージコレクション(未使用メモリ自動消去する機能)を装備したコンパイラ型の言語のため、実行速度が高い点がメリット。そのため、リアルタイム性が求められる組み込みシステムでも重宝されています。

そしてJavaは、アプリケーションを起動させる際に、アクセス禁止領域を指定することで高いセキュリティを保持しています。そのため、不正アクセスで意図的にシステム障害を発生させたり重要なデータを盗まれるといったリスクも避けられます。

【無料】おすすめの組み込みソフトウェア開発会社を紹介してもらう

組み込みソフトウェア開発に必要なスキル

電子基板に関する知識

組み込みソフトウェア

組み込みソフトウェアは上の画像のような電子基板です。プログラミング言語の知識はもちろん、ソフトウェアと関連するハードウェア(電子パネルやボタンなど)の知識も必要となります。

AIやIoTに関する知識

組み込みシステム 例 エアコン 遠隔操作 iot

組み込みソフトウェアは電子レンジや洗濯機などの家電に使われることが多く、今後はAIやIoT技術もどんどん使われていきます。スマートロックやリモートの操作など、すでに導入されている技術はもちろん、今後導入される最先端技術への理解も必要になっていきます。

AI開発とは?必要なプログラミング言語・開発の手法・流れ・フレームワークなどを解説! | システム幹事 AI開発とは?必要なプログラミング言語・開発の手法・流れ・フレームワークなどを解説! | システム幹事 AI開発とはAIモデルの開発 / AIモデルを実装したシステムの開発のことです。本記事では、AIモデル / システムの開発手法・手順や、利用されるプログラミング言語・フレーム...

組み込みシステム開発とは?IoTとの関係・高機能化が進む業界の動向を解説【2023年最新版】 | システム幹事 組み込みシステム開発とは?IoTとの関係・高機能化が進む業界の動向を解説【2023年最新版】 | システム幹事 組み込みシステムとはある特定の機能を持たせるため、機器本体に組み込まれる「ソフトウェア・ハードウェアからなるコンピューターシステム(制御システム)」のこと。「ソ...

【無料】組み込みソフトウェア開発について相談する

組み込みソフトウェア開発のプロセス

ウォーターフォール型

組み込みソフトウェアの開発プロセスは、一つに定まっているわけではありません。

企画から実装、テストまで最初の計画通りに進めていく「ウォーターフォールモデル」と、企画から設計、実装を高速で回し、クライアントのフィードバックを経て修正する「アジャイル開発」などがあります。

アジャイル開発

主流はアジャイル開発ですが、組み込みソフトウェア開発の流れを理解しやすいウォーターフォールモデルで解説します。

ソフトウェア開発の位置づけが分かるように、組み込みシステムの開発プロセスから順に紹介するので、じっくり読んでください。

製品の企画

まず、どんな製品を求めているかアイデアを出しましょうしましょう。

  • 自動運搬ロボットを作りたい
  • 事務所の鍵をスマートロックに変えたい
  • 人が操作している塗装マシンを自動化したい

製品開発の目的・ゴールを明確にし、企画書にまとめます。記載する内容は次のようなもの。

  • 開発の背景(工場の機材運搬コストを1/3にしたい)
  • 自社の現状(運搬要員の人件費が大きく、人手不足も問題になっている)
  • 開発スケジュール(企画から導入まで1年)

なお開発会社には、提案依頼書(RFP)を提出しましょう。RFPとは製品企画を実現するために、開発会社から組み込みシステムの中身を提案してもらう依頼書のこと。複数社の提案を比べられる、開発会社と効率的にやり取りができる、といったメリットがあります。

RFPに盛り込むべき項目を以下に載せているので、参考にしてください。

RFPに載せる項目

項目

内容

システムの概要

・システム開発の背景

・解決したい課題

・既存システムとの関連

・会社・組織の概要

・システムの利用者

・システム開発の予算

依頼内容

・システムの性能・品質

・運用条件

・開発スケジュール

・納品条件

・定例条件(進捗報告、レビュー)

・開発体制

・プロジェクトの管理方法

・使用する言語、

・開発手法

・見積もり

提案手続き

・RFPに対する窓口

・提供資料

・選定方法

開発の条件

・開発期間

・作業場所

・使用機器(PCやエミュレーターなど)

・資料

契約事項

・支払い条件

・保証年数

・機密事項

・著作権

関連記事RFPとは?システム開発の質を高める提案依頼書の作り方を解説!【サンプルあり】

システム要求定義

システム要求定義

システム要求定義とは、製品の企画で出たアイデアを組み込みシステムでどう実現するのか、技術的な視点から検討するステップのことです。

具体的には以下のことを決めます。

実装すべき機能
・必要な技術
・CPUのスペック
・使用するハード(センサー、ライト、モーターなど)
・導入・移行計画
・運用・保守の方法(自社で管理、もしくは外注)

システム要求定義は入念に行う必要があります。システム要求定義が疎かだと「想像以上に開発が長くなる」「搭載すべき機能が網羅されていない」といったトラブルが発生するからです。

特に組み込みシステムの要求定義では、求める製品の特性に合わせてどんな機能を優先すべきか変わります。例えば自動車の衝突防止機能であれば、障害物を検知してすぐにブレーキがかかるリアルタイム性を優先しなければいけません。

スマートロックのように端末の操作性が重要なシステムであれば、UIを重視する必要があります。

このように、求めるシステムの特性に合わせて優先すべき項目を決める必要があります。

システム基本設計

組込みシステム基本設計の流れ

システム基本設計とは、システム要求定義で実装する機能を具体化するステップ

基本設計で行う具体的な作業は以下の通り。

・必要な機能の洗い出し
・扱うデータの整理(時間、温度、加速度など)
・ハードウェア・ソフトウェアそれぞれで実現すべき役割

基本設計では開発会社側から「基本設計書」が作成され、発注者のフィードバック、および修正を経てから次の工程へと移ります。

基本設計では、ハードウェアとソフトウェアそれぞれで実現すべき機能のバランスを考慮して話し合いましょう。なぜなら、どちらか一方に機能が偏ると開発費用が膨れたり、保守・運用が難しくなるからです。

例えば自動運搬ロボットを開発する場合、機動力を上げたいのであればモーターを追加すればいいと思うかもしれませんが、製品の単価が高くなるうえに消費電力などの運用コストも上がってしまいます。この場合、モーターを増やす代わりにソフトウェアで出力調整ができないか検討すべきといえます。

このように、基本設計でハードウェアとソフトウェアの役割のバランスを考えることが大切です。

関連記事システム開発の基本設計とは?その位置付け・重要性・発注者としての関わり方を解説!

ソフトウェア要求定義

ソフトウェア要求定義

システム基本設計が固まったら、次にソフトウェアとハードウェアに分かれて要求定義をします。

ソフトウェア要求定義では、システム基本設計やハードウェアの仕様を基にソフトウェア側で実現すべき機能を洗い出しますが、システム基本設計の時点で、機能の洗い出しやデータの整理などは終わっています。

注力すべきなのは、システムに異常が発生した場合のソフトウェア側の処理をどうするか精査すること。例えば決められたルートを走る自動運搬ロボットのプログラムを実装する場合、以下の異常事態の対処法を検討する必要があります。

  • 所定の重量以上の荷物を載せる→音声で重量オーバーを知らせる
  • ロボットが自走不能→位置情報をクライアントに送信

このステップ以降の「ソフトウェア詳細設計~システム統合テスト」までは開発会社が主体になって進めます。ソフトウェア要求定義までが発注者が工程に携われる最後のチャンスなので、積極的に関わりましょう。

ソフトウェア設計

ソフトウェア要求定義が固まったら、ソフトウェアの設計に進みます。設計では次の2ステップを踏みます。

  • 基本設計
  • 詳細設計

基本設計

ソフトウェア基本設計では、要求定義で決めたソフトウェアの仕様をどう実現していくか具体化するステップです。

具体的には以下のようなビジュアルを用いて、機能ユニット(ソフトウェアの各機能を実現するプログラムのまとまり)間のデータの振る舞いや構造を整理します。

ソフトウェアの基本設計では、ハードウェアの仕様に合わせて設計することが重要。なぜなら、ハードウェアに合わないプログラムを書くと出戻りが大きくなるからです。

特に以下のハードウェア仕様に留意する必要があります。

  • 消費電力
  • メモリの容量
  • 反応速度
  • 入出力ポートの接続数

例えば炊飯器の場合、ハードウェア仕様で決められた以上の電力を出力しようとするとお米が焦げてしまいます。自動車の衝突防止センサーにおいても、センサーの反応速度が遅いと衝突の原因になります。

このような不備が発覚した場合、一からソフトウェア開発をやり直しせざるを得なくなるでしょう。

以上のような出戻りを防ぐためにも、類似のハードウェアと簡易プログラムでハードウェアの仕様に合っているかチェックします。

関連記事システム開発の基本設計とは?その位置付け・重要性・発注者としての関わり方を解説!

詳細設計

詳細設計は、基本設計を基にソフトウェアの仕様(論理条件や処理項目)を具体化するステップです。

組み込みソフトウェア開発でよく使われる用語を以下の表に示したので、参考にしてください。開発会社とのコミュニケーションで役に立ちます。

RTOS

・処理時間の監視

・プログラム実行の優先度を付与

タスク

RTOSで動くCPU上のプログラムの単位

システムコール

タスクからOSへ出す命令

優先度

タスクを実行する際の優先順位

割込み

実行中のプログラムを止めて

より優先度が高いプログラムを実行

関連記事システム開発の詳細設計とは?プロジェクトの位置付け・役割をわかりやすく解説!

実装

詳細設計が固まったら、いよいよソフトウェアのプログラミング。前述の「組み込みシステムでよく使われるプログラミング言語」を使って実装します。

詳細設計と同じく、発注者が具体的な作業の中身を知っておく必要はありません。「こんな言語を使ってプログラミングをしているのか」ぐらいに覚えておくだけでいいでしょう。

開発言語の特徴を知りたい人は、以下の記事も読んでみてください。

関連記事システム開発の主要言語を解説!業務アプリケーションによく使われている言語は?

ソフトウェアテスト

組込みシステム開発のV字モデル

実装が終わったら、ソフトウェアが設計通りに動作するかテストします。テストは、主に以下の3ステップに分けて実施するのが一般的で、開発会社が主体になって進めます。

・単体テスト
・結合テスト
・統合テスト

単体テスト

単体テストではプログラムユニット(プログラムの最小機能単位)がソフトウェア詳細設計通りに動くか確認します。

  • 仕様に定められていないデータを入力しても異常動作が無いか
  • 条件分岐などの論理条件が網羅されているか

上記の工程でバグを洗い出します。

結合テスト

結合テストとはプログラムユニット同士を組み合わせた機能テストのことで、ソフトウェア基本設計通りに動作するか検証します。

この段階でハードウェアの実装が終わっていたら、ハードウェア基板上で動作テストを実施。ハードウェアが未完成の場合はPC上のシミュレーターで結合テストを行います。

統合テスト

統合テストとは、結合テストで検証した機能ユニットを全て組み合わせるテストのこと。完成した組み込みソフトウェアが、ソフトウェア要求定義通りに動くか検証します。

システムテスト

ソフトウェアのテスト工程が全て終わったら次は組み込みシステム全体のテストに移ります。具体的には次の2ステップを踏みます。

  • システム結合テスト
  • 受入テスト

システム結合テスト

システム結合テスト

システム結合テストでは、ハードウェアとソフトウェアなど別々に開発してきたものを組み合わせてシステム基本設計通りに動作するか検証します。

先述の通り、ハードウェア開発の進捗状況によっては一部のシステム結合テストを、ソフトウェア統合テストで実施しますが、ここでは試作品(家電やロボットなど)を使って動作を検証します。

受け入れテスト

受け入れテスト

受け入れテストとは、システム要求定義通りに動作するか検証するテストのこと。テストは実際にシステムが使用される環境(工場やクライアントの事務所など)で実施され、ここから発注者が本格的に関わります。

具体的な確認項目は次の通り。

  • 操作性に問題はない(コントローラーや操作画面のUIなど)
  • 大きな負荷(過電流を流す、高温多湿の環境に配置など)して保護動作は働くか
  • わざとシステム障害を起こした場合、復旧までにどのくらい時間を要するか

不具合が見つかった場合はハードウェアとソフトウェアに切り分けて検証し、再度修正します。ただしハードウェアは量産や製品の出荷計画、コスト面から修正が難しいことが多く、ソフトウェアの修正で対応するケースが多いです。

システムテストとは?テスト工程、その他のシステム開発のテストとの違いを解説 | システム幹事 システムテストとは?テスト工程、その他のシステム開発のテストとの違いを解説 | システム幹事 システム開発の工程の1つ、「テスト」では何をするのか?主に4つのテストに分解して解説。また、テストの工程で発注者は何をすべきか?意識するべきなのかを解説します。

【無料】組み込みソフトウェア開発について相談する

組み込みソフトウェア開発を外注する費用・相場

組み込みソフトウェア開発を外注する際に、どのくらい費用がかかるのか気になりますよね。費用の決まり方や相場を把握することで、不当な金額で契約するリスクを避けられます。

組み込みソフトウェア開発の費用の大半は人件費

組込みソフトウェア開発の費用の内訳

組み込みソフトウェア開発の相場を知る前に、「システム開発の費用・相場の内訳」を理解しましょう。開発会社から見積もりを提示されたとき、相場から大きく外れていないか判断できるからです。

システム開発の費用は「人件費(開発費)+諸経費」で決まります。
諸経費は開発用のPCやソフトウェアを動かす製品・ハードウェア、オフィスの維持費などです。

・人件費:エンジニアやプログラマーなどの費用
・諸経費:開発に必要な機材(ハードウェア、PC、オフィス)などの設備費

このうち、システム開発の費用のほとんどは人件費。システムの種類や機能などによって必要な人件費は異なり、開発費も変動します。

費用の見積方法について詳しく知りたい方は、下記の記事で解説しています。

関連記事システム開発の見積書の見方をプロが解説!注意点も紹介【サンプル付き】

人件費(開発費)は「人月×人月単価×開発期間」

人件費

システム開発にかかる人件費は「人月(にんげつ) ×人月単価 ×開発期間」で決まります。

・人月:プロジェクトマネージャー、エンジニアなど開発に必要な1ヶ月間の人員
・人月単価:人員1人が1か月作業した場合の費用
・開発期間:開発・リリースまでのスパン

システム開発では、見積書などに「〇〇人月」という用語が表れます。人月とは、開発に必要な1ヶ月間の人員の数。あるシステムを開発するのに2ヶ月で3人の人員が必要なら、6人月になります。

例えば、プロジェクトマネージャーとプログラマー、エンジニアそれぞれ1人の合計3人で開発するとしましょう。人月単価が一律100万円と仮定して工期が6ヶ月の場合、人件費は次の通り。

3人 × 100万円 × 6ヶ月=1800万円

システムの規模や機能、難易度などによって人件費や開発期間が異なるため、予算は大きく変わります

人月単価の目安

組込みソフトウェアエンジニアの人月単価の目安

プロジェクトの中心になって要求定義や設計などを行うSE(システムエンジニア)の人月単価の目安は上図の通り。スキルや会社、開発言語によって金額は異なりますが、平均額150万円前後です。実装を行うプログラマーの人月単価は100万円前後。

「そんなに単価が高いの?」と驚かれるかもしれませんが、開発会社は人月単価の中からエンジニアやプログラマーに報酬を支払うため、外注費が高額になるのです。

特に組み込み系のエンジニアは人材が不足しているため、他のエンジニアより人件費が1.5倍ほど高くなっています。

システム開発にはさまざまな役職のスタッフが関わります。下記の記事で開発プロジェクトにどんな人が関わるのかは解説しているので、詳しい内容を知りたい方は参考にしてください。

関連記事システム開発の役割分担〜発注者が知るべきプロジェクト体制作りのポイントを解説

【無料】組み込みソフトウェア開発について相談する

組み込みソフトウェア開発を外注するときの注意点5つ

組み込みソフトウェア開発を外注するときの注意点5つ

開発実績が豊富な企業を選ぶ

開発会社を選ぶ際には、組み込みシステムの納入実績が多い企業を選びましょう。なぜなら、高い技術力を有している可能性が高いからです。

実績を確かめる指標は会社の設立年数や主要取引先の業種から予測が可能。特に組み込みシステムは組み込む製品の知識も必要なため、自社と同じ業界への納入実績が豊富な開発会社は信頼できます。特定の企業と十数年取引していれば、品質は担保されていると考えていいでしょう。

要件を明確にする

どのような組み込みシステムを作りたいのか不明瞭では、開発が進まなくなります。要求定義や設計まで出戻りが発生したり、追加の実装や改修をしなければいけないからです。不要な機能をつけて予算オーバーになる可能性もあります。

開発プロセスの企画や要求定義の段階で、目的や開発スケジュール、必要な機能は明確にして開発会社に伝えましょう。また、実装したい機能の優先度も決めるべきです。

組み込みシステム開発を依頼する際に役立つ記事もあるので、ぜひ参考にしてください。

関連記事システム開発の依頼準備8点!プロジェクトを成功に導く外注ガイド

ソフトウェアの仕様を固める

組み込みシステムは複雑かつ正確な動作を求められるので、ソフトウェアの仕様に漏れや抜けがないようきっちり固めましょう。

特に注意すべきは、システムが異常を検知した時にどんな動作をすべきか考えること。例えば自動運搬ロボットの組み込みソフトウェアを開発する際には、以下のような異常動作が発生した時に、システムの挙動を決めなければいけません。

  • 指定ルートから外れた時は運搬を停止
  • 積載能力を超える荷物を載せたら音声で警告
  • モーター故障などで走行不能になったら位置情報を発信

異常発生

異常事態への対応処理が不明確だと製品のリコールや物損、事故などの問題に発展しかねないので、異常時の仕様はきっちり精査しましょう。

過剰な要求はNG

必要以上のミーティングや資料提供などの要求をすると、開発会社が仕事を進められなくなります。

融通が利かない納期もNGです。繰り返しになりますが、組み込みシステムには高い信頼性とリアルタイム性が求められます。要件を満たすために追加の機能が必要で開発が遅れるのであれば、納期を伸ばすことも検討すべきです。

また、無理に安い予算で開発させると品質を担保できなくなります。お金がないせいで、性能の低いハードウェアしか搭載できないかもしれません。人件費も確保できないため、スキルの低いエンジニアに開発を任せてしまうリスクもあります。

そうなると最悪の場合、製品のリリース後に重大な欠陥が発覚してリコールしなければいけません。こうなってしまってはまさに「安物買いの銭失い」です。

相場よりはるかに安い予算で開発を依頼することは避けましょう

開発を丸投げしない

コミュニケーションを怠り、開発を丸投げすることは危険です。順調に進んでいると思っていたのに、ふたを開けてみればまったく想定通りに進んでいないこともあり得ます。

要求定義や設計などステップ毎に進捗会議を開くなどして、適度にコミュニケーションを取りましょう。また疑問点があればその都度質問することも大切。

特に詳細設計や実装、単体テストの段階では、発注先が関わることはほとんどありません。開発会社が主体で進めている工程こそ、不明点があれば積極的に質問しましょう

※ここまで読んでも、どの開発会社を選べばよいか分からない方は、システム幹事にお問い合わせください。予算や目的などをヒアリングした上で、最適な開発会社を選定します。相談料・紹介料など一切かかりません。

【無料】おすすめの組み込みソフトウェア開発会社を紹介してもらう

組み込みソフトウェア開発におすすめの企業2選

ここでは、組み込みソフトウェア開発の外注におすすめの企業を2社紹介します。

それぞれに得意ジャンルや強みの技術があるので、自社のニーズにマッチした開発会社を選んでください。

株式会社RayArc

株式会社RayArc

画像引用:株式会社RayArc

株式会社RayArcは東京都新宿区に拠点を構えるシステム開発会社です。1983年の創業から、製品の組込系、制御系システムで40年近い実績を有しています。

近年ではIoTの開発にも着手するようになりました。具体的には、産業用ロボットのコントローラーやAIを活用したチャットボット、燃料電池のマイコンなど多様な業界で納入実績があります。

システム開発では、リサーチ・分析から保守・運用までシステム構築をトータルサポートしています。クライアントの要望に合わせて、自社での受託開発、客先で開発を行う常駐開発など幅広く対応しています。

開発会社

株式会社RayArc

本社所在地

東京都新宿区西新宿3-8-3 新都心丸善ビル2階

特徴

組み込みシステム開発で40年近い実績

主な開発実績

AIを利用したチャットボット

産業用ロボットコントローラー

燃料電池のマイコン

工場を管理するIoTシステム

車両点検機器

【無料】組み込みソフトウェア開発について相談する

株式会社エクセルソフト

株式会社エクセルソフト

画像引用:株式会社エクセルソフト

株式会社エクセルソフトは山形県山形市に本社を構えるシステム開発会社。1990年の設立からソフトウェアとハードウェアの受託開発で豊富な実績があります。

具体的には画像処理を応用した半導体の外観検査、プリンタや複合機をWindowsやLinuxなどのOSで起動させるためのドライバ開発、工場の生産ラインで使われるPLC(設備を制御するコントローラー)などの納入実績を保有しています。

エクセルソフトの強みはハードウェアの開発ノウハウが豊富なこと。クライアントのニーズに合わせてマイコンを選ぶだけでなく、市場に適した製品が無ければ自社で開発もしてくれます。
ハイスペックなハードウェアは国内外でも高く評価され、韓国や中国などアジア圏への輸出実績もあります。

組み込みシステムでハードウェアの性能は製品の品質を左右します。ソフトウェアだけでなくハードウェアの技術力も高いエクセルソフトなら、良きパートナーになってくれるでしょう。

開発会社

株式会社エクセルソフト

本社所在地

山形県山形市宮町1-12-12

特徴

ハードウェアを自社開発

主な開発実績

半導体移載機のPLCラダー開発

自動車関連部品製造装置PLCラダー開発

レーザーマーカー制御ソフトウェア開発

製品のトレーサビリティシステム開発

農産物選別機ソフトウェアの開発

ここまで読んで自社に合う開発会社が見つからなかった人は、下記の記事も参考にしてください。

関連記事組み込みシステムの開発に強い会社10選!

【無料】組み込みソフトウェア開発について相談する

組み込みソフトウェア開発のまとめ

組み込みソフトウェア開発の概要と開発の流れ、費用の相場、外注する際の注意点等について紹介しました。

  • 組み込みシステムにはIoTなどネットワークを応用した技術も登場している
  • システム基本設計ではハードウェアとソフトウェアの役割のバランスを考慮する
  • 組み込みソフトウェア要求定義では、異常時の処理をどうするか固める
  • 外注先を選ぶ際には、自社の業界への納品実績が豊富か確かめること

組み込みソフトウェアはWebアプリと異なり、ハードウェアや消費電力などの制約条件が厳しく、組み込む製品の特徴にも精通していなければいけません

それゆえに組み込みシステムは、開発会社の実績が製品の品質に直結しやすいシステムといえます。

どの開発会社に依頼すればいいか困っている人は、システム幹事にご相談ください。予算や目的から最適なツールや会社をご紹介します。相談料などは一切かかりません

コンサルタントのご紹介 システム幹事 コンサルタント 岩田真 岩田 専任のコンサルタントが、
お客様の予算と目的を丁寧にヒアリング。
最適な会社をピックアップ・ご紹介させていただきます!
初心者の方でも安心してご相談いただけます。

必ず開発会社に発注する必要はありません。システム開発の相場の情報から最適な会社選びまで無料でサポートします。お気軽にご相談ください。

【無料】おすすめの組み込みソフトウェア開発会社を紹介してもらう

Q. 組み込みソフトウェア開発とは何ですか?

組み込みソフトウェア開発とは、組み込みシステムが搭載されている製品を直接制御するプログラムのことです。CやC++、Javaなどさまざまな開発言語が用いられているの特徴があります。

Q. 組み込みソフトウェア開発を外注する際の注意点は?

組み込みソフトウェア開発を外注する際の注意点は「要件定義を明確にする」「ソフトウェアの仕様を固める」などです。詳細は記事内で紹介していますので、ぜひご覧ください。