
組込みシステムの開発において、継続的インテグレーション(CI)と継続的デリバリー(CD)の導入は、開発効率と品質を飛躍的に向上させる鍵となります。ハードウェア依存のテストやリアルタイム性の要求など、一般的なソフトウェア開発とは異なる課題を持つ組込み開発ですが、CI/CDの導入はこれらの課題を克服し、大きなメリットをもたらします。
CI/CD構築のメリット
組込み開発にCI/CDを導入することで、以下のようなメリットが期待できます。
品質向上とバグの早期発見
コードの変更時に自動テストを実行することで、早い段階で不具合を発見し、デバッグコストの削減と手戻りの防止につながります。単体テスト(C-Unit、Unityなど)や結合テストを通じて、バグを早期に発見することが可能です。
ビルドの自動化で開発スピード向上
異なるハードウェアやコンパイラバージョンを使い分ける組込み開発では、手動ビルドによるミスが発生しがちです。CI/CDによりビルド環境構築を含めたビルドを自動化することで、誤った環境でのビルドを防ぎ、開発スピードを向上させます。
ハードウェアを意識した自動デプロイ
ファームウェアの更新は手間がかかる作業ですが、CI/CDを活用することで、リポジトリへのプッシュをトリガーにファームウェアを自動ビルドし、成功すればテスト環境のマイコンへ自動的にプログラムをフラッシュ(書き込み)するといったことが可能になります。これにより、テスト担当者は常に最新のファームウェアでテストできる環境を構築できます。
長期運用を考慮したバージョン管理
組込みシステムは長期間運用されることが多いため、バージョン管理は非常に重要です。CI/CDを利用することで、タグ付きファームウェアのアーカイブや特定バージョンへの簡単なロールバック、コミット履歴からのリリースノート自動生成などが可能になり、トラブル発生時の対応をスムーズにします。
セキュリティ向上
脆弱性チェックなどのセキュリティ対策もCI/CDで自動化できます。IoT機器や車載機器など重要なシステムに組込みデバイスが使われることが多いため、静的解析ツールなどを活用し、自動的にセキュリティチェックを行うことが重要です。
CI導入によるビルドとテストの自動化フロー
一般的なCI/CDのワークフローは以下の通りです。
開発者がIAR Embedded Workbenchでコードを開発し、Gitなどのバージョン管理ツールにプッシュします。これにより、JenkinsなどのCIツールがジョブ(パイプライン)を実行します。このジョブには、ビルド、静的解析(C-STAT)、単体テスト(シミュレータまたは実機)、そしてターゲットボードへのファームウェアの書き込みとプログラム実行といった工程が含まれます。テストが完了したソースコードやファームウェアは、それぞれのリポジトリや成果物格納場所に自動的に格納されます。
IARプロジェクトにおけるバージョン管理すべきファイル
IARプロジェクトをバージョン管理する際には、以下のファイルを適切に管理することが推奨されます。
常にバージョン管理すべきファイル
- すべてのソースファイル
- プロジェクトファイル (.ewp):ビルドの手順がすべて含まれるメイクファイルのようなものです。
プロジェクトで使用している場合にバージョン管理すべきファイル
- カスタマイズされたリンカ設定ファイル (.icf)
- カスタマイズされたボード記述ファイル(フラッシュローダ設定ファイル) (.board)
- 独自のC-SPYマクロファイル (.mac)
- カスタム引数変数ファイル (.custom_argvars)
- カスタムビルドやビルドアクションで使用されるファイル(例: .batファイルなど)
作業方法に応じてバージョン管理した方が良いファイル
- C-STATやC-RUNを使用している場合の.ewtファイル
- デバッガ設定ファイル (.ewd)
- ワークスペースファイル (.eww)
バージョンコントロールの必要のないファイル
settingsフォルダ内のファイル:頻繁に更新されるため、バージョン管理は不要です。
- ビルド構成名のフォルダ内の出力ファイル(バイナリファイル、オブジェクトファイルなど):必要なときに再生成が可能です。
IAR Build Toolsで実現するCI/CD
IARシステムズは、継続的インテグレーション向けの製品として「IAR Build Tools」を提供しています。これはコマンドライン(CLI)実行専用のツールで、IAR Embedded Workbenchと同じバージョンで同時リリースされます。
IAR Build Toolsでできること
- ビルド: IAR独自のコンパイラ(iarbuild, iccarm, iasmarm, ilinkarmなど)を使用してビルドを実行します。IAR Embedded Workbenchで作成したプロジェクトファイル(.ewp)を基に、すべての再ビルド、変更点のみのメイク、クリーンなどの機能が利用可能です。
- C-STAT静的解析: ライセンスオプションを追加している場合、CERTやMISRA-Cなどのコーディングルールに基づき、コードの潜在的な問題をチェックできます。C-STAT解析の実行やHTMLレポートの生成が可能です。
- プログラムと実行(cspybat): コマンドラインでC-SPYデバッガを実行するユーティリティが含まれており、プロジェクトオプションのデバッガ設定に従って、ファームウェアイメージの書き込みとプログラム実行が可能です。
マルチプラットフォーム対応
IAR Build Toolsは、Ubuntu、Red Hat (v9.20以降)、Windows (v9.20以降) といった複数のプラットフォームをサポートしており、一つのライセンスでどのプラットフォームでも選択して利用できます。
VS Code拡張
IARはVisual Studio Code向けに「IAR Build拡張」と「IAR C-SPY Debug拡張」を提供しており、VS Code上からIAR Embedded Workbenchプロジェクトのビルド、C-STAT静的解析、デバッグ(シミュレータ、実機)を行うことが可能です。
効率を生産性を最大限に引き出そう
組込み開発におけるCI/CDの導入は、品質向上、開発スピードの加速、デプロイの効率化、堅牢なバージョン管理、そしてセキュリティ強化といった多岐にわたるメリットをもたらします。IARシステムズは、IAR Embedded WorkbenchとIAR Build Toolsをはじめとする様々なソリューションを通じて、皆様のCI/CD環境構築を強力に支援します。これらのツールを活用することで、組込み開発の効率と生産性を最大限に引き出し、より高品質な製品開発を実現できます。
なお、本記事の内容をより詳しく学びたい人方はオンデマンド動画の視聴がおすすめです。動画ではデモを確認することができます。