提供:テクマトリックス株式会社
近年、組み込みソフトウェア開発の現場では、モダンC++が急速に広がりつつある。それにより、オープンソースのユニットテストフレームワークであるGoogleTestの採用ニーズが高まる一方だ。理由としては、例えばCI/CDパイプラインへの統合が容易で、学習コストも低いといった実用上の大きな利点がある。
その一方で、自動車・産業機器・医療機器といった機能安全規格への準拠が求められる開発現場では、GoogleTestを使いたくとも使えないジレンマがあるのも事実だ。というのも、GoogleTestはオープンソースであるためツール認証のサポートが存在せず、ユーザー自身が個々にツール適格性評価を実施しなければならない。IPA(情報処理推進機構)の実験によれば、その工数は何と402.5時間にのぼったという※。
では、モダンC++開発を志向するエンジニアは、この壁をどう乗り越えれば良いのか。テクマトリックス株式会社 技術担当の藤澤 克貴氏と営業担当の岩淵 敏之氏に伺った。
※【参照】車載システム開発時に使用するソフトウェアツールをISO 26262 の要求事項に準拠させるための作業項目の抽出と考察
https://www.ipa.go.jp/archive/files/000026859.pdf
モダン化が進む組み込み開発の現場で
GoogleTestが選ばれる理由
欧米の自動車業界では今、組み込みソフトウェア開発に大きな変革が訪れている。テクマトリックス技術担当の藤澤氏によれば、大きく2つのトレンドがあるという。「モダンC++での開発の増加」と「開発ワークフローのモダン化」だ。

そもそも「モダンC++」とは安全で効率的なソフトウェアを簡潔に記述できるよう進化した、現代のC++言語の総称だ。開発ワークフローのモダン化は、Visual Studio Codeなどの開発環境のみならず周辺のインフラ周りにも及んでいる。その典型的な例が、ホスト環境のLinux化とビルド環境やテスト環境のコンテナ化だ。
「さらに最近では、そのコンテナをコードで管理して、開発環境のバージョンアップの際の差分確認や、チームメンバーに全く同一の環境を提供する、あるいはセットアップを簡略化するといった活用法が、組み込みの分野でも一般的になってきています」(藤澤氏)
開発ワークフローのモダン化におけるもう1つの大きな要素として「CI=継続的インテグレーションによる自動化」が挙げられる。とりわけ欧米の車載系の開発では、CIの導入やビルドの自動化に加えて、コンプライアンスの準拠=機能安全に関する違反や、準拠できていない部分がないかチェックする工程までを、すべて自動化する方向に向かいつつある。
こうした流れの中で、GoogleTestの存在感がひときわ高まっているという。大規模化する一方の車載系開発では、ビルド時間を短縮できるBazelやCMakeといったツールが用いられることが多い。GoogleTestはそうしたビルドシステムへの統合が簡単なのに加え、CI/CDパイプラインとの高い親和性、そしてオープンソースゆえの豊富な情報資産と利用経験者の多さが背景にあると藤澤氏は分析する。
「加えて、有償の単体テストツールはGUI環境や拡張機能が豊富であるがゆえに、それが軽量な動作を妨げてしまう場合があります。その点GoogleTestはコードベースのライブラリなので、比較的ビルドシステムやパイプラインに統合しやすい点も、人気の理由の1つだと思います」(藤澤氏)
また自動車業界では現在、AIやセキュリティなど、既存の自動車開発以外の領域からエンジニアを積極的に採用しているため「ツールのセットアップやトレーニングのコストを抑え、新たなメンバーの早期立ち上げにつながることも、GoogleTestが選ばれる主なポイント」だと藤澤氏は指摘する。
「使いたくても使えない」
~機能安全開発とツール認証というハードル
とはいうものの、機能安全規格への対応が求められる現場では、便利だからといってすぐにGoogleTestを採用できない事情がある。というのもISO 26262(自動車)、IEC 61508(産業機器)、IEC 62304(医療機器)などの機能安全規格は、テストツールの利用にあたって「ツール認証」または「ツール適格性評価」を、開発の開始前に実施することが一般的であるからだ。
なぜ、それほどに厳しいのか。「検証されていないテストツールを使うということは、テストの方法や手順が正しくとも、肝心のテストツール自体にバグがあったら、誤った結果を出してしまう可能性があるからです。人命に関わる分野では、そのリスクは許容されません」と藤澤氏は言い切る。
しかしGoogleTestはオープンソースなので、当然ながらツール認証に関するサポートは提供されていない。妥当性の証明はすべてユーザー側の責任であり、ツールの使用実績・実行結果の検証ドキュメントを自社で整備した上で、第三者認証を受けることが基本である。
その負荷は、数字で見るとかなりのものだ。IPAが過去に行った実験では、ISO 26262の開発においてツール適格性評価を自社で実施した場合、トータルで402.5時間を要したという記録がある。
「これを業務という側面から考えると、実現はかなり難しい。本題であるソフトウェア開発を始める前に、これだけの時間と労力というハードルをクリアしなくてはならないからです。今回ご紹介するC/C++test CTの開発元であり経験豊富なParasoft社でも、ツール認証の取得には評価・第三者認証を合わせてトータルで6~12か月はかかる傾向があるものだといいます」(藤澤氏)
加えて、この認証のための作業は1回で終わりではない。GoogleTestのバージョンを上げるたびに、同様の評価を繰り返す必要がある。こうした現実を前に「プロトタイプや研究開発の段階ではGoogleTestを使っていても、量産・製品化の段階では有償ツールに置き換えてテストした上でリリースする」という対応が、多くの現場で行われていると藤澤氏は明かす。
TÜV認証済みGoogleTestを
パッケージで提供する「新しいアプローチ」
GoogleTestを使いたいという開発者の意志と、機能安全規格が課すツール認証の壁。このジレンマを解消するために生まれたのが、今回ご紹介する「C/C++test CT 2025.2」(以下、C/C++test CT)だ。これは、米国Parasoft社が開発したC言語/C++言語対応テストツールであり、日本国内ではテクマトリックスが2026年3月30日から提供を開始している。
【「C/C++test CT」製品ページ】
https://www.techmatrix.co.jp/product/ctest-ct/index.html
C/C++test CTは、そのパッケージにツール認証済みの最新バージョンであるGoogleTest 1.17.0を含んだ統合テストソリューションで、国際的な第三者認証機関であるTÜV SÜDのツール認証を取得している。対応する機能安全規格は、IEC 61508-3:2010、IEC 62304:2015、ISO 26262-8:2018、EN 50716:2023の4種類だ。
「C/C++test CTの最大の特徴は『GoogleTestを機能安全開発に使えるようにする』点にあります。では、なぜ『使える』のか。それは、GoogleTestというツール自体の信頼性を、Parasoftが開発者に代わって証明しているからです」(藤澤氏)。
GoogleTestはオープンソースなので、そのAPIが正しく動くかどうかの保証はあらかじめ提供されていない。そこでParasoftはGoogleTestのAPIを一つひとつ検証し、『このAPIは正しく動く』と検証済みであることのお墨付きをTÜV SÜDから取得したうえで、パッケージとして提供している。つまりC/C++test CTがユーザーの手元に届いた時点で、GoogleTestの妥当性はすでに第三者認証済みだ。このためユーザーは、自らツールを検証する手間をかけず、そのままGoogleTestのテストケースを機能安全の開発に使うことができるのだ。
これがユーザーにもたらすメリットは大きい。まず数百時間ともいわれる膨大な適格性評価コストが完全にゼロになる。さらにGoogleTestのバージョンアップ時には、C/C++test CTが追従して新たに認証を取得。新バージョンとして提供するため、ユーザー側の再評価コストも発生しない。
「GoogleTestのバージョンが上がっても、ユーザーから見たツール認証のコストは完全にゼロのままです」(藤澤氏)。
機能安全規格が単体テストツールに求める要件という観点でも、C/C++test CTは包括的なカバーを実現している。
まずISO 26262が求める構造カバレッジメトリクスについては完全に対応しており、C0(ステートメント)、C1(判断文)、C2(単純条件)、MC/DCを含む8種類のカバレッジ計測に対応している。「オープンソースのカバレッジ計測ツールだとMC/DCが取得できないケースがありますが、C/C++test CTはそこも含めて、機能安全で求められるカバレッジをすべて網羅しています」と藤澤氏は語る。
要件ベースのテストとトレーサビリティについては、付属ツールのParasoft DTPを経由してALMツール(Azure DevOps、Jira+Xray、Polarion ALMなど)と連携し、要件とテストケースの双方向トレーサビリティを確保できる。フォールトインジェクションテストはGoogleMockによって対応可能だ。ISO 26262の3つの主要要求を、C/C++test CTが一括して受け止める設計になっている。
MCPサーバーによるAI連携が
機能安全対応のテストを次のステージへ
機能安全対応というコア機能に加えて、C/C++test CTにはもう1つの革新的なアドバンテージがある。MCP(Model Context Protocol)サーバーを活用した、AIエージェント連携機能だ。
MCPとは、AIエージェントが外部のシステムやデータにアクセスするための「ブリッジ」となる標準規格だ。C/C++test CTのMCPサーバーは、カバレッジデータやユーザーガイドといったツール固有の構造化データを、AIエージェントにシームレスに提供する。
「MCPサーバーはAIエージェントが自動的に推論し、品質問題に対処するために必須のデータセットを公開します。例えばAIエージェントだけだと、今のテストでどの行がカバーできていないかは分かりません。MCPサーバーを介してその情報を受け取ることで、より精度の高い回答や提案ができるようになります」(藤澤氏)
ここでは具体的なユースケースとして「不足カバレッジへのテストケース生成」「到達不可能コードへのカバレッジ抑制」の2つを見てみよう。
まず前者は、テスト実行の結果で不足している行カバレッジを満たすGoogleTestのテストケースを自動で生成する作業だ。C/C++test CTのみが持つ不足している行カバレッジのデータを用いることで、より高度な作業をAIエージェントに依頼し、より精度の高い結果を得られるようになる。
後者はやや専門的だが、到達不能コードにおけるカバレッジの自動抑制だ。不足しているカバレッジに到達不能コードが存在しているかはC/C++test CTが持つデータだ。「低レベルハードウェアに特化したコードや複雑なエラー処理コードなど、到達できないが残しておくべき実装においてカバレッジ分母から減らし、抑制理由のエビデンスと100%カバーしたエビデンスをレポートできることは機能安全開発ではニーズの高い機能です。AIエージェントはMCPサーバーから到達不能行情報とC/C++test CTでカバレッジ抑制を設定する方法を受け取り、自動でカバレッジ抑制を適用することが可能になります」(藤澤氏)。
従来、テストカバレッジが不足しているかどうかは、開発者自身が計測結果を見て追加の指示を行っていた。それをAIが提案してくれるので、開発者はその内容に誤りがないかレビューするだけで良い。「開発者自身がゼロから考えてすべての指示を書かずに済むため、労力と時間の大幅な削減が期待できます」と藤澤氏は言う。
これに加えて、岩淵氏は既存のGoogleTestユーザーにとっての具体的なシナリオを紹介する。すでにGoogleTestのテスト資産がある現場で新たに機能追加が行われた場合、その部分はテストが不足していたり、通せないコードが生じることがある。

この場合、C/C++test CTのMCPサーバーを介して既存部分のカバレッジデータをAIエージェントに渡すと、AIが不足や通せない箇所を把握した上で追加のテストケースの作成や抑制の適用を提案してくれるのだ。
「GoogleTestだけでは、こうしたAI連携はできません。C/C++test CTを使うことで、蓄積されたカバレッジデータをAIが参照できるようになり、テスト品質と効率の両方を上げていけるのです」(岩淵氏)
国内ベンダーによる密着型のサポートで
日本の機能安全開発を支える
テクマトリックスはC/C++test CTの国内総販売代理店として、日本語によるサポートから技術支援、自動化コンサルティングまでを一貫して提供する体制を整えている。現時点ではC/C++test CTにおいては車載系、特にADASや自動運転関連の開発現場を主なユーザーと考えているが、今後は産業機器や医療機器分野にも、積極的に取り組んでいくという。
具体的には、静的解析・単体テストツールC/C++testや、OSSライセンス&セキュリティ管理ツールFossID、Clarityなどの販売実績から、機能安全規格への準拠が求められる開発現場にユーザーを持っている点を強みに展開を進めていく方針だ。
「GoogleTestを使って機能安全対応に取り組む皆さまが、ツール適格性評価の苦労から解放され、本来の開発業務に注力できる環境を提供していくのが、C/C++test CTの最も重要なテーマです。さらにAI連携によってテスト工程に占める人的負荷を減らし、日本の組み込み開発をより良くしていきたいと願っています」と抱負を語る岩淵氏。テクマトリックスとC/C++test CTが、機能安全の開発現場にもたらす変革に、引き続き注目していきたい。
