パソコンや携帯電話からニュース、天気予報、新製品情報などにアクセスする便利さは今や誰でも自由に享受している。この容易な情報アクセスの基底になるソフトウェア技術としてウェブブラウザ技術があることは広く知られている。
このウェブブラウザ技術をJavaなどのインターネット時代にマッチしたプログラミング言語と融合することにより、ウェブブラウザは一方的な情報発信ツールではなく対話型ツールになり、人間がコンピュータと対話することで簡単な問題解決ができる技術に進化した。
例えば、週末にゴルフに行きたいと思ったら、ゴルフ場の値段、空き具合などの情報を調べ、予約まで済ませることができる。このようなウェブ技術の進化を、経営情報システムにも役立てられるのではないかと考えるのは自然の成り行きである。
ご存知のように顧客ニーズの多様化、急速な技術進歩への対応は重要な経営課題であり、顧客管理、生産管理、新商品開発などの重要な経営システムも迅速かつ利便性のよい形で提供、改変できることが要請されている。このような背景から、最近ではWebサービスというウェブベースの情報システム構築技術が注目されている。また経営ニーズに迅速に対応するという観点を強調して「サービス指向アーキテクチャ(SOA)」という言い方で、この新技術を呼ぶ方もいる。
前置きが長くなったが、今回はメインフレーム時代に類似したニーズに対して、どのように問題解決したかをご紹介したい。
エンドユーザー言語とAPL
メインフレームコンピュータの演算速度の高速化と、メインフレームを遠隔から利用可能にする通信と端末技術の進歩により、職場の自分の席から問題解決にメインフレームを使いたいというニーズが1970年台後半頃に高まった。それまではメインフレームは貴重な財産で、利用するには時間をあらかじめ予約し、その時間になると自分のプログラムを表現したカードや紙テープや磁気テープを持参してコンピュータルームに出向いて仕事をしていた。結果的に若いプログラマは深夜の時間しか予約できず、当時「プログラマ=徹夜に強い人間」と言われていた。
これを解決するキーになる技術として、TSS(Time Sharing System)というオペレーティングシステム技術が開発された。人間とコンピュータの対話は、秒単位の双方向のやりとりによって構成される。一方、メインフレームコンピュータは1秒間に数百万以上の演算を処理できるようになった。
この結果、コンピュータの演算装置であるCPU(Central Processing Unit)を秒以下の小さな単位の時間セグメントに細分し、各セグメントを人間に順番に利用させるようにした。こうすることで人間から見るとコンピュータを占有して対話しているが、コンピュータから見ると同時に多数の人間にサービスを提供できるようになる。以上が、TSSの仕掛けの簡単な説明である。
TSSは当初、プログラマが自分の席でプログラムを作成し(エディタを使ったコーディング)、デバッガを使ってモジュールレベルのデバッグのために主として利用された。
一方、TSSという利用形態の普及と並行して、エンドユーザーが自分で問題を解決するエンドユーザー言語という新種のプログラミング言語へのニーズも高まり始めた。
1978年頃、ある電機メーカーの顧客とある国立研究所の顧客から、「最近米国ではAPL(A Programming Language)というプログラミング言語は普及し始めているが、これはエンドユーザー言語として非常に使いやすいので、日立製作所のメインフレームにAPLの処理系を用意して欲しい」というご要望を頂いた。
エンドユーザー言語は、(1)基底となるハードウェアやOSやファイルシステムなどを知らなくてもプログラム作成ができる、(2)端末から対話型でプログラムの作成とテストができ、完成したプログラムは繰り返し実行ができる、(3)表現力に富み、短いプログラム量で意図した表現ができる、(4)作成したプログラムが解読しやすく、変更が容易である――という要件を満たす必要がある。
ご要望を頂き、早速APLを勉強してみると少なくとも(1)から(3)は十分に満足していると判断し、さっそくTSS環境で使える対話型言語としてAPLの処理系を開発した。なおAPL言語は、考案者であるIverson博士の名前を取ってIverson言語とも呼ばれた。
APL言語が上記の(3)の要件をいかに満たしているか、簡単な例でご紹介しよう。
変数Salesは5行、12列の配列で各行に5種類の製品、各列に左から右に1月から12月の売り上げが入っている。各製品の年間の売り上げを求めたければ、「+/Sales」と記述するだけでよい。「+/」は変数Salesの各行の和を求める演算だからである。
この例で分かるようにAPLでは、ループ表現を使わなくても配列全体で演算でき、しかも演算指示が簡潔な表現でよい。