
Adaは米国国防総省(DoD)が1970年代後半に推進した「Common High-Order Language」プロジェクトの成果として、1980年に仕様が確定したプログラミング言語である。世界初のプログラマーと呼ばれるAugusta Ada Lovelaceの名を冠し、Jean Ichbiahが率いるフランスHoneywell-Bullのチームによる設計案が採用された。強い型システム、契約による設計、リアルタイム処理を意識した構文を備え、航空機やミサイル、原子力発電所など、ソフトウェア障害が人命や国家安全保障に直結する領域で採用が続いている。
この記事の目次
- DoDの言語乱立とAda選定
- 強い型システムと契約による設計
- 航空・宇宙・防衛での豊富な実績
- オープンソース処理系GNATと現代の用途
- まとめ
DoDの言語乱立とAda選定

1970年代初頭、米国国防総省では兵器システムごとに数百種類のプログラミング言語が使われており、保守コストが膨大化していた。1975年、DoDは「High-Order Language Working Group」を立ち上げ、CIIホネウェル・ブル社のJean Ichbiahらのチームに新言語の設計を委ねる。要件はリアルタイム性、組み込み機器対応、強い型システム、例外処理、並行処理など極めて多岐にわたった。
1980年に最初の仕様MIL-STD-1815が発行され、1983年にANSIで標準化(Ada 83)された。番号1815はAda Lovelaceの生年に由来する。1995年にはオブジェクト指向機能を取り入れたAda 95がISO標準として初の「OO対応国際標準言語」となり、その後Ada 2005、2012、2022と改訂が続けられている。
強い型システムと契約による設計

Adaの最大の特徴は、コンパイル時に多くのバグを検出する設計思想にある。整数型は範囲制約付きで定義でき、たとえば「type Speed_KPH is range 0 .. 300;」と書けば0から300以外の値を代入しようとすると実行時例外が発生する。配列の境界チェック、サブタイプ、強い型変換要件など、防御策が言語仕様レベルで網羅されている。
Ada 2012からは契約による設計(Design by Contract)が標準サポートされ、関数に事前条件、事後条件、不変条件を宣言できるようになった。これらの記述は形式検証ツール群SPARKと組み合わせることで数学的に証明可能なコードへと昇華される。SPARKは英国のRolls-Royceや航空電子機器メーカーで採用され、ソフトウェアの不具合をゼロに近づける実践基盤として機能している。
航空・宇宙・防衛での豊富な実績

Adaが採用された代表例にはエアバスA350やA380、ボーイング777、ロッキード・マーティンのF-22、欧州のArianeロケットがある。1996年のAriane 5初号機の打ち上げ失敗ではAdaコードのオーバーフロー処理が原因と報じられたが、調査報告書はソフトウェアの再利用判断と要件管理に主因があるとし、言語自体の問題ではないと結論づけている。
鉄道分野でもパリやロンドンの地下鉄、ニューヨークの信号制御システムでAdaが使われており、無人運転を支える自動列車制御ソフトウェアの一部はSPARKで形式検証されている。原子力、医療機器、宇宙探査機などミッションクリティカル領域では、テスト中心のC/C++開発に対して証明中心のAda開発という棲み分けが現在も続いている。
オープンソース処理系GNATと現代の用途

Adaを今日身近にしたのは、ニューヨーク大学のRobert Dewar氏らが中心となって開発したGNATコンパイラである。1992年にFSFの一部としてリリースされ、Adaの普及を一気に広げた。後にAdaCore社が設立され、GNAT Proとしてプロフェッショナル向けサポートを提供する一方、GNAT Community/FSFエディションで個人や教育機関も自由に使える環境を維持している。
TIOBEなど一般的な言語人気ランキングでの順位は高くはないが、認証コストが高い安全領域では新規プロジェクトでもAdaが選ばれることが珍しくない。最近ではドローン制御、自動運転、医療用ロボットなどでもAda/SPARKの活用例が報告されており、人命に直結する組込み分野での「枯れた選択肢」としての地位を保ち続けている。
まとめ
Adaは1980年にDoDの統一言語として誕生し、Ada Lovelaceの名前にふさわしい厳格な型システムと契約による設計で、安全性最優先の領域を支えてきた。エアバスや地下鉄、宇宙機の制御ソフトに息づき、形式検証可能なSPARKと共に「証明できるソフトウェア」を志向する現代の高信頼性開発でも重要な選択肢となっている。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント