Docker連携
Dockerの活用がもたらす組み込みソフトウェア開発の進化
近年、多くのソフトウェア開発で採用されるようになったオープンソースソフトウェアの「Docker」は、組み込みソフトウェア開発においても活用されるケースが増えてきています。
開発環境の共通化
開発部隊のチームに新しいメンバが参加した際、必ず開発環境をPCにセットアップするという作業が発生します。この開発環境のセットアップは、OSのディストリビューションやバージョン違い、関連パッケージの依存性の問題、あるいはヒューマンエラーによる手順誤りで手戻りが発生するなど、想定していたより時間がかかってしまうケースが多々あります。このような手作業により発生し得る環境構築の問題は、Dockerを用いてDockerイメージから誰が実行しても同じ開発環境を作成できるようにすることで解決できます。継続的インテグレーション(CI/CD)でのコンテナ活用
組み込みソフトウェア開発の場合、デプロイの自動化までは簡単に実現できないケースもありますが、ビルドの自動化は簡単に実現でき、それだけでもCIを導入することで大きな効果が見込めます。さらにコンテナを活用すると、複数のプロジェクトでビルド環境が違う場合であっても、コンテナ自体が独立しているためビルド環境の要件や依存パッケージが競合することはありません。 1 つのCIサーバーで複数プロジェクトのCIを実現できるということです。また、複数のビルド環境をより少ないリソースで実行できるため、リソースの効率的な活用が可能になります。イメージ図1:継続的インテグレーション(CI)での利用
<Jenkinsジョブの例>
- チェックアウト
- 構成管理ツール( Git や Subversion など)から最新のソースコードをチェックアウト
- Docker image 取得
- Docker Hub やプライベートレジストリからイメージを取得
- Docker コンテナ起動
- チェックアウトした最新のソースコードをマウントしてコンテナ起動
- ビルド
- コンテナ内のビルドツールチェインを使用してビルド確認
- Dockerコンテナ破棄
- 終了処理としてコンテナを破棄
Dockerコンテナ上のビルド環境を利用したテスト
Dockerを使って開発環境を共通化するのに加え、静的解析や単体テストのテストツールもDockerコンテナに加えることで、開発者のテストツールのセットアップも簡略化することが可能です。イメージ図2:「C/C++test」をDockerコンテナ内で利用するイメージ図
または、Dockerコンテナを運用する別のケースとして、複数の開発環境をそれぞれ異なるコンテナ上に作成している場合が考えられます。この場合、ホストOS上にインストールしたテストツールで、複数のDockerコンテナ内の開発環境を使い分けてテストを実施する方法もあります。
C/C++testは、このケースに合わせて、ホストOS上からDockerコンテナ内の開発環境を使用して静的解析や単体テストを実施することも可能です。
C/C++testは、このケースに合わせて、ホストOS上からDockerコンテナ内の開発環境を使用して静的解析や単体テストを実施することも可能です。
イメージ図3:「C/C++test」からDockerコンテナ内の環境を利用するイメージ図
この方法を用いると、既にJenkinsなどのCI/CD環境で複数のコンテナ上のプロジェクトに対してビルドしている場合も、簡単にC/C++testのテスト実行プロセスを組み込むことができます。Dockerのコンテナ上にC/C++testをインストールしないため、既存のJenkinsのジョブ実行においてDockerイメージから コンテナ作成 → ビルド・テスト → コンテナ破棄 というようにテストのステップを追加するだけで実現できます。
「C/C++test」はDockerコンテナでの作業をサポート
このように、「C/C++test」は、Dockerコンテナでの作業をサポートしています。 C/C++ ツールチェーンまたは Dockerコンテナによって提供されるテスト環境を使用して解析やテストを実行できます。これにより、コンテナ化された環境で「C/C++test」の機能を利用し、チームや複数の開発サイクルでの一貫性を確保することができます。PICK UP
イベント・セミナー
ニュース・キャンペーン
静的解析ツール・単体テストツール C/C++testに
関するお問い合わせ
テクマトリックス株式会社
東京本社ソフトウェアエンジニアリング事業部
03-4405-7853
- メールでのお問い合わせ
- parasoft-info@techmatrix.co.jp