Amazon Web Services ブログ
組み込みソフトウェアにおける開発・改善の高速化への取り組み
組み込みシステムは、家電製品や医療機器、空調機、自動車といった特定の機能を提供するために設計されたハードウェア及びソフトウェアを指します。このブログでは、AWS Summit Japan 2024 の製造業ブース内で展示される「仮想化で組み込みソフト開発・改善の高速化」のデモについて説明します。組み込みソフトウェア開発における課題と、AWS クラウドの導入による課題の解決方法とデモを紹介をします。
組み込みソフトウェア開発におけるトレンドと課題
近年、組み込みシステムは、IoT や AI / ML といった最新技術の普及に伴い、複雑化やスマート化が進んでいます。また、組み込みシステムである製品と AWS をはじめとしたクラウド上で構築されたサービスを接続し、お客様に新たな価値を提供する SaaS Plus a Box といったビジネスモデルを採用するケースが増えてきています。このような技術・ビジネスモデルの変化に伴い、製品を売った後も継続的な改善やセキュリティの強化が求められています。そのため、いち早くお客様への価値や安全を提供するために、ソフトウェアリリースサイクルを高速化する必要が出てきます。
クラウド上で構築されるサービスの開発においては、DevOps により高速に改善するアプローチがあります。今後は、組み込みソフトウェア開発でもこのスピード感が求められてきます。しかし、組み込みソフトウェア開発は、DevOps のアプローチが取れず、製品・サービス全体で開発・改善を高速化することが難しくなります。
その主な原因は、ハードウェアが完成することを待たないと開発が進められない点にあります。組み込みソフトウェアは特定のハードウェア上で動作することを前提としているため、開発には特殊な CPU アーキテクチャやペリフェラルを搭載したハードウェアが必要です。
このため、一般的な開発環境とは異なるツールチェーンやドライバーを使用する必要があり、デバッグやテストの際には物理的にデバイスに接続する必要があります。このような環境はサービス開発チームにも影響を及ぼします。製品とサービスをリリースするために欠かせない結合テストを行うためには、ハードウェアの手配や複雑なセットアップを必要とし、組み込みソフトウェア開発チームとのコミュニケーションコストもかかります。
ハードウェアが無いとデバッグやテストも行えないため、開発プロセスが自然とウォーターフォール開発に依存することになります。ウォーターフォール開発では、要件定義、設計、実装といった各段階が明確に区分けされており、前工程でリスクを最小限に抑え、手戻りを少なくするメリットがあります。しかし、ウォーターフォール開発の特性上、動くソフトウェアが後工程でようやくリリースされるため、ユーザーフィードバックが遅れがちになり、ニーズの把握が不十分になることがあります。また、パフォーマンスやサービスとの整合性といった要件に対するリスクの顕在化も遅れる可能性があります。
ソリューション
このような課題を解消するためのアプローチとして、組み込みシステムを AWS 上で仮想化し、サービス開発と同じプラットフォームの上で開発を進めることが考えられます。組み込みソフトウェアを仮想化することで以下のメリットが出てきます。
- 俊敏性: ハードウェアが無くても瞬時に開発環境を提供することができるため、開発チームがすぐに開発業務を始めることができます。
- 弾力性: 開発者の増減に合わせて、自由にリソースの規模をスケールさせることができます。
- コスト最適化: 弾力性の高い仕組みにより、開発・テスト用のハードウェア数を最小限に抑えることができるため、コストの最適化にも繋がります。
- イノベーションの加速: サービス開発・組み込みソフトウェア開発の両チームが同じクラウド環境で協業することで、コミュニケーションコストを減らし、付加価値の高い業務に集中することができます。
サービス開発と組み込みソフトウェア開発の環境を AWS 上で構成すると以下のようなリファレンスアーキテクチャとなります。大きく4つの環境に分かれており、各環境に対して AWS IAM Identity Center により共通の認証・認可の仕組みを提供します。
- 開発環境: CI / CD パイプラインとアーティファクトリポジトリを管理します。サービス開発者は、アーティファクトリポジトリから最新の組み込みソフトウェアをダウンロードし、サービスとの結合テストに活用することができます。
- 検証環境: 製品とサービスを組み合わせた結合テストを実行します。組み込みソフトウェアは仮想化されているため、クラウド上で動作することも可能となり、ハードウェアのセットアップは不要となります。
- 本番環境: 製品のユーザーが実際に使用されている物理的な製品をサービスに接続します。この環境に対するアクセスは、製品を使用しているお客様データが含まれているため、データ保護・セキュリティの観点からアクセス許可範囲は限定的にする必要があります。
- 分析環境: 製品ユーザーの製品・サービス利用動向や CRM ( Customer Relationship Management ) に保存されたカスタマーサポート内容などから、改善点や問題を発見するための洞察を得ることができます。
開発環境を 1 つのプラットフォームで構成することにより、組み込みソフトウェア開発・サービス開発の垣根を無くし、高速にお客様に価値を届けることができます。また、両チームがお客様データに基づいて意思決定を行いやすくなるため、顧客ニーズに迅速に対応し、より良い製品サービスを提供することができます。
デモアプリケーションの紹介
AWS Summit Japan 2024 で展示されたデモをご紹介します。
ストーリー
このデモでは、空調機の操作のための空調コントローラーという IoT プロダクトを想定します。空調機は人感センサー省エネ制御という、空調機が人の存在を感知する人感センサーを使用し、誰も部屋にいない時は空調機の動作を停止または低速運転に切り替える省エネ機能を有しています。ビル管理会社がこの機能をあまり有効化していないという課題が、空調機メーカーの BI (Business Inteligence) ダッシュボードによって判明しました。空調機メーカーは、空調コントローラーの UI を改善することで課題を解決できると考え、素早く新バージョンをリリースすることで、ビル管理会社の KPI であるエネルギー消費量の削減に応え顧客満足度の向上を目指します。
アーキテクチャ
デモのアーキテクチャは以下のようになっています。
空調コントローラーには、Raspberry Pi を使用しています。ソフトウェアは、Yocto Project をベースとしたカスタム Linux イメージを作成しています。
1. ユーザ分析
ユーザ分析では、IoT データやサポートケースの情報を BI ダッシュボードを作成して可視化します。BI ダッシュボードは、Amazon QuickSight を使用して作成しており、人感センサー省エネ制御の利用状況や、サポートケースの情報を可視化しています。現在のユーザーの動線を見ると、多くのユーザは人感センサー省エネ制御の設定から自動制御モード (人感センサー省エネ制御の動作モードの設定画面) への遷移をしています。つまり、多くのユーザーは人感センサー省エネ制御の有効化に興味を示しているということです。しかし、当月の人感センサー省エネ制御の利用率は 23 % と低調になっているため、興味があるにも関わらず実際には設定を有効化していないということになります。一方で、問い合わせ履歴を確認すると、人感センサー省エネ制御に関する UI 操作の問い合わせが多いことが確認できます。データから、UI の操作性が機能の利用率を下げている一因であると推測できます。
2. ソース Push
ダッシュボードから得た洞察を基に仮説を立て、組み込みソフトウェア開発チームはユーザーフレンドリーな新 UI を開発しました。旧 UI では、人感センサー省エネ制御の設定ボタンまで到達するためにスクロールが必要であったり、人感センサー省エネ制御を有効化するために制御の動作モードを少なくとも1つ有効化する必要があったりすることで、機能の有効化までに辿りつきづらい UI となっていました。新 UI では、スクロール不要とするようにボタンの間隔を縮小し、動作モードはデフォルト値を自動セットすることでお勧めの設定を促すようになっており、よりユーザーフレンドリーな UI となりました。
新 UI をリリースするため、ソースコードを AWS CodeCommit に Push し、AWS CodePipeline, AWS CodeBuild による CI / CD パイプラインで新たなソフトウェアをビルド・テストしていきます。
3. リリース
組み込みソフトウェアのアーティファクトをリリースします。このデモでは Raspberry Pi で動作する空調コントローラーアプリケーションと、アプリケーションを動作させる組み込み Linux をビルドします。動作対象は、Raspberry Pi に加えて、オープンソースのエミュレータである QEMU と Amazon Machine Image ( AMI ) となり、イメージをそれぞれ作成します。AMI を作成するために、AWS のソフトウェアをインストールするレシピがまとめられているレイヤーである meta-aws を使用しています。Yocto Project を使用することにより、稼働させるハードウェア又は仮想マシン特有のレシピを設定で切り替えることができます。Yocto Project をベースとしたビルドパイプラインは GitHub リポジトリ aws4embeddedlinux-ci で公開されている CDK ライブラリを呼び出して構築しています。
4. テスト
デバイスイメージだけでなく、QEMU や AMI をベースとしたアーティファクトを作成することで、デバイスレスでのテストが可能となります。これにより、クラウドで組み込みソフトウェアが動作するため、サービス開発者によってもシームレスに結合テストを実施し、製品・サービス間の連携を確認することが容易となります。下図では、Amazon WorkSpaces を用いてVDI 上でのタッチパネルのテストを実施しています。
また、製品テストには実機を用いた結合テストも欠かせないので、AWS Code Pipeline の手動承認アクションを追加し、パイプラインを停止し、承認者が実機テスト結果を確認して承認できるようにします。
5. デプロイ
全てのテストが完了したら、AWS IoT Greengrass のコンポーネントをダウンロードします。
6. OTA
AWS IoT Greengrass が OTA ( Over The Air ) アップデートにより製品に対して新しいコンポーネントをインストールします。
7. データ収集
製品は、AWS IoT Greengrass のコンポーネントによりお客様から許可を得た上でユーザ行動ログや設定状態を MQTT 通信でクラウドに送信します。今回のデモでは、タッチパネルの画面遷移ログと空調コントローラーの設定を収集しています。また、CRM といった顧客データからも、顧客の行動やフィードバックが収集できます。今回のデモでは、サポートケース情報を収集し、分析対象に含めています。
8. 改善確認
以下のダッシュボードは、ソフトウェアアップデート後の状態です。人感センサー省エネ制御の設定から自動制御モードへの画面遷移数の変化は小さいものの、人感センサー省エネ制御の利用率が 40 % まで伸びました。UI の変更により顧客体験が向上し、より多くのユーザーが本機能を利用していることを、ダッシュボードから確認することができます。このように、異なる立場の開発者が同じ情報から意思決定を行うことで、効果的な機能改善が可能になります。
まとめ
組み込みソフトウェア開発は、要件の複雑化やスマート化に伴い、製品・サービスを使用するお客様へ高い価値を提供し続けるため、素早い市場投入・市場投入後の継続的な改善とセキュリティレベルの維持が求められています。この記事では、組み込みソフトウェアを仮想化し、製品・サービス両方の開発環境を AWS 上に構築しソフトウェアリリースサイクルを高速化するソリューションについて説明しました。また、AWS Summit Japan 2024 で展示された製造向け展示の一つであるスマートプロダクトエリアの「仮想化で組み込みソフト開発・改善の高速化」ブースで展示し、このソリューションの具体化されたストーリーを紹介しました。