AI ツールを使用した自動車ソフトウェアチームの最新開発パターン自動車ソフトウェアエンジニアのチームが、AIを活用した開発ツールを使用して、ECUとクラウドインフラストラクチャ全体でコネクテッドビークルシステムを構築およびテストしています。
Industry Insights

/

May 30, 2025

/

#

Min Read

AI ツールを使用した自動車ソフトウェアチームの最新開発パターン

This is an external post, click the button below to view.
View Post

自動車ソフトウェアの複雑さが増し続ける中、エンジニアリングチームは、開発者の効率を高め、エラーを減らし、セーフティクリティカルなシステムの品質を維持するために、AI支援ツールに目を向けています。ここSibrosでは、Cursor IDE、Windsurf、Cline、Claude Code、その他のラージ・ランゲージ・モデル(LLM)などのツールを採用して、OTAの更新からデータロギングや診断に至るまで、コネクテッド・ビークル・プラットフォーム全体の開発をサポートしてきました。

この記事では、AI コーディングアシスタントをワークフロー(特に組み込みおよびクラウドベースの自動車ソフトウェア)に統合するための実践的なパターン、学んだ教訓、ヒントを紹介します。これらは理論的なアイデアではなく、生産システムを構築するために私たちが日常のワークフローに取り入れている実際の応用方法です。あなたもそうすることができます。

構造から始める:AI を活用した計画とアーキテクチャ

自動車システムでは、 設計段階の早い段階で犯した間違いは、後で修正するには費用がかかります。 これは、OTA 更新オーケストレーションやログストリーミングなどの緊密に結合されたサービスに特に当てはまります。Cursor IDE では、すべての新機能について、まず AI を使用してシステムを共同設計する広範な計画から始めます。

LLMにサービス責任を定義し、ドメインモデルをスケッチし、通信契約を見越すよう促します。

OTA ソフトウェアアップデートの展開サービスを構築しています。以下の概要を教えてください。

  1. サービス責任
  2. エンティティモデルとフィールド
  3. サービス間通信ポイント
  4. Go ベースのモノレポの推奨フォルダ構造

プロンプトの例:

私たちはOTAソフトウェアアップデートのためのデプロイメントサービスを構築しています。以下の項目について整理してください: 1. サービスの責務 2. エンティティモデルとそのフィールド 3. サービス間の通信ポイント 4. Goベースのモノレポジトリ向けの推奨フォルダ構成

このような事前の設計により、後で解約することが減り、アーキテクチャに関する決定においてチーム全体が足並みを揃えることができます。

.cursorrules を使用してコードベースについて AI に教える

初期状態では、LLMには特定のリポジトリに関するコンテキストはありません。そういうわけです。 . カーソルルール ファイルが入ってくる。これらはプロジェクトの AI オンボーディングドキュメントと考えてください。

これらを使用して以下を定義します。

  • 当社の階層型アーキテクチャ
  • 命名規則
  • キーファイルとその役割

スニペットの例:

## コード構成 - エンティティ層:ドメインモデル - サービス層:ビジネスロジック - ストレージ層:Postgres リポジトリ - エンドポイント層:API 定義

これにより、AIは私たちのスタイルに合ったコードを完成させることができ、内部の矛盾を避けることができます。

安全を左へ:テストファーストの AI ワークフロー

自動車コードは、ファームウェアの更新、ブレーキコントローラー、テレメトリ診断などの重要な機能に影響することがよくあります。つまり、AI が生成するコードはテスト可能、予測可能、検証可能でなければなりません。

私たちは「テストファースト」の迅速なアプローチを採用しています。つまり、AIにロジックの記述を依頼する前に、成功とはどのようなものかを定義します。

テスト生成のプロンプト:

ソフトウェアロールアウトエンドポイントの統合テストを作成してください。以下のテストケースを含めてください: * 複数のステージ展開を含む有効なロールアウト * パッケージIDが欠落している場合の失敗ケース * ロールアウトがフィーチャーフラグ設定を正しく反映することの検証

これにより、AI は制約の範囲内で動作し、下流での望ましくない動作を回避できます。

大規模デバッグ:エラー・メッセージ・インジェクション

フルスタックトレースを手動で読み取ることはなくなりました。代わりに、Cursor に直接貼り付けて、根本原因の分析を依頼します。これは、パニックが連鎖的に起こることが多い Go で特に役立ちます。

プロンプトの例:

エラー:パニック:実行時エラー:無効なメモリアドレスまたはnilポインタ参照 このエラーは、OTAロールアウトロジック内で .Deploy() を呼び出そうとした際に発生します。デバッグの支援をお願いします。

これは OTA ロールアウトロジック内で `.Deploy () `を呼び出そうとしたときに発生します。デバッグを手伝ってください。

AIは考えられる原因を返し、ロギングラインを提案し、さらには修正を提案します。これは、これまで 30 分間のラバーダッキングとログのふるい分けに代わるものです。

Git HyengieneによるLLMドリフトの回避

LLM を扱う際によくある落とし穴の 1 つは、壊れたコードの上に修正を重ねてしまう傾向があることです。これが原因で、「くだらない」という言葉が生まれます。これは、根拠が不十分な編集が何層にも重なっていることを指す用語です。

これを避けるには:

  • AI による変更が成功するたびにコミットします
  • で自由にリセットします git リセット-ハード
  • 私たちはCursorをジュニアエンジニアのように扱います。ポテンシャルは高いが、監視が必要

この習慣により、コードをクリーンに保ち、微妙に壊れたものを出荷するリスクを最小限に抑えることができます。

AI ペアプログラマーによるリファクタリング

多くの AI ユーザーは、リファクタリングに Cursor を十分に活用していません。技術面での負債を減らすために積極的に活用しています。Cursor は、長い関数、繰り返されるブロック、一貫性のないパターンを見つけるのに最適です。

プロンプト:

`updateRolloutStatus` をリファクタリングして、次の点を改善します。 1. ネストを減らす 2. 命名規則を改善する 3. DB ロジックをストレージ層に移動する 4. 動作を同一に保つ(既存のテストでカバーする)

これにより、テストカバレッジの信頼性を維持しながら、レガシーコードをより迅速に最新化できます。

AI との相性が良いスタックとアーキテクチャの選択

フレームワークやパターンによっては、他のフレームワークやパターンよりも AI に優しいものがあることがわかりました。Cursor は、システムがモジュール化され、型付けされ、文書化されている場合に最もよく機能します。

私たちは以下を支持します:

  • 階層化されたクリーンなアーキテクチャを採用してください
  • リアクトフック付きタイプスクリプト
  • 明確に定義されたサービス境界

内部専用の DSL や型指定されていない API を避けることで、AI の有効性が大幅に向上します。

ドキュメンテーションオンデマンド

AIはコードを書くだけでなく、ドキュメントも書きます。Cursor を使用して内部ドキュメント、API 仕様、さらにはアーキテクチャ決定記録 (ADR) も生成します。

プロンプト:

`POST /v1/rollouts` の API ドキュメントを生成します。以下の情報を含めます: - 目的 - リクエスト/レスポンススキーマ - エラーコード - 承認動作

これにより、手動によるオーバーヘッドが減り、機能が進化しても社内ドキュメントが最新の状態に保たれます。

最終思考

これらのAI支援開発パターンは、理論から生まれたものではありません。実際の自動車グレードのシステムの構築に何百時間も費やした結果生まれたものです。私たちのアドバイスは、AI をオラクルではなく、協力者のように扱うことです。反復や提案はAIに任せてください。特にセーフティクリティカルなロジックの場合は、必ず人間によるレビューを重ねてください。

信頼性を犠牲にすることなくより迅速に行動したいと考えているコネクテッドカー開発者にとって、これらのパターンを採用することは真の優位性となります。

シャオジアン・ホアン
シャオジアン・ホアン
Xioajianは、Sibrosのソフトウェア開発チームとクラウドインフラストラクチャチームを率いています。Sibros に入社する前は Nuro.ai の製品責任者を務め、それ以前は Uber と Facebook でキーエンジニアを務めていました。Uber では、アプリに関する Uber の重要なワークロードを世界中で実行するクラウド・インフラストラクチャーを構築するチームを率いていました。