現在の自動車業界では、自動運転技術やコネクティビティの急速な進化を背景に、ソフトウェアによって機能や価値が継続的に定義、更新されるソフトウェア・ディファインド・ビークル(SDV)が注目されています。これまでの自動車は、機能ごとに専用の電子制御ユニット(ECU)を搭載する「分散型」の構造であり、ハードウェアとソフトウェアが1対1で密接に結びついていたため、自動車というシステム全体の整合性を保ちながら、頻繁にソフトウェアをアップデートすることが困難でした。一方で最新のSDVアーキテクチャでは、ハードウェアとソフトウェアを切り離す「デカップリング」が前提となっており、多種多様な機能が、少数の高性能なコンピューター(セントラルECUなど)に集約される設計に進化しています。
しかし、この集約がセキュリティ上の新たな課題を生み出します。例えば、ブレーキやステアリングを制御する安全機能と、外部ネットワークと繋がる車内エンターテインメントなどの便利な機能が、一つの高性能なコンピューター(セントラルECU)に集約され、同じメモリや計算リソースを共有して動くようになります。本来であれば厳格に隔離されているこれらの機能が単一のシステム上で動くことで、エンターテインメント関連のアプリで発生したバグや脆弱性が、安全制御の領域まで影響を及ぼし、車両全体を脅かすような未定義動作に繋がるリスクが生じます。ソフトウェアの規模が膨大になるSDV開発において、この機能間の干渉をどう防ぎ、自動車としての信頼性をどう担保するかは、重要な開発課題となっています。
ところで自動車業界のソフトウェア開発では、長年にわたりC/C++が多く使用されてきました。これらは高いパフォーマンスを発揮する一方で、メモリ破壊やデータ競合による未定義動作を引き起こしやすく、それがシステム全体に波及して重大な安全上の危険やセキュリティ上の脆弱性を招くリスクを抱えています。
近年、サイバー攻撃に狙われるソフトウェア脆弱性の多くが、メモリ管理に起因することが明らかになっています。すでに米国では、国家サイバー長官室(ONCD)をはじめとする政府機関が主導して、ソフトウェアを開発する企業に対してメモリセーフ言語(Rustなど)への移行を推奨しています。また、米国国防高等研究計画局(DARPA)は、レガシーなCコードをAIなどの技術を用いてメモリセーフ言語へ自動変換する国家プロジェクト「TRACTOR」を立ち上げるなど、レガシーコードからの移行を強力に後押ししています。このようなトレンドは、自動車業界を含む日本の製造業にも押し寄せてくる可能性があります。
こうした背景から、コンパイル時にメモリとスレッドの安全性を担保し、C/C++と同等のパフォーマンスを実現する次世代メモリセーフ言語の一つであるRustの採用が、世界の自動車業界で本格化しています。AUTOSARの標準化アーキテクチャにおいても、Rustを用いたアプリケーション開発のガイダンス作成が進められており、一部の企業では、既に次世代システムへの実開発での適用や、業界標準のルール作りへと大きく踏み出しています。
Rustを導入する主なメリットとして、バグの減少によるシステムの信頼性向上や、並行処理プログラミングの容易さ、開発者の生産性向上に加え、長期的な保守コストの削減効果なども挙げられます。近年、Rustが注目されている理由は、生成AIとの相性の良さにあります。一方で生成AIがコードを書く時代において課題となるのは、「AIが生成したコードをいかに安全に利用できるか」という点です。Rustは、メモリ安全性を脅かす実装や、致命的な脆弱性につながりうるバグをコンパイル時に検出し、是正を促す仕組みを言語レベルで備えています。このため、AIが生成したコードであっても、Rustの厳密なチェック機構が安全性の担保に大きく寄与します。その結果、後工程での不具合修正や品質確認の負荷を大幅に下げることが可能になります。特に、安全性・信頼性が最優先される自動車向けソフトウェアでは、AI活用による生産性向上と品質確保を同時に実現できる点が、Rustの大きな競争優位となります。
しかし、実開発で本格的にRustを導入するためには、いくつかの大きな壁が存在します。最大の障壁は、熟練した技術者の不足です。また欧州の自動車業界においては、ISO 26262などの安全規格や規制要件への適合が大きなハードルとして認識されています。
現在、既存のC/C++のエコシステムと比較すると、この新しい言語のエコシステムは発展途上です。機能安全基準を満たすためのツールの認証ギャップ、C/C++ほど成熟したRust向けコーディングガイドラインがまだ整備途上である点、そして自動車業界で使用されているMATLAB/Simulinkなどのモデルベース開発(MBD)ツールからRustコードを直接生成する仕組みが、C/C++コード生成ほど成熟・普及していない点は、開発現場にとって導入の障壁となっています。さらに、巨大なレガシーC/C++コードベースとの相互運用性の課題(Application Binary Interface(ABI)の非互換性など)や移行コストの高さも課題です。
C/C++からRustへの移行を考える際、第一のアプローチは「段階的な導入」です。既存の安定したコードを無理に全て書き換えるのではなく、まずはインフォテインメント、テレマティクス、クラウドバックエンドなど、自動車用安全度水準(ASIL)が比較的低い、または機能安全の対象外の領域から小さくスタートすることを推奨します。これにより、組織内に知見を蓄積しつつ、ツールやエコシステムの成熟を見極めながら導入を進めることができます。
第二のアプローチは「開発パイプラインとツールの高度化」です。Rustを段階的に導入する場合、その組織は既存のC/C++資産とRustで新たに開発したソフトウェアが共存した状態で開発を進めることになります。しかし、異なる言語同士を連携させると、その境界部分の管理やビルド作業が複雑化します。そのため手作業に頼るのではなく、異なる言語で実装されたソフトウェアを安全に連携させる仕組み(相互運用レイヤー)の構築や、複雑化するソフトウェア構成を可視化するSBOM(ソフトウェア部品表)の自動生成ツールの導入が必要です。さらに、自動車業界に不可欠なモデルベース開発(MBD)環境から直接安全なコードを生成する仕組みの構築など、開発現場の負担を減らすツールチェーンが求められます。
第三のアプローチは「組織的な育成と業務での定着」です。Rustの学習ハードルの高さを克服するために、従来のC/C++開発者に向けたマインドセットの転換を含めた専門のトレーニングプログラムが必要です。単なる文法学習にとどまらず、業務上必要な機能安全や開発プロセスなど、自動車ドメインに特化した実践的なカリキュラムの整備も重要です。
自動車業界をはじめ製造業の競争力は、ハードウェアからソフトウェアへと明確にシフトしています。次世代のメモリセーフ言語の手の内化は、組織にとって強力な武器となります。
しかし、これらを自社単独で推し進めるには高いハードルがあります。そこで我々電通総研は、製造業のお客様がこれらの課題を乗り越え、次世代のセキュアなソフトウェア開発環境へスムーズに移行できるよう、戦略的に支援していきます。本ブログでは次世代メモリセーフ言語に焦点を当てましたが、これだけにとどまらず電通総研は次世代の開発支援・サービス提供を見据えて、データとAIを駆使した新たなサービス展開を目指し、2025年より取り組みを進めています。
この取り組みは電通総研単独ではなく、独Fraunhofer IEM、Two pillarsと共同で推進しています。近い将来、SDV開発を含む複雑な製品開発に対して、セキュリティを担保しながら圧倒的な開発スピードを実現するサービスをお届けします。既に具体的なコンセプトや、一部の開発ユースケースに特化したプロトタイプの準備ができており、お客様にご紹介できる状態にありますので、ご興味をお持ちの方は是非、弊社までご連絡ください。
最後にRustに関するアンケートにお答えいただきました方に、Fraunhofer IEMを主体に、Two Pillars、電通総研が共同で作成したホワイトペーパーを無償でダウンロードいただけます。
本文書(添付資料を含む)は、株式会社電通総研が著作権その他の権利を有する営業秘密(含サプライヤー等第三者が権利を有するもの)です。当社の許可なく複製し利用すること、また漏洩することは「著作権法」「不正競争防止法」によって禁じられております。本資料の社名・製品名は各社の登録商標です。