

Signals+ ニュースレター登録
Signals+はコネクティビティ、デジタルヘルス、モビリティ、スマートインダストリーに関する最新情報をお届けします。
ありがとうございます。ご登録のメールアドレスにお送りしたメールを確認し、ニュースレター登録を完了させてください。
世界中の人々の生活に影響を与える、画期的なテクノロジーに関する最新情報をタイムリーにお届けします。
閉じるインテリジェント・エッジで使われるソフトウェア、その開発作業の複雑さを軽減するための鍵とは何なのか?
インテリジェント・エッジに期待される役割とはどのようなものでしょうか。端的に言えば、データが得られた瞬間に、それに基づく意思決定を瞬時に行えるようにすることです。インテリジェント・エッジは、物理的な世界とデジタルの世界の交点に配置されます。そこではデバイスが現実の世界の事象を分析/解釈し、実用的なデータや貴重な知見を生成します。その際に用いられるアプリケーションとしては、ADAS(Advanced Driver-Assistance System)、VSM(Vital Signs Monitoring)、コボットの誘導などが挙げられます。インテリジェント・エッジは将来的に産業分野を変革し、私たちの生活をより良いものにする可能性を秘めています。その成否の鍵を握るのは、インテリジェント・エッジに実装されるソフトウェアです。
ソフトウェア・エンジニアリングが抱える課題は、技術が進化し、製品の迅速な市場投入を求める圧力が高まるにつれ、ますます複雑化しています。
インテリジェント・エッジはイノベーションをもたらす存在になり得ます。その潜在能力を最大限に引き出し、大きな成果を上げるためには何が必要なのでしょうか。組み込みシステムやソフトウェア定義型のシステムの周辺には、相互に関連する複雑な課題が存在します。それらの課題は、ソフトウェア開発に関連するものです。複雑な課題を招く原因の1つとしては、複数種のプロセッサを組み合わせたヘテロジニアス・アーキテクチャが挙げられます。また、サプライヤ/ディストリビュータ/サービス・プロバイダなどを含む広範なエコシステムは、ビジネス上の基盤になる重要な存在ですが、それに関連する課題も生じています。結果として、課題の複雑さが増大しています。ソフトウェア開発者は、そうした課題の解消に向けた取り組みを進める必要があります。
複雑さというのは、エネルギーに似たものだと言えるかもしれません。生成することも、消滅させることもできず、どこか別の場所に移動させることしかできません。確かに、ユーザにとってシンプルな製品やサービスは存在します。しかし、その裏側には基盤になる非常に複雑な仕組みが潜んでいます。その仕組みを構築するために、設計者/技術者はサプライ・チェーン全体にわたり、最も効率的で信頼性の高いツールやリソースを使用し、よりスマートに、より懸命に取り組みを行っていたはずです。アナログ・デバイセズは、ソフトウェア開発について次のようなビジョンを掲げています。それは、ユーザが望む抽象度で技術を利用可能にすることにより、複雑さを緩和するというものです。抽象化を適用すると、ソフトウェアによってシステムをどの程度具体的に捉えるのか(どのようにコーディングするのか)が決まります。アナログ・デバイセズは、適切な抽象化を行った上で、パートナー企業と協調してハードウェアとソフトウェアを合理的に設計できるようにすることを目指しています。
ここで、インテリジェント・エッジのサプライ・チェーンに注目してみましょう。そのチェーンにおいては、相互に接続された部分がすべて協調的に機能する必要があります。それにより、複雑さを軽減し、最適な性能と効率を実現しなければなりません。ここで「チェーン」という言葉を使っているのは、プロセスの各リンクが次のリンクに影響を及ぼすからです。どこかで遅れや問題が生じると、開発作業が遅れたり、プロセス全体が停止したりする可能性があります。チェーンに沿った各リンクには、様々なツールや技術的なエコシステムが相互接続されていなければなりません。例えば、コードの管理を容易化する最新のツールや、開発効率の最適化を支援するコミュニティが各リンクにつながっていなければならないということです。なお、その種のコミュニティは献身的な協力を惜しまない貢献者から成ります。但し、そうしたエコシステムがセキュアで利用しやすいものであることを保証する仕組みも構築しなければなりません。
インテリジェント・エッジで使われるソフトウェア
ソフトウェアは、インテリジェント・エッジの機能の実現と性能の最適化の両面で中心的な役割を果たします。インテリジェント・エッジの構成要素となるデバイスは、本質的にはソフトウェア定義型のシステム(SDS:Software-defined System)だと言えます。つまり、ソフトウェアはハードウェアに特定の機能を与えてインテリジェント化する役割を担います。また、ハードウェアを動的に再構成できるようにするためにもソフトウェアが使用されます。それにより、意思決定や適応性に対する調整をリアルタイムに適用することが可能になります。このように、ソフトウェアはシステムに対して柔軟性をもたらします。その結果、新たな目的や将来の需要など、変化する状況に応じてシステムを進化させることが可能になります。
ここで1つ実例を挙げましょう。アナログ・デバイセズは「Sensinel™」という心肺管理(CPM:Cardiopulmonary Management)システムを提供しています。Sensinelは、非侵襲的でコンパクトな家庭用のウェアラブル・デバイスです。上述したように、ソフトウェアを利用すれば優れた適応性が得られます。Sensinelは、それを実証するものだと言えます。Sensinelを使用すれば、心肺の測定値を追跡することができます。つまり、医療チームが遠隔監視を行うことにより、心不全などの慢性疾患を早期に把握することが可能になります。このシステムにおいて、ソフトウェアはセンサーのデータを解釈し、より注意が必要な患者を特定する役割を果たします。また、より多くのユーザのデータが収集されたら、システムはソフトウェアとアルゴリズムの微調整を実行します。その結果、より高い精度/効率で、どの患者に対してどのタイミングでフォローアップ・ケアを行うべきなのかを判断することが可能になります。

アプリケーションの機能は、時間の経過に伴い拡張されるケースが少なくありません。そうすると、ソフトウェア(コード)のサイズと複雑さも増大していきます。その結果、ソフトウェア技術者は時間的な要求を新たに突きつけられるようになりました。マルチコアを使用するヘテロジニアス・アーキテクチャやインテリジェント・エッジで稼働するアプリケーションのコードの開発にはより多くの時間がかかるからです。
1994年にリリースされたLinuxは17万6250行のコードで実現されていました1。
2024年までに、Linuxのコードの行数は4000万行近くに達しました2。
現在、多くの開発者は、オープンソースのソフトウェアを活用しています。それにより問題の解決を迅速に進め、ソフトウェアの開発プロセスを加速しているのです。オープンソースのソフトウェアは、可視性と寛容なライセンスを提供します。オープンソースのソフトウェアを使用するということは、他の開発者の達成を手本にしたり、既存の成果を活用したりできるということを意味します。しかも、自分たちのニーズに応じてコードを拡張/修正/カスタマイズすることが可能です。この協働的なアプローチにより、高い柔軟性が得られるだけでなく、イノベーションが促進されます。更には、ソフトウェアの開発に必要な時間と労力を大幅に削減できます。
しかし、オープンソースのソフトウェアの場合、そのコードの起源によっては問題が生じることがあります。その種の問題は、主にそのコードに固有の複雑な依存関係が原因で発生します。時として、その種の依存関係は、悪意のある者が問題のあるコードを紛れ込ませるための扉を開いてしまう可能性があるのです。そのようなリスクを軽減し、完全性とセキュリティを確保するにはどうすればよいのでしょうか。それに向けて、オープンソースのコミュニティはコードの厳格なレビュー、セキュリティを確保するための自動スキャン、信頼できるリポジトリの使用といった様々な方法を活用しています。このような手法を実践することにより、セキュアで信頼性の高い開発環境を維持しているということです。結果として、そのコミュニティの繁栄が継続することになります。
複雑なハードウェアに必要な複雑なソフトウェア
多くの場合、今日のインテリジェント・エッジでは、主要なデバイスとしてSoC(System on Chip)が使用されます。それらのSoCは、CPU、GPU、FPGAなどを1つのチップに統合したヘテロジニアス・アーキテクチャによって実現されています。最新のアーキテクチャの中には、ミックスド・シグナル機能が盛り込まれたものもあります。そうしたマルチコアのアーキテクチャの設計は、かつてのシングルコアのアーキテクチャと比べて非常に複雑で困難なものです。この点は、いくら強調してもしすぎることはありません。
2007年の時点で、スマートフォンのような初期のエッジ・デバイスの多くはプロセッサとしてARM®Cortex®-A9を採用していました。同プロセッサのトランジスタ数は約2600万個でした3。それに対し、アナログ・デバイセズは現在インテリジェント・エッジ用のデバイスとして、トランジスタ数が30億個を超えるICを開発しています。
異なるアーキテクチャを採用したSoCを使用する場合には、それぞれの強みをフルに活用することになります。それにより、電力効率の向上、レイテンシの短縮、データ・スループットの向上といった効果が得られます。その一方で、それぞれのSoCで使用するソフトウェアを設計する際には、様々な複雑さに直面することになります。例えば、各種の処理用ユニットのニーズに対応できるようにバランスをとる必要があります。また、同期を実現したり、消費電力を動的に最適化したりしなければなりません。加えて、データの完全性を維持するための保護機能を適用したり、ユニット間のセキュアな通信を実現したりする必要もあります。更に、そうしたシステムが大規模化すれば、ソフトウェアも効率良く拡張しなければなりません。それを実現できなければ、何らかのボトルネックが生じる可能性があります。性能と電力効率の最適なトレードオフを実現するには、システムを慎重に設計/開発しなければなりません。そのためには、高度なツールや技術的な知識が必要になります。
基盤になるエコシステムの構築
ヘテロジニアス・アーキテクチャに対応するソフトウェアの開発は複雑な作業になります。多くの場合、1つの企業で対応可能なレベルを超える広範な専門知識、ツール、標準化作業などが必要になるでしょう。それらのうち、ここでは標準化作業に注目することにします。その作業を効率的に進める上で鍵になるのは、適切に構築されたエコシステムです。そうしたエコシステムが存在すれば、業界の各社が協力することによって標準化が促進されることになります。標準的なAPI(Application Programming Interface)、フレームワーク、ツールを使用したソフトウェアであれば、様々なプラットフォーム上で効率的に実行できます。様々なアーキテクチャにまたがってアプリケーションを拡張する上では、そのような標準化が不可欠な要素になります。
エコシステムに加わっていれば、他社/他者と共同で、新たな技術、知的財産(IP)、ベスト・プラクティスを生み出すことができます。それにより、ソフトウェア・ツール、開発技術、ハードウェアの最適化に向けたイノベーションが促進されます。結果として、その分野全体が進歩することになります。また、エコシステムが存在することによりコラボレーションが育まれると共に、開発の複雑さが軽減されます。その結果、企業/開発者はソフトウェアを効率的に構築/最適化/拡張できるようになります。適切に管理されたエコシステムを慎重に選択すれば、不必要な製品やサービスに対する支出を最小限に抑えられます。つまり、コストを削減しつつ迅速に成果が得られるようになります。
ソフトウェア開発環境によって複雑な課題を切り抜ける
現在では、マルチコア/マルチアーキテクチャのハードウェア・ソリューションが広く使われるようになっています。例えば、ヘテロジニアス・アーキテクチャを採用したシステムは、複数種のプロセッサ/コアを使用して性能と電力効率の最適なトレードオフを実現できるように設計されています。そのような進化の結果、ソフトウェア・エンジニアリングが抱える課題はより複雑化しました。ところが、多くのソフトウェア技術者は、時代遅れのツール、ミドルウェア、ソフトウェア開発キット(SDK:Software Development Kit)を使ってその複雑さに対処することを求められます。それらは、シングルコア/シングルアーキテクチャといったよりシンプルなハードウェアを対象として開発されたものです。そうした旧来型のプラットフォームは、最新のヘテロジニアス・アーキテクチャに不可欠なオープンで拡張可能なインターフェースを提供することができません。
組み込みソフトウェアを担当する技術者が、複雑さの増大を解決するために必要なものとは何でしょうか。それは、マルチコアのシステム向けに設計されたオープンなツールと開発環境です。それらは、システムに対する可視性を提供するものでなければなりません。また、設計上のニーズに適応可能な柔軟性を備えている必要があります。
次世代のソフトウェア・ツール
必要なのは、次世代のソフトウェア・ソーシングとコーディング・ツールです。それらを活用すれば、ソフトウェア開発者の作業効率を高めつつ、アプリケーションの品質、開発プロセス、市場投入までの時間を改善することが可能になります。このような目標を達成するためには、業界全体として以下のようなことに注力する必要があります。
- オープン・スタンダードやオープンソースに対する投資を行う必要があります。その際には、真に差別化された方法により投資を集中させなければなりません。
- チェーンとSBOM(Software Bill of Materials)を活用し、スケーラブルなソフトウェア開発を加速する必要があります。
- セキュア・バイ・デザインを原則として採用し、それを実践することに注力すべきです。エッジからコアまでのセキュリティを対象とし、完全性とプライバシーを確保しなければなりません。
- 開発者を念頭に置いて設計されたオープンなツール(プラットフォーム)を構築し、開発/統合/テストをより容易に、より迅速に、よりスケーラブルに実施できるようにする必要があります。
より良い未来のために、複雑さを軽減する
ソフトウェア定義型というコンセプトは、人と地球にメリットをもたらします。より良い未来を実現するためには、イノベーションのペースを加速しつつ、ハードウェア/ソフトウェアの開発に伴う複雑さに対処しなければなりません。恐らく開発者は、その要求に応えるための準備を終えているはずです。しかし、彼らをサポートするためには適切なツールと技術を用意しなければなりません。エレクトロニクスの業界は、オープンソース、オープン・スタンダード、協働的なエコシステムを中心として団結する必要があります。その結果、効率的で整合性のとれた投資が促進されるでしょう。今日の課題に対応すると共に、想像を超える可能性を実現し続けていくためには、集団としての創意工夫と協力が不可欠です。

参考資料
1 David Hayward「The History of Linux: How Time has Shaped the Penguin(Linuxの歴史 - ペンギンは時間の経過に伴いどのように変化したのか?)」TechRadar、2012年11月
2 Dave McKay「What Is the Linux Kernel, and Why Does It Matter?(Linuxカーネルとは何か、なぜ重要なのか?)」How-To-Geek、2024年11月
3 「A History of Microprocessor Transistor Count, 1971 - 2013(マイクロプロセッサのトランジスタ数、1971年から2013年までの推移)」The Wagner Consulting Group、2013年