macroscope

( はてなダイアリーから移動しました)

データの可視化の道具「NCARグラフィックス」および「GKS標準」とわたしのかかわり

【まだ書きかえます。どこをいつ書きかえたか、かならずしも明示しません。】

【わたしのむかしの経験や最近の経験を、情報が消えないようにひとまず書きだしてみたものです。解説としてわかりやすくする配慮ができていなくてすみません。西暦 2000年までのわたしの認識は 増田(2001) の解説に書いたので、それをさきに見ていただいたほうがよいかもしれません。】

- 1 -
2020年8月中旬、わたしはおよそ15年ぶりに作図ソフトウェア「NCAR Graphics」の操作をしてみた。ネット上で、わたしの教材用ウェブページが参考になったと書いていた人がいた (その話題は作図ではなく空間内挿だったけれども)。その教材ページが読者に知識をつたえるものとしては不完全なままだったのを思いだして、改訂しようと思った。残念ながら、いま計算機でデータを可視化しようとしている人にすすめられる教材にはならない。しかし、いま教材をつくる人の参考のために、わたしの経験をいわば「動態保存」しておきたいと思ったのだった。

- 2 -
わたしが大学院にはいって気象学を専攻しはじめた1980年ごろ、気象学の研究や勉強にはデータをグラフにしたり地図上に表示してみたりすることは不可欠だったのだが、図をつくる作業の大部分は手がきでおこなわれていた。プリンタで文字をならべて大きな図をつくることもあったが、紙を大量につかってもあまり多くの情報をつたえられなかった。計算機からの出力装置として、ボールペンのようなペンを縦横に動かして線画をかく「XYプロッタ」という装置がつかいはじめられていた。Fortran言語でプログラムを書く人むけに、プロッタを操作するためのサブルーチン集が用意されていた。しかし、プロッタは、ペンがかすれやすいうえに、時間がかかるので、あてになる作図装置ではなかった。

しかし、時代はかわりはじめていた。計算機の端末機は文字だけのものが多かったが、図形も表示できるものがふえてきた。レーザービームプリンタなどの、紙面をうめつくす白黒の画素のあつまり(ラスター raster)を印刷できるドットプリンタがつかえるようになり、XYプロッタ用の作図プログラムの出力データを変換してプリンタに線画を出すことができるようになった。これで作図のハードウェアはえられたが、ソフトウェアの機能がほぼ「プロッタのペンを動かす」ことだけだったから、データの可視化のためにはユーザー側で紙面上のわりつけを意識しながらプロッタルーチンを呼びだすプログラムを書く必要があった。

- 3 -
1981年、わたしが大学院生として所属していた研究室の助手 (いまならば助教)だった中村 一 さんが、アメリカ合衆国 コロラド州 Boulder にある 大学共同利用研究所 National Center for Atmospheric Research (略称 NCARで、「エヌカー」のように読まれることが多い。研究所名を日本語訳すれば「全国大気研究センター」となるだろう) に共同研究のために数か月滞在したあと東京大学に帰ってきた。そのとき、オープンリールの磁気テープにはいった形で、Fortranプログラム集を持ちかえってきた。そのうち約半分が作図のためのサブルーチン集で、世界の多くの気象研究者から「NCAR Graphics」とよばれていた。

- 3A -
当時の気象研究者がつかうことのできた作図プログラムのうちで、NCAR Graphicsはあきらかに先進的だった。そうなったきっかけは共同利用研究所のサービスだった。利用者はアメリカ全国に分散している。たまにはNCARに滞在して利用することもあるが、多くのばあいは通信で利用した。1970年代、端末機はたいてい文字だけのものだったし、通信回線はおそかったから、電気通信で図形をつたえるのは実用的でなかった。NCARでは、マイクロフィッシュ (カード型のマイクロフィルム)に図を縮刷して郵送する方法をとった。マイクロフィッシュにはふつう出版物の各ぺージの写真がならんでいるが、NCARでは計算機で生成された図のページがならんだものができる。

グラフィックスをおおきく、ラスター(raster)グラフィックスとベクター(vector)グラフィックスにわけることができるが、 NCAR Graphicsの機能はベクターグラフィックスだった。図形を、点や線分のあつまりとして表現するものだ。ややおくれて、多角形領域のぬりわけが基本要素にくわわった。(文字は線からくみたてることもできるが、文字列は線とは別の基本要素とみなされていた。ただし当時のNCAR Graphicsの基本要素の文字はローマ字大文字、数字、算数記号だけだったと記憶している。)

また、NCAR Graphicsの機能は基本的に2次元の作図をするものだった。(大気は3次元ではあるが、地表面のほかに明確な面をもたないので、いわゆる3次元グラフィックスよりも、水平・鉛直さまざまな2次元断面の作図をよくつかう。廣田 1999 参照。)

NCAR Graphicsは2段がまえの構造になっていた。わたしの用語で「基本ルーチン」と「応用ルーチン」と呼んでおく。

基本ルーチンは、マイクロフィッシュ出力用装置に送る図形情報データ(metacodeとよばれていた)を書き出す。ユーザーがマイクロフィッシュ上の寸法を意識するのはうまくないから、ユーザーはデータ内容にふさわしい(x, y)座標で位置を指定することができ、それを作図装置の各ページの寸法に相対的な長さに変換する機能が基本ルーチンに組みこまれていた。1980年代にWindow-Viewport変換といわれる機能のさきがけだった。

応用ルーチンには、地図をかくもの、等圧線・等温線などの等値線図をかくもの、ベクトル場を矢印をならべて表現するものなどがあった。

- 3B -
中村さんは多くの計算を東京大学 大型計算機センターのHITAC Mシリーズ機 (OSはVOS3)でしていたので、その計算機システムにNCAR Graphicsを移植してつかえるようにした。同じ研究室だけでなく多くの人から使いたいという希望があった。大型計算機センターには「ライブラリ プログラム」という制度があったので、NCAR Graphicsの移植をその制度にのせてセンター利用者に提供することになった。東大でのライブラリプログラム名は「NCARG」とした[注1][注2]。移植作業には、当時大学院生だった万納寺 信崇さんとわたしが参加した。万納寺さんが就職、中村さんが異動でいずれも気象庁に移ったので、1985年から東大でのNCARGのメインテナンスはわたしが担当した。

  • [注1] NCARから移植したライブラリプログラムのうち、グラフィックスを NCARG、それ以外 (高速フーリエ変換など)を NCARL とした。
  • [注2] NCARGのよみかたはとくに決めなかったが、わたしは「エヌカー ジー」とよむか、「エヌカー グラフィックス」と言っていた。(「エヌカーグ」についての質問がくるとまごついたが、ひとがそう読むのも無理もないと思った。)

基本ルーチンについては、metacodeを書きだす機能はつかわず、東大のHITACにそなえられた (計算機メーカー提供や、ドットプリンタメーカー提供の) プロッタルーチンを呼びだす機能でおきかえた。

応用ルーチンについては次のような変更をした。気象の分野では、緯度・経度座標の格子点であたえられたデータで、地図上に等値線やベクトルの矢印をかきたいことが多い。その機能は、当時のNCAR Graphicsの配布プログラムでは、応用ルーチンのプログラム中に、ここをなおせば実現できるというヒントの形であたえられていたが、そのまま動くとはかぎらなかった。東大では、移植者たちにとってつごうがよかった形で実装した。

1985年までにNCARから配布されていたプログラムは public domain とされていたから、コピーをほかにもっていくことにさしつかえはなかった。わたしはいくつかの大学などの計算機に東大版NCARGを移植した。(その多くはFACOM Mシリーズであり、HITAC Mシリーズとは共通なところが多かったので、東大版からの移植のほうがしやすかったのだった。)

- 4 -
わたしが東京大学の助手をしていた1985年から1992年まで、わたしは研究上の作図はおもに東大版NCARGでやっていた。しかし、つぎの世代の道具の整備も必要だと思った。

1980年代に、グラフィックスの標準化がすすんだ。ISOで採用された GKS (Graphical Kernel System)は、 2次元vector グラフィックスの基本的要素の作図の手つづき (Fortranでいえばサブルーチン) の標準だった。ドイツからの提案だったが、NCAR Graphicsにすでにあった機能をやや抽象化したWindow-Viewport変換がふくまれていた。CGM (Computer Graphics Metafile)は、2次元vectorグラフィックスの図形情報を計算機間でひきわたすファイルにデータを記録する形式の標準だった。これもNCARのmetacodeから進化したものとみることができた。NCAR Graphicsの開発チームは、GKSとCGMに準拠することにした。GKSのサブルーチン集を実装し、その主要な出力先をCGMファイル(の複数の表現のうちbinaryのもの)にした。NCAR Graphics基本ルーチンはGKSを呼びだすように書きかえられた。

1980年代おわりごろにはUnixワークステーションが多くつかわれるようになり、HITAC VOS3などのメインフレームOSは時代おくれと感じられるようになった。大型計算機のOSも、だんだんUnix系のものにかわっていった。

1980年ごろには、数値計算をするならばプログラム言語は Fortran にだいたいきまっていた。1990年ごろには C言語のほうが優勢になっていた。ただし気象の分野に関するかぎり Fortran は捨てられなかった。

NCAR GraphicsのGKS準拠版は、Unix系のOSでインストールしやすくつくられていた。また、Fortranのサブルーチンとしてだけでなく C言語の関数として呼びだせるようにつくられていた。したがって、これを採用すればよさそうだと思った。

しかし、NCAR Graphics のGKS版は、public domainではなく、NCARを経営する法人 UCAR (University Corporation for Atmospheric Research)が著作権を保有する有料ソフトウェアとなった。この変化の原因は、国の政策だ。ひとつは、ソフトウェアを知的財産として著作権で保護することが明確になったことだ。もうひとつは、(Reagan大統領の政権の政策として) 公共機関は税金以外の収入源をもつ努力をするべきだとされたことだ。この組み合わせで、NCARのように、外の人からも需要のあるソフトウェアをつくっている機関は、ソフトウェアを収入源にするべきだということになってしまった。

それでも、もし、NCAR Graphicsの権利が、営業熱心な企業に売られたのだったら、それがひろまって業界標準のようになる可能性もあったかもしれない。しかし実際には UCAR が権利を管理しつづけた。UCARは役所ではなく、公立・私立の大学による組合のようなものなのだが、科学研究という公共的業務を目的とする組織で、商売熱心ではない。とくに、日本の国立・公立大学で買ってもらおうとすると、両側の事務手続きのつじつまをあわせるのはむずかしかった。

それでも大学で買うことは教職員が努力すればできる。しかし、学生が卒業してからつかいつづけようとすれば、それぞれ職場なり個人なりで事務手続きしないといけない。いろいろな方面にすすむ学生に身につけてもらう技術の教材には適していないと思った。しかしこれよりも適したものに思いあたらなかった。

なんとか東大で買ってもらって移植作業をはじめてみたものの、GKSの部分をUnix系でないHITAC VOS3やFACOM MSPに移植することは簡単でなかった。日立ではKGRAF、富士通ではGKS85としてGKS準拠のサブルーチンライブラリが提供されるようになったが、これまでプロッタルーチンで利用可能だった装置のすべてをカバーしてはいなかった。GKS準拠版にきりかえたほうが便利になるという状況をつくれないまま、挫折してしまった。

京大・東大・(異動の結果) 北大・神戸大などの気象学・海洋学の同僚たちは、「地球流体電脳倶楽部」をつくって、NCAR Graphicsと同様な機能を自まえの「地球流体電脳ライブラリ」で実現する方向にむかった (林, 1995 にその時点までの歴史がある)。わたしはそれに参加しなかった。当初の地球流体電脳ライブラリは、すべての人に公開するものではなく「クラブ」メンバーのものだった。(のちにはその多くのソースプログラムをウェブサイトで公開するようになったのだが。) そしてそのクラブの関心は地球流体力学あるいは気象学・海洋学にむかっていた(惑星大気は当初からふくまれていた)。わたしのほうは、地球流体にかぎらない地球科学・地理学との道具の共有が必要だと思っていたから、 別にやることにしたのだった。

- 5 -
1992年から2000年まで、東京都立大学の助教授をつとめた。地理学科の専門科目のほかに、全学共通科目の情報処理のうちのやや上級のUnixワークステーションでの実習をふくむ科目を担当した。

- 5A -
おもに全学共通科目のために、GKSによる2次元ベクターグラフィックスの基礎の教材をつくった。おおぜいの人がデータの可視化をする世のなかには、全員ではないが、ある比率で、データの可視化の道具を基本的な部品から組み立てる能力をもつ人が必要になると思ったからだ。

GKS準拠のサブルーチンライブラリとしては、NCAR Graphicsのほかに、xgks という、Unix系OSでX Windowの画面に表示することをおもな機能とするオープンソースソフトウェア(これはのちの分類だがこう言ってよいと思う)があった。また、森(1991)の本のFortranソースプログラムがあった。これはMS-DOSで動くもので、ハードウェアとしてNEC PC9801を前提としていたかもしれない。それから、MS-DOSで動く商品のPro FortranコンパイラのNEC PC9801対応版のオプションとして売られていたグラフィックスライブラリにGKSほぼ準拠のものがあった。Unixでうごく商品のNOVA GKSというソフトウェアがあることを文献で読んでいたが自分がふれる機会はなかった。

ワークステーション教室の実習では、(xgksをためしたのだが動作が不安定だったので) NCAR Graphics のGKS版を(大学でライセンスをとって)使った。Unix上でのインストールは簡単だった。

教材の説明文は、当初はワークステーション教室内で動いていたNetNewsシステムを使ったのだが、WWWとそのブラウザ(当初はNCSA Mosaicだった)が利用可能になってからは、学内限定のウェブサイトに置いた。いまはわたしの個人サイトの[GKS (Graphical Kernel System)による2次元グラフィックス]のページで公開している。しかし、そのページにプログラム例をふくめていなかった。これでは、何をやっているかの概略はわかっても、まねてみることはむずかしいだろう。なぜそうなっていたのか、また、最近どのように変えたかは、あとでのべる。

- 5B -
わたしのGKSによるグラフィックスの教材は、初歩からさきにすすめない袋小路のようなものでとまってしまった。

ひとつには、GKSが、ISO標準になったにもかかわらず、あまり普及しなかったからだ。多様なグラフィック装置ができても、それを操作するGKS準拠のプログラムがつくられることがあまりなかった。GKSの上位互換に近い 3次元グラフィックスの標準 PHIGS のほうがややひろく知られたが、そちらもじゅうぶん普及しなかったと思う。

また、NCAR Graphics の出力機能は、CGM標準準拠の図形情報ファイルを書き出すのが基本で、それを装置に作図するのは別のプログラムだった。NCAR Graphicsに付属する ctransというプログラムで、X Windowの画面と、PostScriptとにそれぞれ出力することができたから、基本的機能はそろっていた。しかし ctrans は図形を単純に点をうつことから構成していて、XやPostScriptの多様な能力を活用しておらず、作図結果は (GMTによるものにくらべて) 貧弱な感じがした。

それから、GKSは、FortranのほかにC言語からの呼びだしかたもきめられていたのだが、GKS準拠ライブラリはFortranだけのものが多く、NCAR GraphicsとxgksはC言語からつかえたが、Fortranサブルーチンに相当するC言語の関数の仕様は、両ライブラリ間で互換性がなかった (どちらがISO標準にあっているか、わたしはたしかめなかったが)。気象以外のしごとにつく学生にFortranプログラミング能力を身につけることをすすめにくい時代になっていたので、GKSもすすめにくくなった。それで、わたしは、地理の研究で出てくるいろいろな作図をGKSでやる意欲をうしなっていった。

NCAR Graphics は、2000年ごろには、UCARが著作権をもつことはかわらなかったが、つかうことも再配布することも自由という意味で、フリーになっていた。わたしはそのソースプログラムの tar アーカイブをダウンロードして Linux 上にインストールすることはやってみた。しかしその上で(研究者または教員としての)実用的プログラムをつくることはなくなっていた。

- 5C -
わたしは、 気象データの作図を、GMTとGrADSでやるようになった。

GMT (Generic Mapping Tools)は、海底地球物理の人たちがつくったプログラム集で、緯度経度の2次元格子データや、不規則な位置に分布するデータを作図できる。Unixのシェルスクリプトで、GMTに属する複数のプログラムの実行をつなげて図をつくる。(シェルスクリプト内ではデータのならべかえに Awk をつかうことが多い。) 出力は、図形出力装置を操作するのではなく、PostScriptファイルをつくる。印刷原図に適した質のよい図をつくることができる。ただし、Window-Viewport変換のようなものはないので、位置を紙面上の長さ(cmまたはインチ)で指定する必要がある。

世界では気象を専門としてGMTをつかう人はあまり多くないと思うが、わたしは、東大にいたあいだに、海底地球物理の人からおそわって、つかいはじめていた。そして、筑波大学にアメリカから転勤してきた田中 博さんがこのんでつかっていた。日本では、筑波大学と、それよりは小規模だと思うがわたしのまわりから、気象へのGMTの応用がひろまっていった。

GrADS (Grid Analysis and Display System)は、気象の格子点データに特化した作図プログラムだ。4次元時空間の格子データをいろいろな2軸の断面で作図できる。内容はCで書かれているが、Fortranユーザーを意識したつくりになっている。複雑な図をつくるにはGrADS独自のスクリプト言語をつかう。気象の格子点データのquick lookには便利だ。反面、白黒の印刷原図に適した図をつくるのにはむいていない。

わたしは、気象の格子点データを、GrADSでquick lookし、必要に応じてFortranの自作プログラムで統計処理などの計算をし、GMTで作図する、という習慣ができた。

(そのために、GrADSの user-defined functionという機能をつかって、緯度経度格子のデータをテキストファイルにGMTのxyz2grd が読む形式で書き出すしかけをつくった。ところが、GrADSのversion 2 から、user-defined function の機能がなくなってしまった。(わかりにくい機能だったので、保守がむずかしくなったのはもっともだと思う。) GrADS version 2では数値のテキストファイル出力はできるのだが、その出力をxyz2grdが読む形に組みかえる作業を自動化する手順をまだ持っていないので、わたしは、20年まえに熟練していたこの手順さえ苦手になってしまった。)

- 6 -
わたしは2000年に東京都立大学をはなれた。そして、2001年度から2006年度まで、慶応大学 湘南藤沢キャンパス(SFC)で非常勤講師として「地球環境観測」という科目を担当した。講義科目だが、計算機をつかう実習をふくめた。そこではおもに GMT と GrADS をつかった。

2005年に、NCAR Graphics も追加しようと思った。NCAR Graphicsを、システム管理者でない教員のたちばで書きこめるところにインストールして動作テストはできた。都立大の授業でつかった例文のFortranプログラムのいくつかも動いた。しかし、C言語プログラムも用意しようと思ったところで挫折して、授業の教材として提供するまでにいたらず、整備途中のウェブページだけが残ってしまったのだった。

- 6A -
当時の慶応SFCには、CNSという教育用計算機システムがあった。それはUnix系OSのサーバーやワークステーションをたくさんふくんでいた。学生や教員は、それぞれ一定のIDでどのワークステーションにもログインすることができた。ワークステーションはサーバーのファイルをNFSのたぐいの技術で共有していて、ファイルの所在のpath名をしかるべく書けば、ログインした計算機のファイルであるかのように読み書きできた。なお、ファイルを共有するワークステーションのうちには、CPUやOSがちがうものがあった。 Sun (SPARC CPU, big-endian, Solaris)とPC (Intel CPU, little-endian, Linux) があったのだ。

ホームディレクトリのほかに、教材用のディレクトリをつくることができた。「地球環境観測」のために /pub/sfc/earthobs/ をもらって、データの可視化の教材のプログラムもデータもそこに置くことにした。

NCAR Graphics は、SunとLinuxでそれぞれコンパイルして、区別できるファイルパスに置いたうえで、各ユーザーがログインしたあと簡単な手つづき(たとえば「usesun ncarg」「uselinux ncarg」) で環境変数を設定すれば使えるようにした。

プログラム例は /pub/sfc/earthobs/example の下に、実習の課題ごとにディレクトリをわけてソースプログラムファイルを配置した。NCAR Graphicsサブルーチンのほかに、ユーザー側で (わたしの例文ならばわたしが) 用意したサブルーチンをつかうことがある。あちこちでつかうサブルーチンは、メインプログラムとは別のソースプログラムファイルとしてつくっておき、INCLUDE文 でとりこんでいっしょにコンパイルすることにした。(標準的な手順は、サブルーチンをそれぞれコンパイルしてオブジェクトファイルにしたうえで、メインプログラムとリンクする、というものなので、その手順を Makefile というファイルに書いておいて make コマンドをつかう。わたしは、巨大でないプログラムでは、あえて、INCLUDE文をつかい、makeなしでやってきた。)

プログラム例の説明文はウェブページに置いたのだが、プログラム例自体は、学生がアクセスできるファイルシステムに置かれているので、ウェブページに置かなかったのだった。

- 7 -
2020年8月、ウェブサイトにプログラム例を追加しておこうと思った。

- 7A -
ウェブサイトの読者は、わたしとファイルシステムを共有する計算機システムのユーザーではないから、読者が、あらかじめNCAR Graphicsをインストールしてあるシステム上で、わたしのウェブページからプログラム例をダウンロードして動かすことを想定しなければならない。

NCAR Graphicsの事情がだいぶ変化しているので、それをインストールするのはかならずしも簡単ではない。わたしのLinux (Ubuntu 18.04) では、(試行錯誤のすえに) あとの 9B 節のやりかたでインストールできることがわかった。しかしほかのところでの経験がないので、教材ページの NCAR Graphicsをつかう準備のところはまだ改訂できていない。

ファイルシステムを共有するばあいは、ディレクトリ ツリーの構造を利用してプログラム例を分類して配置し、その配置の相対パスをふくむ INCLUDE 文 を入れておけばいっしょにコンパイルすることができる。ところが、ダウンロードしてつかう方式では、読者がダウンロードしたものをわたしと同じ配置に保存することは期待できない。相対パス指定をするのをやめ、ダウンロードされたソースプログラムは同じディレクトリに置かれていると仮定することにした。ソースプログラムファイルの数が多くなってくるとこれではわかりにくい。対策としては、tarあるいはzipアーカイブにして、ダウンロードしてから展開して配置することが考えられる。(つぎにのべるデータ例のうちファイル数の多いものはzipアーカイブにした。)

- 7B -
教材プログラム例を公開するうえでのなやみは、データ例をどうするかだ。めざすのはデータの可視化なのだから、データ例が必要だ。頭の中でつくった例ではおもしろくない。しかし、自分で観測したデータがあるわけでもないので、だれかが発表したデータを借用することになる。

データは文書とちがって著作物でないという考えもある。自然界を観測して得たデータであれば、権利の源は自然界であって、どの人間にも属さないという考えもある。しかし、観測した人や、整理して形をととのえた人、品質管理をした人などに、著作権であるかどうかはともかく、データに関する権利があるという考えもある。

ちかごろは、データセット作成者がそのデータのライセンスを明示することが多い。そこでゆるされた条件にしたがうかぎりでは自由に使える。たとえば、無料でつかえるが出典を明示すること、となっていることがある。

わたしの1990年代の教材のデータ例のうちには、NCARのData Support Section (いまではResearch Data Archive)からもらってきたものが多い。お金をはらったものもあるが、それは手数料であって、データは public domain であると認識されていた。(public domainであると明示されているとはかぎらないのだが。) これを教材ウェブサイトに置くことはたぶんさしつかえないだろうと判断している。ただし、データの可視化の方法の例としてつかっているだけであって、いまの時点で気候データあるいは地理データとして最適なものではないことには、注意しておいてほしい。

また、本にのっている情報をわたしが読みとってキーボードからパソコンに入力したデータがある[注1]。「引用」とみなされるならば法的にも問題ないと思う。しかし分量からみて引用の範囲をこえていると判断されるならば、(データ自体に著作権がないとしても、著作権がある本を経由しているので) 著作権者の許可が必要であり、許可をとらないで置いているわたしは違法なことをしていることになるだろう。また、教材をつくった当時、データファイルの文字コードをASCIIにかぎりたかったことや、データ入力手順(表計算ソフトウェア[注2]で入力して固定長テキストファイルとして書き出した)のつごうによるデータ形式のせいもあって、データファイル自体をみても出典がまぎれなくわかるようになっていない。この点も、いま教材をつくるのならば出典をきちんと書いたドキュメントファイルを付属させるところなのだが、過去の教材をうまく修正できないでいる。形式的な問題はあるとしても、実質的にだれかに損害をあたえていることはないと信じている。

  • [注1] 分量の多いのは、『理科年表』 1990年版にのっていた世界の多地点の気温と降水量の月ごとの1951-1980年の平年値だ。なお、『理科年表』 1992年版にのっていた 1961-1990年の平年値もキー入力したのだが、年平均気温や年降水量が月から計算したものとあわないところがあって疑問がのこったので、データ例を更新しなかった。
  • [注2] 記憶によれば「アシストカルク」(アメリカで「20 20」といっていたものの日本語版)だった。都立大地理ではLotus 1-2-3がよくつかわれていたが、わたしはだいたい同じ機能で値段が安かったこちらをつかった。なお、当時つかうことができたフリーのスプレッドシートもいくつかためしたのだが機能に不満があった。

- 7C -
ウェブページへのプログラム例の追加は、予定したところまで完了した。ただし、C言語のプログラム例はあきらめて、Fortranだけにした。また、NCAR Graphicsの使いかたを書いた部分は、まだ2005年の慶応SFCのままで、プログラム例をダウンロードして動かしてみたい人むけになっていない。

- 8 -
NCAR Graphicsの系譜はつづいているものの、Fortranサブルーチン集としてのNCAR Graphicsは、あきらかに時代おくれになってしまった。

NCAR Graphicsのウェブサイトは http://ngwww.ucar.edu にある。しかしその開発は終了している。ここに2000年ごろはNCAR Graphicsのソース(tarアーカイブ)があったが、2020年にはなくなっており、NCLのサイトを見よとある。

NCL (ウェブサイト http://ncl.ucar.edu )とは、NCAR Command Languageで、独自のスクリプト言語だ。NCAR Graphicsをつかう人は、NCAR Graphicsのサブルーチンのほかに、データ入出力と統計処理を組み合わせたメインプログラムを書いてつかってきた。NCLは、NCAR Graphicsの機能のほかに、気象研究者がよくつかうデータ入出力と統計処理の機能も、スクリプトから呼びだせる形で用意しておくことによって、メインプログラムの役わりをスクリプト言語でとってかわろうとしたものだ。

そして、NCLの開発もまさにおわろうとしている。これからは、Python言語のスクリプトの形で道具を整備する方針だそうだ。すでに、PythonからNCAR Graphicsの機能を呼びだす PyNGL ( http://www.pyngl.ucar.edu/ )と、気象データの入出力を担当する PyNIO ( http://www.pyngl.ucar.edu/Nio.shtml )の活動がはじまっていたのだが、さらにGeoCAT ( https://geocat.ucar.edu/ )というサイトがつくられている。相互関係がよくわからないが、GeoCATが今後 PyNGLとPyNIOをふくむものになっていくのかもしれない。

- 9 -
むかしのプログラム例の動作確認のために、わたしは自分のパソコンにNCAR Graphicsをインストールする必要があった。MS Windowsで動かすのはむずかしいだろうと思って、Linux (Ubuntu 18.04)に入れることにした。

NGWWWのサイトには、NCLのサイトを見よとある。NCLのサイトには、NCLをインストールすればNCAR Graphicsもふくまれるとのべられていて、いくつかのOSのためのバイナリパッケージと、ソースパッケージがある。

- 9A -【この節は、インストール作業に関心のある人以外は読みとばしてください。】
バイナリパッケージにLinux用はあったもののUbuntu用は見あたらなかったので、ソースパッケージをダウンロードした。展開して Configure, make, make install でインストールできるとある。なお、Configureの途中でNCLをbuildするかの問いがあるので no とこたえれば NCAR Graphicsだけになるらしい。

まず Configure でエラーが出た。NCLの Configureスクリプトは csh を想定していたが、わたしのUbuntuのログインシェルは bash だったのだ[注]。Ubuntu で tcsh をインストールし、tcshを実行してその中で Configureを実行したら動いた。

  • [注] わたしはUnixをログインシェルが csh である環境でならい、Linuxをつかいはじめてからもかならず tcsh をインストールしてそれをログインシェルにしていたのだが、2013年ごろからLinuxディストリビューション標準のbash のままつかうように習慣がかわった。GMTをつかうシェルスクリプトも tcsh で書いていたが、ちかごろは bash に書きかえている。

NCLをbuildすることは no、netCDF4をつかうことは yes、HDF4 と szip をつかうことは no をこたえた。

make Everything >& make-output &

とやってみると、終了までいくが、完成していない。

NCLのサイトに書かれていた前提となるライブラリの用意をまじめにしていないにちがいない。たとえば、cairoというライブラリはすでにはいっていると思っていたのだが、それは「ライブラリファイル」だけであって「ヘッダファイル」がはいっていなかったかもしれない。

sudo apt install libcairo2-dev

とやってみたら、cairoのヘッダファイルだけでなく、かなりたくさんのライブラリがインストールされた。

しかし、/usr/X11R6/{lib, include} がない。わたしがLinuxをつかいはじめたころはX Windowsのライブラリはそこにあった(まだX11R5だったかもしれない)のだが、いまのUbuntuではそこにはない。/usr/{lib,include}/x86_64-linux-gnu
にあるのをみつけた。Configure をやりなおしてその path を指定する。

ライブラリはbuildできた。ncargf77 コマンドは動く。しかし ctrans コマンドができていない。その原因をさかのぼってみると、ncarview/src/lib/libncarg_ras/libncarg_ras.a ができていない。さらにさかのぼると、ncarview/src/lib/libncarg_ras/xwd.c をコンパイルしたとき「#include <X11/Intrinsic.h>」のincludeで失敗している。Ubuntuのファイルツリーと見くらべて、問題のinclude文を「#include <X11/X.h>」とかきかえればよいことがわかった。

これで ctransができたのだが、ctrans gmeta ではエラーになってしまった。「ctrans -d X11 gmeta」は動く。ただし、まずまっ黒な画面が出て、ちょっとマウス操作すると図が出る。

あと、環境変数の設定をする。

NCARG_ROOT=/usr/local/ncarg

それから、PATH に /usr/local/ncarg/bin を追加すればいいはずだ。

- 9B -
PATHに /usr/local/ncarg/bin がはいっていない状態で、うっかり ctrans と打ったら、

Command 'ctrans' is not installed, but can be installed with:
sudo apt install ncl-ncarg

と出た。
NCAR GraphicsをふくむNCLは、すでにUbuntuのパッケージになっているのだった。

言われたとおりやってみたら、苦労なくインストールできた。
ncargf77 や ctrans のコマンドは /usr/local/ncarg/bin ではなく /usr/bin などにはいるので、PATHをなおす必要もない。

- 10 -
わたしはデータの可視化を教えた経験者ではあるのだが、いまのデータの可視化の能力は、現にデータをあつかっている大学院1年生にも負ける程度しかなくなってしまった。

これからまた、技術を習得しなければならないが、どの道具にするか迷っている。

Rはいずれにせよつかうので、RできることはRでやろうと思っている。ただし、Rの基本的なgraphicsにかぎり、latticeやggplot2には手を出さないでいる。

GMTとGrADSは、わたしがすでに経験したことと似ていて短時間で適応できる課題にはつかいつづけるだろう。

NCAR Graphics をまた学ぶとすれば、いま開発が進んでいるPythonインタフェースのユーザーになったほうがよさそうだ。しかし、Pythonをつかうならば、matplotlib をつかって気象データを可視化している人もいるから、そちらの流儀にならったほうがよいかもしれない。わたしはまだ Python については初心者で、PyNGL のほうにも matplotlib のほうにも ふみだせずにいる。

文献 (増田 2001の参考文献も見てください。)

  • 祥介, 1995: 地球流体電脳倶楽部(GFD-DENNOU club) -- 大学現場でのインターネット・情報計算環境の発展史と問題点を交えて. 天気, 42: 545 -- 558. http://www.metsoc.jp/tenki から検索・PDF取得可能。
  • 廣田 勇, 1999: 気象解析学。東京大学出版会。[読書ノート]
  • 増田 耕一, 2001: 気候学とGIS。『GIS--地理学への貢献』 (高阪 宏行、村山 祐司 編, 古今書院) 39 - 57. [著者によるHTML版本文]
  • 正武、1991: FORTRAN 77 図形処理プログラミング。岩波書店、557 pp.