自動車業界のDevOpsにおけるソフトウェアのルールとは
※この記事はJFrog VP Business DevelopmentのKit MerkerがswampUP 2019の基調講演でスピーチした内容に準じています。
私たちが普段使っているすべての電子機器はソフトウェアで制御されています。そう考えるとソフトウェアエンジニアは世の中を動かし続けるエンジニアと言えるでしょう。現在はソフトウェアをますます頼りにしなければならない状況になっています。
JFrogは継続的アップデートとLiquid Softwareのビジョンを実現するために取り組んでおり、台頭する「モノのインターネット(IoT)」業界に注目してきました。ソフトウェアで制御され相互に接続するデバイスは製造業からスマートホーム、ドローンから石油の掘削装置、衛星からサーモスタットまで広範囲に及びます。これらの産業は変化しましたが、でも自動車産業ではまだまだ不十分と言わざるを得ません。
自動運転車はソフトウェアが重要
自動運転車を開発する際には安全性の担保が最重要で必要不可欠ですが、達成するのは困難です。だからこそ私たちはこの課題に真正面から取り組むことにしました。
車は非常に役立つ機械であり、毎日の生活で無くてはならない存在です。私たちは運転することが危険であることを知っていますが、飲酒したりテキストメッセージをやりとりしたりせず、交通ルールに注意していまだに運転を続けています。安全に運転するために、人間ではなく機械に運転させようとしています。
そのように強力な車のハンドルは、今後ますますソフトウェアが握ることになります。そのためにはより優れていて安全なソフトウェアを搭載する必要があります。さらにソフトウェアを継続的に改善し、更新する必要があります。
ソフトウェアエンジニアのルール
JFrogのIoTチームがデモンストレーションプロジェクトを開始したとき、私たちはソフトウェアエンジニアが従うべきルールを考え、下記の通りに決めました:
ルール0:誰も傷つけない
もちろんこのルールは当たり前のように聞こえるでしょう。しかし自動運転車の目標はケガや死亡事故を防ぐことであり、一歩間違えると深刻な結果になる可能性があることを懸念しなければなりません。大前提のルールとして、これは他のどんなルールよりも優先されます。
ルール1:スイッチオン時に最新状態
車の電源を入れたときに、適切なバージョンのソフトウェアかどうか運転手が気にする必要はありません。Liquid Softwareの世界では最適な場所で、そして最も安全なタイミングで継続的アップデートが行われるため自動車は常に最新の状態になります。危機的状況でない限り運転手はインストールのことを考えたり、サービスセンターにアクセスして手動でインストールしたりする必要はありません。
しかし、そんなルールから現在はまだ程遠い状況です。市場に出回っている一部の車種はOver-the-Air(OTA)更新を可能にしますが、ソフトウェアのアップデートをLiquid化してエンドユーザにほとんど見えないようにするものはまだありません。
中国のEVドライバが誤ってラッシュアワー時にアップデートを開始してしまい、1時間のダウンロードとインストールにより道路で立ち往生してしまったことがありました。アップデートは高速で目に見えないものでなければなりません。
ルール2:時間の経過とともに改良
継続的アップデートにより、これからの自動車は時間の経過とともに時代遅れになることはなくなります。ジャガーの最近のブレーキ問題のように、ソフトウェアのバグがリコールを引き起こすこともありません。
自動運転車の性能と実績は日増しに向上しており、そのため今までより多くの走行結果が記録されています。すでに走行している自動運転車を改善するには継続的デリバリによるソフトウェアの更新が不可欠です。テスラの運転手は、ソフトウェアの更新によって追加された新機能や改善されたドライブ体験、車の性能向上について自分がどれだけ恩恵を受けているか定期的にツイートしています。自動車は一般的に減価償却資産と考えられていますが、多くのフィードバックやテストによってソフトウェアが改善されるため逆に資産価値が上がることもあります。
ルール3:運転手と開発者の不安を軽減
自動運転車に不安を感じているのは、歩行者や同乗者だけではありません。開発者も同様に不安を感じています。コードのチェックインが原因でコストのかかるリコールを発生させて炎上させたい人は誰もいません。
エンジニアであれ企業であれ、私たちはプッシュしているアップデートが信頼できると確信している必要があります。自動テストは不可欠であり、加えてビルドメタデータのトラッキングや仮想運転環境といった、さまざまなテクニックも改善されていく必要があります。加えて更新プログラムにセキュリティの脆弱性がないことも確信する必要があります。
更新プログラムを注意深く作成・配布することで、運転手と開発者の間に強力な信頼関係を構築できるでしょう。
自動車業界向けLiquid Software
JFrogのIoTチームは、Enterprise+プラットフォームを使用して自動車業界のユースケースを実証してきました。swampUP2019の参加者は、Liquid Softwareが実際にどのように機能するかを体験しました。
IoTチームはサンフランシスコのswampUP2019会場でラジコンカーを使用した実演デモを初めて公開しました。小規模な環境ですがEnterprise+を使用し、車両の移動中にソフトウェアを更新してみせました。
私たちのシステムでは、C/C++パッケージマネージャであるConanと統合した組み込みLinux向けのYocto ビルドシステムなど、業界特有のテクノロジーを使用しています。また、Automotive Grade Linuxを使用しており、自動化されたデバイス管理とテスト用にLavaなどのIoTツールと統合しました。
- 車のキーを回した時に自動車を最新の状態に保つため、JFrog Distributionを使ってリリースバンドルをArtifactory Edgeノードに配信し、ダウンロードとインストールを別々に行いました。デバイスに対して並列なデプロイを行うためにMenderを使い、障害が発生した場合に備えて最後の安全なバージョンにすばやくロールバックできるようにしました。
- 時間の経過とともに車が改善されるようにCI/CD用のJFrog Pipelinesを使い、継続的なソフトウェアの更新と顧客からのフィードバックによる改善を実現しました。
- 運転手と開発者の不安を軽減するため、Artifactoryはトラッキング可能なアーティファクトの記録用に信頼できるリポジトリを提供します。また、JFrog XrayはRisk Based Security(RBS)の包括的なデータベースを使ってアーティファクトをスキャンすることで、任意のセキュリティ上の脆弱性を見逃さずに隔離します。
このデモンストレーションでは、私たちのラボと車だけで動作するだけでなくユーザの車両環境でも動作したことや、誰もがソフトウェアエンジニアのルールを順守するのにこのシステムが役立つことがわかり非常に興奮しました。Enterprise+プラットフォームをぜひお試しください。