組込開発もモダナイズできる!
開発スピードアップと品質の両立、そして現場負担を減らし効率化を図る。という動きが大きくなってきています。
GitLabが提案する組込開発の課題とソリューションをぜひご参考ください。
以下はGitLab社のブログを引用・翻訳しております。原文を確認される場合はこちらから。
======================================================
自動化されたハードウェア テスト、標準ビルド、共同ワークフロー、統合コンプライアンスによってファームウェア開発のボトルネックを解消する方法を紹介します。
従来の組み込み開発アプローチでは、現代の機械のソフトウェア課題に効果的に対処できません。この欠点は、次のような課題を悪化させ、エンジニアの開発を遅らせます。
- ハードウェアテストのボトルネック
- 一貫性のないビルド環境
- サイロ化された開発手法
- 手動の機能安全コンプライアンスプロセス
組み込み開発者は、急増するコードに対処するための新たなアプローチを必要としています。この記事では、GitLabのAIネイティブDevSecOpsプラットフォームを活用して、フィードバックループを短縮し、協調的かつ反復的な作業を行い、コンプライアンスを効率化する4つの方法を説明します。
課題1: ハードウェアテストのボトルネック
事実上あらゆるクラウドサーバーで実行できるエンタープライズソフトウェアとは異なり、組み込み自動車ソフトウェアは、実稼働環境に厳密に適合する専用ハードウェア上でテストする必要があります。従来のハードウェア・イン・ザ・ループ(HIL)テストプロセスは、多くの場合、以下のパターンに従います。
- 開発者は組み込みシステム(例:電子制御ユニット)用のコードを作成します。
- 限られた高価なハードウェアテストベンチ(1台あたり50万ドル~1,000万ドル)へのアクセスを要求している
- 予定されたアクセスウィンドウまで数日または数週間待つ
- デスク上の物理ハードウェアにコードを手動で展開してテストする
- 結果を文書化し、ハードウェアを次の開発者に渡し、ハードウェアテストのキューの最後尾に進みます。
このプロセスは非常に非効率的です。組み込み開発者は、今日コードを書き終えても、ハードウェアターゲット上でテストするまで数週間待つことがあります。その頃には、彼らはすでに他の作業に移っています。このコンテキストスイッチは生産性を低下させます。それだけでなく、開発者はコードに単純な計算エラーがあったことに気づくまでに数週間もかかる可能性があります。
解決: 自動化されたハードウェア割り当てと継続的インテグレーション
CI/CDコンポーネントであるGitLabオンプレミスデバイスクラウドを使用した自動化により、ハードウェアテストを効率化できます。これにより、希少なハードウェアリソースのオーケストレーションを自動化し、時間のかかる手作業を、効率的で継続的なワークフローに変えることができます。
オンプレミスのデバイスクラウド:
- 共有ハードウェアリソースのプールを作成する
- 可用性に基づいて、開発者のハードウェアテストパイプラインタスクにハードウェアを自動的かつ排他的に割り当てます。
- 手動介入なしでテストを展開および実行します
- 統合パイプラインを通じて結果を収集し報告する
- ハードウェアを自動的に「利用可能な」プールに割り当て解除します
コードを送信すると、数日ではなく数時間で結果が届きます。多くの場合、テスト ハードウェアに物理的に触れる必要もありません。
このビデオでは、HIL の共有ハードウェアのリモート割り当てをオーケストレーションするための GitLab オンプレミス デバイス クラウド CI/CD コンポーネントを紹介します。
スピードと品質のバランスをとる多角的なテスト戦略を採用することもできます。以下の組み込みテストパターンと環境を、自動化されたGitLab CIパイプラインに組み込んでください。
- ソフトウェア・イン・ザ・ループ(SIL):仮想ハードウェアシミュレータ上でテストし、より迅速な初期フィードバックを得る
- プロセッサインザループ(PIL):代表的なプロセッサハードウェアでテストし、より低コストでより迅速なフィードバックを実現
- ハードウェア・イン・ザ・ループ(HIL):後期検証のための完全な生産相当のハードウェアとテストベンチでのテスト
CI パイプライン内でこれらのテストのオーケストレーションを自動化することで、問題をより早く特定し、より速く反復し、市場投入までの時間を短縮できるようになります。
課題2: 一貫性のないビルド環境
組み込み開発におけるもう一つの大きな課題は、ビルド環境の不整合です。組み込み開発者は、多くの場合、構成、コンパイラバージョン、依存関係が異なるローカルマシンで手動でビルドを実行します。そして、ローカルビルドからバイナリを共有コードベースに貼り付けます。
このアプローチではいくつかの問題が発生します。
- 一貫性のない出力:同じソースコードのビルドが異なるマシンで異なる結果を生成する
- 「自分のマシンでは動作する」症候群:ローカルでビルドされたコードが共有環境では失敗する
- 追跡可能性が低い:誰が何をいつ構築したかの監査証跡が限られている
- 知識サイロ:専門知識が少数の個人に集中する
このアプローチは、エラー、ボトルネック、コストのかかる遅延につながる可能性があります。
解決: 標準化されたビルド自動化
これらの課題は、GitLabのCI/CDパイプライン内に標準化されたビルド自動化を実装することで解決できます。このアプローチにより、マシン固有のばらつきを排除し、一貫性と再現性に優れたコンテナベースのビルド環境を構築できます。組み込みのGateway Runnerプロビジョニングスクリプトを使用することで、コンテナはハードウェアと連携してフラッシュやポート監視を行い、自動テストを実行できます。
このソリューションの主な要素は次のとおりです。
- ライフサイクル管理された環境:複雑な組み込みシミュレーション環境をコードとして定義し、テスト用の環境を自動的に展開し、その後破棄します。
- コンテナ化: Dockerコンテナを使用して、同一のビルド環境を確保する
- 自動化された依存関係管理:すべての依存関係を制御およびバージョン管理
- 集中ビルド実行:ローカルマシンではなく共有インフラストラクチャ上でビルドを実行します
このチュートリアルに従って、GitLab CI パイプライン内で組み込みソフトウェア ビルドを自動化する方法を学習します。
ビルドプロセスを標準化・自動化することで、すべてのビルドが同じ依存関係を持つ同じ手順で実行されるようになり、誰がビルドを開始したかに関わらず、一貫した出力が生成されます。これにより、品質が向上するだけでなく、ビルドプロセスが民主化され、専門知識を持たないチームメンバーでも参加できるようになります。
課題3: サイロ化された開発手法
企業の開発チームは、共有ソースコード管理(SCM)と継続的インテグレーション/継続的デリバリー(CI/CD)システムを基盤とするDevOpsなどのコラボレーション手法を広く採用しています。一方、組み込み開発者は、これまでデスクで一人で作業してきました。これには、正当な技術的理由があります。
例えば、DevOps自動化の重要な実現要因であるハードウェア仮想化を考えてみましょう。組み込みシステムで使用される膨大な種類の専用プロセッサやボードの仮想化は、業界ではこれまで遅れをとってきました。これは主に、実稼働のリアルタイムシステムの仮想化の難しさと、それに伴う経済的インセンティブの欠如によるものです。これに対し、10年以上にわたりコモディティ化が進み、エンタープライズSaaS開発にメリットをもたらしてきたクラウド仮想化と比較してみましょう。
多くのプロバイダーは、組み込み開発のスピードアップを目指し、仮想化ファーストの採用を進めています。しかし、チームが仮想テストオプションを導入しなかった場合、サイロ化された環境が維持され、以下のような形でビジネスに悪影響を及ぼします。
- 知識の断片化:重要な洞察が個人やチームに散在したままになっている
- 冗長開発:複数のチームが同一の問題を解決するため、矛盾が生じる
- ビッグバン統合中の後期段階の発見: 複数の開発者が一度にコードを統合するプロセスの後期段階で問題が発見され、エラーの修正コストが高くなります。
- イノベーションの阻害:ある分野のソリューションが他の分野に影響を与えることはほとんどなく、新製品のアイデア開発を妨げている。
解決: 統合プラットフォームによる共同エンジニアリング
こうしたサイロ化を打破するための重要なステップは、GitLabの統合DevSecOpsプラットフォームを中心に組み込み開発を標準化することです。この点において、GitLabは組み込みシステムから組み込みデバイス上のより統合された共有プラットフォームへの移行に積極的に取り組んでいます。GitLabは以下を実現します。
- 可視性の共有:すべてのコード、問題、ドキュメントをチーム間で可視化します
- 共同ワークフロー:マージリクエストを通じてピアレビューと知識共有を可能にする
- 知識の集中化:すべての開発成果物について、単一の真実の情報源を維持する
- 非同期コラボレーション:異なる場所やタイムゾーンにまたがってチームが共同作業できるようにします
人間とAIエージェントのコラボレーションは、デジタルネイティブや既存の組み込みブランドが求める顧客対応型イノベーションを推進するための重要な要素です。GitLabは、人間とAIのコラボレーションも可能にします。開発ライフサイクル全体にわたる透明性を確保することで、GitLabは組み込み開発を孤立した活動から共同作業へと変革します。エンジニアは互いの作業進捗を確認し、共通の経験から学び、共有されたソリューションに基づいて構築することができます。
Embedded World Germany 2025でのプレゼンテーションをご覧ください。組み込み開発者が「進行中の作業」を共有し、共同作業を行うことのメリットを解説しています。24:42から36:51までのデモ部分では、HILをGitLab CIパイプラインに統合し、共同開発を実現する方法をご覧いただけます。
おそらく最も重要なのは、DevSecOpsを通じてより緊密なコラボレーションを実現することで、チームはこれまで埋もれていた組み込みシステムのイノベーションを解き放つことができるということです。実際、コラボレーションはイノベーションの原動力となります。例えば、ある研究では、適切に構成されたグループでのブレインストーミングは、個人で作業するよりも革新的で創造的な成果につながる可能性があることが示されています。ソフトウェア定義製品の開発競争において、協働開発は不可欠です。
課題4: 手動による機能安全コンプライアンスプロセス
自動車産業や航空宇宙産業の組み込みシステムは、ISO 26262、MISRA C/C++、DO-178C、DO-254といった厳格な機能安全規格に準拠する必要があります。従来のコンプライアンス対応では、手作業によるレビュー、膨大なドキュメント作成、そして開発サイクルの終盤で行われる個別の検証作業が伴います。これがセキュリティレビューのボトルネックとなることがよくあります。専用の組み込みセキュリティおよびコード品質スキャナが開発者のコードに脆弱性を検出すると、そのスキャン問題は未解決の問題の山に積み上げられてしまいます。開発者はコードを統合できず、セキュリティ担当者はコード違反のバックログを精査しなければなりません。これが遅延を引き起こし、コンプライアンスの遵守をさらに困難にします。
いくつかの課題は次のように要約できます。
- 後期段階のコンプライアンス問題:開発完了後に発見される問題
- 文書化の負担: コンプライアンス証拠の作成と維持に多大な手作業が必要
- プロセスのボトルネック: 開発の進行を妨げる一連のコンプライアンス活動
- 専門知識への依存:コンプライアンス活動において限られた専門家への依存
その結果、チームは速度とコンプライアンスのどちらかを選択しなければならないことが多くなります。これは、安全性が重要となるシステムでは危険なトレードオフです。
解決: 自動化された機能安全コンプライアンスワークフローの構成要素
セキュリティとコンプライアンスを開発後の検証活動として扱うのではなく、GitLabのカスタマイズ可能なフレームワークを通じてコンプライアンス要件を体系化し、自動的に適用することができます。特に機能安全規格においては、GitLabを専用の組み込みツールと統合することで、機能安全規格で求められる詳細なファームウェアスキャンを実現できます。また、GitLabは自動コンプライアンスチェック、完全な監査証跡、マージリクエストゲーティングなど、堅牢で継続的なコンプライアンスプログラムをサポートするために必要な機能をすべて備えています。
この統合アプローチには以下が含まれます。
- コンプライアンス・アズ・コード:コンプライアンス要件を自動チェックとして定義する
- 統合された専門ツール: CodeSonar などのツールを DevSecOps プラットフォームに接続して自動車特有のコンプライアンスを実現します。
- 継続的なコンプライアンス検証:開発全体を通じて要件を検証します
- 自動証拠収集:開発の副産物としてコンプライアンス成果物を収集します
この動画では、GitLabのカスタムコンプライアンスフレームワークを使用して独自のコンプライアンスポリシーを作成する方法を説明します。あらゆる標準(例:ISO 26262)に関連するコンプライアンスポリシーを作成し、GitLabで自動的に適用できます。
コンプライアンスをシフトレフト化し、通常の開発ワークフローに組み込むことで、速度を犠牲にすることなく安全基準を維持できます。自動チェックにより、問題を早期に発見し、修正が容易かつ低コストで済むようになります。また、継続的な証拠収集により、ドキュメント作成の負担を軽減できます。
組み込みDevOpsの力を実現する
組み込み開発は急速に変化しています。手作業のプロセスや孤立したワークフローに固執するチームは、ますます取り残されていくでしょう。一方、自動化された協調的な手法を採用するチームが、ソフトウェア定義のスマートシステムの未来を決定づけるでしょう。
組み込み DevOps ワークショップをご覧になり、GitLab を使用して組み込み開発ワークフローの自動化を開始するか、GitLab のフィールド チーフ クラウド アーキテクトによるこのプレゼンテーションを見て、大手組織がハードウェアインザループ テストを継続的インテグレーション ワークフローに取り入れて組み込み開発を加速する方法を学んでください。
もっと詳しく知る
弊社パートナー様はNetworld Dev Portal アカウント(無料)登録いただくと、GitLabパートナー制度や DevSecOps関連提案資料などのパートナー限定コンテンツがご覧いただけます。
DevSecOps全般、GitLab製品または本サイトについては以下よりお問い合わせ下さい。