Systems Application Architecture

**Systems Application Architecture**（**SAA**、えすえーえー）は、IBM が1987年に提唱した、コンピュータ用のアプリケーションソフトウェアに関する、標準化のためのガイドラインである。

## 概要
SAAはアーキテクチャの1つであり、特定の製品では無い。SAAには主に以下3つの標準により構成され、それぞれ発表年度によりガイドが発行された。
* Common Programming Interface (**CPI**)
* Common User Access (**CUA**)
* Common Communication Support (**CCS**)

また、これらの上にオフィスシステムなどのSAA共通アプリケーションが含まれた。

SAAの対象となるプラットフォーム（**SAA環境**）は以下の4つとされた。
* メインフレーム （MVS、VM）
* ミッドレンジ （OS/400）
* パーソナルコンピュータ （OS/2）

IBMはアプリケーションベンダーにSAA準拠を広く呼びかけた。特にCUAは、Microsoft Windows 2.0やMicrosoft Windows 3.0のユーザインタフェースのベースともなった。またMS-DOSのDOSシェルもCUAに準拠している。

## 歴史
IBMは1960年代のSystem/360アーキテクチャに続き、1970年代のSystem/370アーキテクチャとSystems Network Architecture(SNA)の成功によって、個々の製品の優劣だけではなく、オペレーティングシステムとネットワークのアーキテクチャ（仕様）を握ることで、市場に対する絶大な影響力を確保した。

しかし1980年代になると、コンピュータの利用範囲も広がり、オペレーティングシステムやネットワークなどのインフラの上に構築されるアプリケーションの重要性が増し、アプリケーションの標準化の必要性が高まった。

またIBMは各種市場に向けて多数のコンピュータシリーズやオペレーティングシステムを開発・投入した結果、大型（メインフレーム）ではMVSやVSEやVMやTPF、中型（ミッドレンジ）ではS/36やS/38やAS/400あるいはUNIXであるAIX、小型（パーソナルコンピュータ）ではPC DOSやOS/2など、多数のプラットフォームが存在したが、相互の使用できるプログラミング言語や、ユーザインタフェースなどの操作性や、ネットワークの接続性が微妙に異なっていたため、組み合わせて使用するユーザーには手間がかかった。このためDECのVAXは「シングルアーキテクチャ」を売り文句にしていた。

1987年3月にIBMはSAAを発表した。当時は「IBMが遂にアプリケーション市場にも支配力を強めるか」と大きく報道された。実際には、IBMはIBMの主要かつ戦略的なプラットフォームを選んで**SAA環境**とし、標準化を段階的に各製品に対して実施していった。同時にアプリケーションベンダーにSAAへの準拠を提唱した。

SAA環境には、「IBM独自OS」色の強い、MVS、VM、OS/400、OS/2の4環境が選定された。メインフレーム用のIBM独自OSでも、VSEやTPFは含まれなかった。AIXはOSF陣営として別途標準化が進んでいたためか、SAA環境では無いが、SAA環境と相互運用可能性を持つ環境とされた。

IBMとマイクロソフトのオペレーティングシステム共同開発契約も背景に、MS-DOS、IBM DOS、Microsoft Windows 2.0、Microsoft Windows 3.0なども、部分的にSAA準拠が進められた。また当時は独立企業であったロータスデベロップメントもSAA CUA準拠のアプリケーション開発を進めた。ただしマイクロソフトはWindows 3.1より、ショートカットキーのデフォルトをMacintosh風に変更するなど、徐々に独自のユーザーインターフェースに向かい、SAAから離れていく事になる。1991年にはオブジェクト指向のユーザーインターフェースに進化したCUA '91が発表され、OS/2 2.0のワークプレース・シェルで実現したが、これは1995年のWindows 95より早く、オブジェクト指向はより徹底していた。

しかし1990年代後半には、SAAには含まれていなかったJava、Windows 95、TCP/IPなどの普及もあり、SAAは徐々にフェードアウトしていった。なお現在でもWindowsなどのGUIのメニュー配列やショートカットキーの一部などにはCUAの影響が残っている。

## 詳細
### Common Programming Interface
主要な言語としてCOBOL、FORTRAN、C言語が選定された。またプロシージャ言語としてREXXが選定された。

SAA環境のオペレーティングシステムや主要ミドルウェアでは、これらの言語のサポートが進められた。REXXはVMのCMSで生まれた言語だが、MVSのTSOやOS/2、更にはPC DOSにも搭載された。

なお、日本の大手メインフレームユーザではPL/I使用比率が高かったため意外と受け取られたが、SAAはメインフレームからパーソナルコンピュータまでを横断した標準化であり、プラットフォーム固有の規格や言語を禁止するものではない。

### Common User Access

:*詳細は [[Common User Access]] も参照*

キャラクタベースとグラフィカルベースの2種類が規定された。Common User Access (CUA) 登場以前より「F1キーはヘルプ」などは各アプリケーションでほぼ標準となっていたが、それ以外のコマンドの位置はまちまちであった。

例えば、グラフィカルベースでは以下が推奨された。これらは現在もWindowsなどのグラフィカルユーザインタフェース (GUI) のベースとなっている。
*コマンドバーは左から「ファイル、編集、・・・、ヘルプ」とする
*「ファイル」のプルダウンメニューの中に「印刷」「クローズ/終了」などがある
*「編集」のプルダウンメニューの中に「コピー」「貼り付け」などがある

なお、ショートカットキーは CUA'87 の当初は以下が推奨されたが、後にはアプリケーションの自由とされた。
*[Shift]+[Delete] 切り取り・カット
*[Ctrl]+[Insert] コピー
*[Shift]+[Insert] 貼り付け・ペースト
*[F3] 終了

当時はマイクロソフトとIBMはオペレーティングシステム (OS) 共同開発の提携中であったため、以下はIBM CUA準拠となった。
* MS-DOSおよびPC DOS4.0で採用されたDOSシェル
* Windows 3.0のGUI --- CUA'87準拠（Windows 3.1より、MacOS風の操作性に変更する）
* OS/2 1.1 のPM (Prezentation Manager) --- CUA'87準拠
* OS/2 2.0 のWPS (WorkPlaceShell) --- CUA'91準拠（オブジェクト指向のGUIを追加）

マイクロソフトによるWindows 3.0開発キットには、「IBM SAA CUA'87」のマニュアルが付属しており、初期の各社のWindowsアプリケーションはCUA '87を参照して開発された。

### Common Communication Support
主要な通信プロトコルとして、Systems Network Architecture (SNA) が選定された。当初はSNAのサポートレベルが各プラットフォームで差が大きく接続性に制約がある場合もあったが、徐々に改善された。

## 関連項目
* IBM
* Systems Network Architecture
* AD/Cycle
* ユーザーインタフェース

## 関連書籍
* IBM 21世紀への挑戦―SAA開発に賭ける男たち（著：マイケル キレン、訳：栗田 昭平）

## 外部リンク
* Introduction to Systems Application Architecture -IBM（詳細はリンク先のPDFファイルを参照）
* Designing SAA applications and user interfaces - IBM（詳細はリンク先のPDFファイルを参照）