- 詳細解説
- 業界別IoTシステムの活用例
第12回
AIコーディング時代到来、組込みシステム開発で求められる新たな品質管理の視点とは
生成AIを活用してソフトウエアのソースコードを自動作成する「AIコーディング」は、パソコンなどのアプリケーションだけでなく、組込みシステムのソフトウエア開発にも波及してきています。有効活用すれば、組込みシステムの開発効率がケタ違いに向上しそうです。ただし、驚異的な効率化の裏で、組込み特有の厳しい制約を脅かすバグやハルシネーションが発生する課題も浮き彫りになっています。今回は、これからのAIをフル活用した組込みシステム開発で求められる、新たなコーディング品質管理のあり方を紐解きます。
AI活用による自動化・効率化が進んでいる
AIコーディングというソフト開発の新潮流、組込み開発にも波及
AIを利用し、欲しいソフトウエアを自動生成する「AIコーディング」の活用が、様々な情報システムの開発現場で急速に広がってきました。AI支援開発や自動コード生成とも呼ばれ、その適用領域は、ウエブやPC・スマホのアプリケーションの開発から業務システムの開発まで多岐にわたっています。
ハードウエアの高性能化と開発言語の進化により、現在では、あらゆるシステム開発を開発言語で行うことは当たり前になっています。そのため、AIコーディングの応用は、組込みシステムのソフトウエア開発やロボット・産業機器などの制御プログラム、さらには電子機器や半導体チップのハードウエア設計、製造プロセス開発にまで拡大してきています。これらの開発は、これまで例外なく、長時間、多くの人員、多額のコストを投じて行われる専門性の高い作業でした。そんな難度の高い作業が自動化・効率化できるわけです。
例えば、組込みシステム向けソフトの開発においても、マイコンのドライバーコードの生成といった小規模なものから、高レベルの安全性・信頼性が求められる車載ソフトといった大規模な開発まで、さらにはMATLAB/Simulinkなどで作った制御モデルからのコード生成、開発したシステムを検証するテストの自動生成など、多種多様なシーンで利用されています。
AIコーディングが活用されるようになった
さらに、現在のAIコーディングは、単なる自動化・効率化の手段だけにとどまらなくなってきました。効率化によって生まれた時間を、より価値ある開発対象の探究に振り向けたり、エンジニアの属人的な常識や経験などにとらわれない斬新なコードを開発したり、コーディングの専門知識がない他分野の専門家による独自システムの開発を可能にしたりと、開発対象システムの価値や質の飛躍的向上を後押しする効果が期待されています。
AIコーディングの課題とは? これからのシステム開発で求められる品質管理
このように、既に、あらゆるシステム開発に不可欠な手段となりつつあるAIコーディングですが、多くのメリットが得られる一方で、これまでとは異質な課題が顕在化してきています。AIで生成したコードの品質を検証・担保するために、新たな知識・スキル・手段が求められるようになったのです。AIコーディングを効果的に活用し、その可能性を最大限まで引き出すためには、AIコーディングの活用を前提とした品質管理手法の再定義が必須になります。ここからは、組込みシステム向けソフトの開発を例に取って、これからのシステム開発で求められる品質管理のあり方を紹介します。
コーディングに利用する生成AIは、開発目的に沿わない不適合なコードや動作しないコードを生成してしまう可能性があります。生成AIを利用したことがある人なら経験したことがあるであろう、もっともらしい嘘、いわゆる「ハルシネーション(幻覚)」が紛れ込むのです。しかも厄介なことに、一般にコードの生成過程はブラックボックスであるため、ハルシネーションが発生した根拠がわからず、対処が困難です。
満たすのに向いていない
数ある情報システムの中でも、組込みシステムは、単に生成したコードが動けば良いのではなく、多様で厳しい制約の下で確実に正しく動くことが求められます。ところがAIは、こうした組込みシステム固有の開発要件の遵守が苦手な傾向があります。
例えば、組込みシステム用ソフトでは必須となる最悪実行時間(Worst Case Execution Time)を規定内に収めることや、割り込み遅延の抑制などのリアルタイム性の保証といった開発要件の遵守が得意ではありません。さらに、生成したコードには存在しないレジスタの利用や間違ったビット定義、異なるマイコン仕様への対応など、実装するハード固有の仕様にそぐわないコードをそれらしく生成することもあります。自動車のブレーキや医療機器など、極めて高レベルの安全性・信頼性が求められるシステム向けソフトの開発では、こうしたAIコードをそのまま利用することができません。
コーディング後の「チェック」と「レビュー」のあり方と手法の再定義が求められる
一般に、開発したソフトの品質管理では、「チェック」と「レビュー」という目的・深さ・担当者が異なる2つの作業が行われます。AIコーディング時代には、「チェック」と「レビュー」それぞれにおいて、効果的で効率的な検証手段の確立が求められます。
「チェック」と「レビュー」の違い
「チェック」とは、決められた基準に照らし合わせて、生成したコードの適合性を検証する作業です。AIで生成したコードを含むあらゆる開発成果物を対象にして、チェックリストを満たしているか、記述のルールに沿っているか、必要項目を網羅できているかといった視点から、抜け漏れやルール違反を機械的に検出する作業です。特に組込みシステム向けコードでは、リソースの制約やリアルタイム性の担保、実装するハードの仕様や遵守すべき安全規格などへの適合を、厳密に検証しておく必要があります。
こうした検証は、ヒューマンエラーが生じる可能性がある人手作業をなるべく排除し機械的に実行した方が、より高精度かつ迅速に行えます。このため、コーディングの規約や書式が遵守されていることをルールベースで検証する「Lintツール」をはじめ、バグや危険コードを数理・制御フローベースで検出する高度な「静的解析ツール」などがあります。これらによって検証作業の多くを自動化できますが、生成したコードが開発意図に合致しているかを判断する作業だけは、人間が行う必要があります。
一方「レビュー」は、開発されたソフトの内容を理解・評価すること自体に意味がある作業です。品質の向上、不具合の早期発見、設計や実装の妥当性確認を目的として、設計書やコード、仕様書を基にして、ロジックの正しさや目的に対する適切さ、規約への準拠、保守性などを複数人(第三者も交えて)で精査し、本質的問題を抱えていないかを評価します。組込みシステム向けのコードでは、コードのアルゴリズムやタイミング制御、優先度設定などの妥当性、最悪ケース前提での安全性・信頼性、データ競合などの並行性・割り込み、ハードとソフトの整合性のすり合わせなどが重要になります。
この時、コード自体の内容を理解するだけでなく、実装するシステム全体の開発目標に合致したものが出来上がっているのかを見極めることが不可欠になります。なぜなら、システムに組み込んだ後のソフトの動作とその品質の責任を負うのは開発者であり、システムとコードを開発する企業であるからです。AIは、たとえ間違ったコードを生成したとしても責任を取ってくれるわけではありません。こうしたレビューは、人間の価値観、視点、基準に照らし合わせて、システムレベルで品質を評価することが求められます。
「チェック」の自動化と「レビュー」の高精度化をAIが支援、開発者はより高レベルな判断に関与
昨今のAI技術の進歩は極めて著しいものがあります。技術の進歩によって、「チェック」は自動化ツールに任せ、「レビュー」は専ら人間が行うという明確な役割分担とそれぞれのあり方も、近い将来には大きく変わってきています。
「チェック」作業の流れ
まず、これまでにも自動化が進められてきた「チェック」においては、Lintと静的解析に加え、生成したコードが開発意図に合致するか検証し、満たしていなければ改善提案するといった作業も、文脈・意味ベースの「AIチェックツール」を使って自動化できるようになってきました。このAIチェックでは、コードの意味や文脈を自然言語のように理解して、必要要件に照らし合わせながら内容が符合していることを確かめます。そして、Lint、静的解析、AIチェックという一連の流れを自動化できるようになったため、コード生成と同時並行的にチェックをリアルタイム実行し、チェック結果に基づく修正も迅速に行うことが可能になりつつあります。ただし、その際にもハルシネーションの発生をゼロにすることはできませんから、人による最終確認がなくなるわけではありません。
ただし人間が関与すべき領域が必ず残る
一方、「レビュー」に関しては、人とAIの役割分担がさらに大きく変化しそうです。2026年春に、米アンソロピックは、開発した最新生成AIの試作版「Claude Mythos Preview」が、20年間以上市場で利用されてきた有名ソフトに内在する深刻度の高い未知のセキュリティ脆弱性を数千件規模で発見したと発表しました。サイバー攻撃などに悪用されることを危惧した同社は、このAIの公開を取りやめ、話題となりました。この出来事は、現在のAIの能力が、既にトップエンジニアの知見・スキルを遥かに超えるレベルに達していることを示唆しています。現在流通しているソフトは、当然、数多くのエンジニアの手で厳格な「チェック」と「レビュー」を繰り返し実施した上で投入し、市場で脆弱性が発覚するたびに改善が進められてきたわけですから、それでも見逃していた脆弱性を見つけ出す能力は驚異的です。
これからは、脆弱性だけでなく、これまで人の主観や知見・経験・センスで実施されてきた多角的な確認作業も、AIを活用することで精度が高まることが予想されています。今後は、高い安全性や信頼性が求められる組込みシステムこそ、「チェック」だけでなく「レビュー」でもAIの活用を考えるべき時代が到来することでしょう。
コード確認のパイプライン
ただし、どんなにAI技術が進歩しても、生成したコードによって生じた損害や事故の責任をAIは取ってくれない点は変わりありません。このため、「レビュー」への人の関与をなくし、開発を完全自動化することはできません。「レビュー」の最終判断は責任を負うことができる人が行い、AIが第一審査員となって、より高精度の判断を支援することになりそうです。実際、現時点で既にバグ候補の検出、可読性・保守性の評価、脆弱性の指摘、プルリクエスト(PR)ごとの自動レビューコメント生成などでエンジニアを支援できるようになってきています。人間は、アーキテクチャの妥当性やトレードオフ関係にある項目での選択、対象システムの市場価値など、より高レベルの判断を担当することになるでしょう。
ソフト開発の専門家の中には、AIコーディングを「極めて仕事が早い新人エンジニア」と評する声が多く聞かれます。将来有望だが、現時点ではベテランエンジニアの目の届く範囲、すなわち厳格な検証と共に利用することが必須という評価です。優秀なエンジニアであるAIの成長スピードは速く、遠からずベテランエンジニアでなければできなかったことが次々とできるようになっていくことでしょう。それでも、どこまで行っても、AIはエンジニアを支援する立場にあるという点は変わりありません。これからの組込みエンジニアには、AIをフル活用して具現化する、システムアーキテクトとしての能力が不可欠になりそうです。
求められること
もはや、エンジニアの能力が、コーディングや検証の作業そのものの生産性で測られる時代ではなくなりつつあります。応用市場においてより価値あるシステムとはどのような機能・性能を備えたシステムなのか、システムの利用者に高い安全と信頼性を約束できるシステムとは何かを洞察し、具現化する能力こそが問われています。
※このWebサイトで使用している会社名や製品名は各社の登録商標または商標です。
※本文中に™ および ® マークは表記していません。
※図は、米Googleの生成AI「NotebookLM」を利用して筆者が作成したものです。
プロフィール
伊藤 元昭氏 株式会社エンライト 代表
技術者として3年間の半導体開発、日経マイクロデバイスや日経エレクトロニクス、日経BP半導体リサーチなどの記者・デスク・編集長として12年間のジャーナリスト活動、コンサルタントとして6年間のメーカー事業支援活動などを経て、2014年に独立して株式会社 エンライトを設立。
