ソフトウエア開発言語の選択
ならびに費用対効果に関してAda言語の優位性
調査報告

著者：AdaCore 副社長 クリス ロメル
再配布権：AdaCore

はじめに
IoTの影響については 多くのことが書かれています〪 新しい顧客要件 新しいビジネスモデル 競争圧力があり 多くのエンジニアリング組織内の改革を推し進めています。要件が変化することで ミドルウェアの接続 リモート管理機
能 機械視覚や環境発電（energy harvesting）などの技術への関心を高めるニーズが増大しています。
表 1: IoT機能を活用/配置している回答者の組織の第一要因(回答者の割合)

11.7%

顧客/企業の要望

2.0%
2.0%
1.8%
2.8%

新しい戦略的機会やサービス志向のビジネスモデルを探すため競争力
37.7%
市場の時間削減15.8%
マクロ経済の状況

価格力
26.3%
その他
わからない

IoTの周りには過度な期待や展望があり コネックテッド組込みシステムは新しいものではありません。コネクテッド
ファクトリーと製造環境を介して多くの相乗効果を引き出すための取組みは何十年も前から存在しています。OnStarのようなテレマティクスとサービスを備えた自動車やトラックも同様に古い概念です。しかし企業のビジネスの方向性とビジネスモデルを接続するシステムとの組み合わせにおいてす。この技術力とビジネス力の組み合わせは自己完結サイクルを生み出し業界では増大する新しい障壁に直面していま新しいテクノロジの大規模な採用と投資が生まれています。多くの組織やソリューションベンダーが 新しいIoT技術と機能要件に対応しているにもかかわらず 新たな目標によって従来の組込エンジニアリング要件に関連する課題は軽減されません。例えば 多くの組込み装置では リアルタイムでセイフティクリチカルなアプリケーションに対応できる解決策へのニーズは衰えていません。実際 調査の回答者のほぼ半数は 現在のプロジ ェクトにリアルタイム応答の機能が含まれていることを回答しています。多くの場合 ユビキタス接続性 状況認識ならびに適応に期待すると リアルタイムシステムやセイフティクリチカルが重要なシステムの障害に関連するリスクを増大させるだけです。

© 2019 VDC Research Group, Inc.

2

表 2: 現在のプロジェクトに含まれる機能や特徴(回答者の割合)47.9%

リアルタイムの応答機能
38.2%

ワイヤレスネットワーク機能
グラフィックユーザーインターフェース

36.1%

配線ネットワーキング機能

34.4%

携帯/電池式の要素

27.0%

凹凸の要素

26.7%

遠隔対応配置と管理

26.4%

安全性の向上25.2%

地域のイベントと分析

24.0%
21.6%

音声/動画

19.6%

複数のアプリケーション支援
動作認識/触れる

14.5%

メッシュネットワーク支援

14.3%

機械の視覚/物体の探知

13.1%
9.5%

エネルギーを得る
上記以外

0.4%

わからない

0.1%
0%

20%

40%

60%

注:複数回答により合計は100%以上になります
これらの機能の変更により 新しいハードウェアおよびソフトウェア製品の採用が進んでいます。たとえば OEM 企
業は より堅牢な（多くの場合 メモリを必要とする）オペレーティングシステムとコネクティビティスタックを統合しています。 これはLinux OSの使用に関する調査への複数の回答です。さらに 新しい設計には 複雑なマルチプロセッサ/SoCが多く組み込まれています。5年前 私たちは 機能と電力性能を最適化するためにCPU + MCU（例えばビック リトルなど）へ移行するのを見てきました。現在では ソフトウェアやビジネス要件の複雑化に伴い 機械学
習 視覚処理 セキュリティ要件などの新しいテクノロジでこの変革が加速しています。今日の接続機器のコンピュータ集約型の負荷に対応するため 複雑なSoC GPU FPGA および暗号プロセッサの活用が進んでいます（表3 参照）。また 新しいテクノロジの導入は 開発上の新たな問題を抱える可能性がでてきます。多くの技術変革と新たなビジネスゴールの組み合わせにより 諸問題はより複雑になっています。結果として エンジニアリング組織は 現在の製品の機能ギャップを解消するだけでなく 新しい開発効率を向上するソリューションを模索する必要が出てきます。

© 2019 VDC Research Group, Inc.

3

表 3: 現在のプロジェクトで使用しているプロセッサの種類(回答者の割合)

59.6%
58.9%

MCU

50.1%
53.3%

CPU/MPU
SoC

31.2%

FPGA/PLD

29.9%
23.7%

DSP
17.6%

GPU

14.5%

ASIC

10.9%

暗号化コプロセッサ40.5%

32.9%

26.8%
現在のプロジェクト
1
３年以内

20.7%

20.3%

7.4%
8.8%

ASSP

4.6%

外部/分散処理依存のシステム
その他

45.7%

9.9%

0.4%
0.4%
3.0%
1.1%

わからない
0%

10%

20%

30%

40%

50%

60%

70%

注:複数回答により合計は100%以上になります© 2019 VDC Research Group, Inc.

4

経済発展に伴うIoT の再評価
IoT の進化に伴い多くの組織は市場にIoT ソリューションを提供するためにリソースあるいは経験の少ない領域に参入することになりました。現在 IoT 関連の接続の需要によって 「セキュリティの強化」「クラウド/IT 統合の促進」などの新たな大きな課題 (表4 を参照)が存在しています。この変化 開発リソース 費用は依然としてIoTソリューションの最大の課題の一つです。新しいIoT 特有の懸念は従来の問題点を悪化させました。

表 4: IoTソリューション開発における組織にとっての課題(回答者の割合)

14.3%

マンパワー/技術的スキルの欠如
安全性を最大化する

11.9%

IoTのために組込みテクノロジーの遺産を拡大する

11.5%

コストの削減9.6%

クラウド/データセンターの統合

9.1%
7.5%

パフォーマンスの改善

6.7%

接続費用を削減する
パフォーマンスの改善

5.2%

クラウド/データセンターの統合

5.2%

外部ソリューション供給者やISVsとの調整

4.7%

ハードウェアのフットプリントの削減

4.6%

充分な容量

2.4%

その他

2.6%
4.7%

わからない
0%
組織が新たな開発と人手不足の課題に直面しているため

5%

10%

15%

20%

スケジュールと市場投入までの時間短縮などの課題が拡大してきました。プロジェクトスケジュールの遵守は 製品開発にとって大きな課題であり プロジェクトの3 分の1 以上が遅延しているという報告があります。大きな遅延は運用コストを増大させるだけでなくンスを逸することになり売上に影響がでます。製品の本質的な価値が予測できれば明らかに市場やセールスのチャ顧客との信頼を獲得し設備投資への可視性の向上から追加投資が可能となります。プロジェクト遅延率が比較的高いにもかかわらずこの測定基準に対するパフォーマンスは過去数年間で向上しています。この改善は確かに新しい開発技術と方法論からきています。ただし IoT によるビジネスおよび開発要件の変更の規模により 現在のスケジュール遵守レベルを維持または改善するために新たな対応が必要になります。

© 2019 VDC Research Group, Inc.

5

開発の総費用
VDC の総所有コスト計算機（以降TCO 計算機）
VDC のIoT＆Embedded Engineering
Survey には さまざまな業界の700 人以上の回答があり その結果は TCO 計算機の作成に使用されました。

算に使用します。プロジェクトごとのデバイス BOM（Bill of Material）コスト

開発コストの配分 エンジニア数 エン
ジェクトの長さ

プロ

フィールドに導入された製品の平均寿命

ドウェアおよびソフトウェアコンポーネントの選択せざるを得ない大きな要因になっています。さらに顧客が報告/要求する欠陥またはソフトウェアパッチの総数
各パッチまたは欠陥修復に必要なIT とエンジニアリングの期間（時間）の合計および動作不能になり修復が必要なデバイスの推定割合 または 毎年の交換台数などです。

く行わないと現状の要件だけでなく過去のプロジェクトでの投資にも影響され代用品を用いると新たな人件費やコストが発生する可能性がでてきます。テクノロジを選択時に実施する多くの評価検討において決定者はテクノロジの潜在的な影響と費用組織やプロジェクト特有の要件を超えて同じソフトウェア特定の傾向や推測がでてきます。BOM（Bill ofMaterial）コスト 開発コスト 運用 欠陥 修復率など 総所有コスト TCO（Total Cost of Ownership）に影響を与える多くの費用があります。この統計の一部はを強く受けていますが業界あるいは人口統計の影響一部の技術選択肢はプロジェクト成果に大きな影響があると言えます。その一つはソフトウェア開発言語の選択でした。

プログラミング言語を選択する複数の要因（メモリ容量専門性従来のソフトウェア資産等）がありますがジェクトはTCOに報告される傾向にありました。しかしキテクチャを使用する同じ垂直市場のェクトの期間プロジェクトの結果に重きを置いていま動しチャ同じ言語

同じ垂直市場で使用すソフトウ

ェアの欠陥率とコストは同様のプロジェクト間で一貫しているこ

ジェクトの結果と同じプロセッサアーキテク

多くのプロ

Java やC＃ベースのプロジェクトを除きとが分かりました

す。さらに社内のを考慮して言語を選択すべきです。私たちの調開発言語を使用する同じ垂直市場のプロ
同じプロセッサアー

同様のプロジェクトを比較した時に査によると比較コスト計算ではテクノロジの選択を正し対効果を考慮することが重要です。

TCO 計算機は 次に示す様々な統計を計

ジニア一人当たりの労務費の平均

IoT / 組込市場は 非常に複雑で異機種が混在しています。組込市場で必要とされる幅広い機能とフォームファクタは 特定のハー

多くのソフトウェアの欠陥やパッチが出荷後チームの規模

開発コストはプロジ開発者のコストによって大きく変結果は大きく変動します。技術（ソリューション）選択をする際に費用対効果の影響を効果的に測定するために VDC はTCO 計算機を作成しました。最近の調査結果を見ると Ada はさるプロジェクトの結果も考慮に入れていまざまなプロジェクトの成功の指標に大きな影響を与えた言語でます。

した。

© 2019 VDC Research Group, Inc.

6

開発の全費用計算例
開発の総費用に言語選択が与える影響を説明するために計算機のシナリオとその出力例をいくつか挙げました。最初の例は x86 プロセッサを使用して10000 台製造し ソフトウェア開発にはC が使用された通信/ネットワークプロジェクトを評価しています。 この計算では Ada は節約効果が大きく ソフトウェア開発コストを27％削減できる可能性があることが分かりました。

表5：通信/ネットワーク/ x86 ベース開発プロジェクトでのソフトウェア開発コストの変化（C を使用した場合に対するコストの変化率)

0%Adaを使用した場合Javaを使用した場合-5%

C++を使用した場合

C#を使用した場合-11.7%-11.5%

-5.0%

-10%

-15%
-20%
-25%
-30%

-27.0%

ご存知かもしれませんが 航空宇宙と防衛分野ではAda は長年使用されてきましたが その業界も急速に変化しています。かつてはPowerPC プロセッサを多く使用していましたが 現在はARM に移行しつつあります。
システムインテグレータは COTS 主導のSWaP-C（ Size, Weight Power and Cost ）をより重視しています。技術部門では新しい手法とツールを使用してアジリティ（アジャイル開発）を実現することにも新たな焦点を当てています。従来のプロセスが予測可能な結果をもたらすであろうという信念に基づいてていました。開発サイクルが長い業界では明らかに体系的かつ継続的な開発が行われテクノロジの選択がさらなる効率向上をもたらす事を理解することが重要です。ARM プロセッサとC 言語をプログラミング言語として使用して この分野で5,000 台を開発するプロジェクトを検証してみると Ada は再び最大のコスト削減ができることを示し ソフトウェア開発コストを38％50 万ドル以上削減することができます。
表6：航空宇宙および防衛/ ARM ベースの開発プロジェクトでのソフトウェア開発コストの変化（C を使用した場合に対するコストの変化率）

0%

Adaを使用した場合Javaを使用した場合

C++を使用した場合

C#を使用した場合-1.7%-5%-10%-11.0%-15%-12.5%

-20%
-25%

-30%
-35%
-40%

-38.0%© 2019 VDC Research Group, Inc.

7

コスト計算の結果は 各分野での係数や考慮事項で大きく変化します。Ada は場合によっては 最良の選択肢ではないかもしれません。 明確な利便性は見だせないかもしれないし 他の言語を選択した方が良い場合もあります。それでもAda は一般的に良い選択肢と言えます。例えば 自動車/ ARM /C プロジェクトでは C の継続使用で開発コストの削減が望めない場合でも あるいはAda による開発リスクが高くない場合でも 諸事情によりAda への変更ができず C は継続して利用されることがあります。
表7：自動車/ ARM ベースのプロジェクトにおけるソフトウェア開発コストの変化（C を使用した場合に対するコストの変化率）

60%

55.9%

50%
37.7%

40%
30%
20%
10%
0%
-10%Adaを使用した場合
-7.0%

1.0%
Javaを使用した場合

C++を使用した場合

C#を使用した場合-20%

Ada が開発コストを削減できる理由は何か？
TCO 計算機で費用削減できる理由を探るために 主な５つのAda の優位性を特定しました。

1. 低コストの開発リソースコスト管理で大変重要なことの一つは人件費です。 高度な教育を受けた経験豊富なエンジニアの賃金は高くなる傾向にあり特に組込システムエンジニアに当てはまります。ソフトウェア開発言語のスキルなどが賃金に大きな影響を与えています。例えば Adaを使用しているエンジニアの人件費の平均値は Cを使用しているエンジニアの10％減
Javaを使用しているエンジニアの20％減でした（それぞれ85,000ドルと95,000ドル 105,000ドル）。

一見すると この点に関してAdaの相対的な立ち位置は驚くべきものです。長年にわたって セイフティクリチカル市
場と技術は 高コストの労働市場で 大幅なコスト増をもたらしていました。時々この専門性によって高い保険の費用が発生しました。コンシューマ機器と航空宇宙/防衛市場で人件費データを比較しても 多くの場合 それは真実です。しかしセイフティクリチカルの知識を持ったエンジニアの報酬は過去ほど高いものではありません。現在人気のC++などの言語を修得したエンジニアの需要が高く 場合によっては 一般的ではない言語開発者の市場賃金は低下する傾向にあります。さらに IT環境で多く利用されているJava等の言語使用が増えているため 労働市場が拡大し全体的には賃金が低下しています。

© 2019 VDC Research Group, Inc.

8

2. Ada の平均的なプロジェクトの開発期間は短縮される傾向
Ada の開発環境やライブラリが確立されているため エンジニアは直ちに開発着手できます。投資を軽減し 市場投入までの時間を短縮できます。Ada のプロジェクト期間は 実際 平均的なCのプロジェクトよりも30％短縮され この点に関して他言語を使用する全てのプロジェクトと比較して有利な調査結果となりました（表8 参照）。結果として Ada プロジェクトの経費は労働費の割合が低いことが報告されています。 つまり 多くの商用プロジェクトで使用するとエンジニアに関連する社内の運用コストのリスクを低減し予想以上に時間がかかるプロジェクトの潜在的なコストを押し下げています。

表 8: 全プロジェクト期間の月数（仕様作成から出荷までの時間）
ソフトウェア開発言語使用ごとで分類（回答の平均値）

17.7 現在のプロジェクトC
15.9 現在のプロジェクトC++
14.2 現在のプロジェクトC#
14.0 現在のプロジェクトJava12.2 現在のプロジェクトAda
3. Ada プロジェクトはスケジュール通りに終了する率が高い傾向。
スケジュール遵守はエンジニアリングプロジェクト管理にとって重要な点の一つです。遅延の原因となる理由は（判る範囲に絞ったとしても）いくつも存在しますが OEM はプロセスや技術の変更をしながらスケジュールを管理することに多くの労力を払っています。繰り返しになりますが ソフトウェア開発言語の選択は プロジェクトの成果との大きな相関関係を示しています。 例えば C を使用しているエンジニアがAda を使っている人に比べて 予定よりもプロジェクトが遅れたことの報告は3 倍以上ありました。つまり Ada をソフトウェア開発言語として使用しているとプロジェクト期間は 短縮されるだけではなく遅延のリスクも減少させます。

© 2019 VDC Research Group, Inc.

9表9：ソフトウェア開発言語の使用別 現在のプロジェクトスケジュールの遵守
ソフトウェア開発言語使用による分類
（回答率）

100%
90%

18.8%

12.8%

16.3%

19.0%

24.0%

80%
70%

40.8%

60%
50%

予定より早い
42.9%

41.3%

予定通り
42.7%

68.8%

わからない

40%
30%

45.5%

20%
10%
0%

12.5%

予定より遅れている

0.9%

39.7%

39.7%

1.0%

32.7%
0.6%

4. 人的資源の活用
ソフトウェア開発はエンジニアリング組織にとって最大のコストセンタで開発チームが不必要な費用追加を最小限に抑えることが重要です。この観点で人的資源を選別して用しているユーザよりも別の分野に充てることができます。実際に 他言語を使Ada ユーザはプロジェクトチームのソフトウェア開発に占めるコストの割合が少ないと報告されています。さらに クラウド/ IoT や分析機器など 差別化が必要な分野でAda ユーザの割合が高くなっています。

© 2019 VDC Research Group, Inc.

10表 10: プロジェクトごとの開発費の推定配分
ソフトウェア開発言語別の分類（回答の平均値）

100%
90%
80%

33.8%

39.6%

40.7%

38.3%

37.6%

データ/分析

70%
60%

ソフトウェア
機械
20.0%

18.8%

30%

20%
10%
0%

17.8%

18.3%

50%
40%

クラウド/IoT

24.4%

25.2%

14.4%
6.4%

7.7%

13.1%

7.6%
1.8%

8.7%
1.7%

Ada

C

C++

17.8%

15.6%

電気その他

20.5%

11.7%

21.8%

11.5%

10.9%

12.4%

C#Java1.2%

5. ソフトウェア開発のコスト削減
従来報告されているソフトウェアの効率性に関する統計と比較しても Ada は プロジェクトの総開発費を軽減できることを示しています。Ada は 実際に他の主要言語と比べて 開発の平均総費用が約半分であったという報告があります。それは 業界の平均に従って結果を正規化するTCO 計算機の多くのシナリオにも当てはまっています。
表 11: ソフトウェア開発言語別プロジェクト毎の推定総開発費用（回答の平均値）$3,000,000$2,500,000$2,108,861$2,281,653$2,407,206$2,286,948$2,000,000$1,500,000$1,000,000$1,033,429$500,000$0AdaC© 2019 VDC Research Group, Inc.

C++

C#Java11

Ada の優位性
前述の定量化された指標とは別に Ada の開発における利便性 ならびに その結果となった経緯を理解することが重要です。 Ada の優位性を検証するために 主な4 つの理由を説明いたします。

1. 信頼性IoT に注目されていますが依然として組込システムが成功するために信頼性は最も重要な課題と言えます。 多くの点で IoTがもたらすビジネスでのより深い相互接続で 信頼性の重要度はさらに増します。信頼性が重要な点の一つは デタミニスティック（確定論的）ならびにリアルタイム性によるものです。表2に示すように 多くのエンジニアにとって大きな課題です。 長年Ada はセイフティクリチカル市場で利用されてきた実績があり 多くの機能を備えています。例えば この観点で 認定済のコードジェネレータが利用できれば 認証取得文書の作成が容易になります。
そのためAda の実績から組込およびIoT 開発プロジェクトでの選択肢の幅または使用できる範囲が拡がります。そのうちの半分は 依然としてリアルタイムの要件が含まれています。さらに SPARK のようなツールソリューションを使用することで 形式検証の利用ならびにデータ/プログラムフローの正しさを証明するプロセスにより 検証時間とコストをさらに削減できます。 そのため 他言語とは異なり ランタイムエラーの発生を未然に防止 変数を使用前に初期化するため セキュリティ悪用の脆弱性等も軽減します。

2. 再利用性
前述した市場投入までの時間短縮のため効率性を重視して再利用に焦点を当てる必要があります。 過去の投資を新たな設計に利用できない場合でも 技術開発に貴重な工数を割り当てる余裕がありません。 Ada は再利用性を念頭に置いて設計されており その文法は実装時の依存関係を軽減します。Ada はISO 規格に準拠しており あいまいさは少なく 再利用性は高くなります。

3. 柔軟性と拡張性
今日の市場では 敏捷性と将来の要求に対応する能力を組織は最大限に高める必要があります。 テクノロジの選択は導入の速さと費用対効果を最大化するために 同じことを考慮する必要があります。認証が必要な製品では 柔軟性と拡張性がさらに重要となります。認証案件は一般的に時間とコストが増大する傾向にあります。そのため開発手法を簡素化して 認証（ならびに再認証）に係る時間とコストにおいて 新たな変更に対する影響を最小限に留める必要があります。 その点でAda の階層化ライブラリは オリジナルを修正または再コンパイルすることなくモジュールを拡張できます。

4. 使いやすさ他のテクノロジと同様に 導入 開発者の投入 そして最終的には 優位性はその使いやすさによって大きく左右されます。上記のように 他の言語に比べてAda のプログラミング規則は厳密で デバッグ/検証に余分な時間を費やすコーディングエラー等を最小にすることが可能です。この機能によって 特定のビットおよびメモリサイズ等に関して検討する時間が減るため 使いやすさも向上します。そのため C では さまざまなコーディングメカニズムを実装する必要があります。使いやすさの理由は 明らかで 従来から一般的に利用されているテクノロジのスキルセットと経験も満たしているからです。この目的のために Ada コミュニティは Ada を習得するためにC/C ++ユーザを対象とした広範なライブラリと文献を作成しました（多くのコンピュータサイエンスのカリキュラムに伝統的なAda が含まれることは言うまでもありません）。実際

Ada は他言語とのインタフェースが既に組込まれているという点で優れています。多言語を用いた開発の頻度が高い今日のプロジェクトを考慮するとに重点が置かれます。

© 2019 VDC Research Group, Inc.

今日の環境では開発者の経験の向上

12

結論
組込システム工学の実務を再定義する必要性と機会はこれまでほとんどありませんでした。IOT は システム機能とビジネスプロセス要件の広範囲にわたる変化を引き起こしました。残念ながら 多くの場合 要件が変更されても 開発テクノロジと実務を組合せて十分な再評価は行われていませんでした。特定の機能要件を充足する必要性から多くの場合 開発では部品表のコンポーネントを重視する傾向にあります。 また 製品化までの時間が限られているため 現状を維持したまま既存の開発環境を利用し続けることを選択する必要があります。
開発技術（ツール）は組込システムの開発作業で変動幅のある費用の一つで大きな影響を及ぼします。製品納期が顧客満足度に影響があるだけではなく サービス収入にも影響を与える可能性があります。そのため 開発チームの効率は非常に重要になります。今回の調査では プログラミング言語の選択の影響は大きく プロジェクト期間の短縮
スケジュールの改善

最終的には開発コストの削減につながることを示しています。多くの要因が言語選択に影響を与え 決定を左右しますが 今回の調査によると Ada の進化は技術的にも財政的にも健全なソリューションを提供しながら 開発組織にとってより魅力的な選択肢であることを示しています。

© 2019 VDC Research Group, Inc.

13