%表題   らくらくDCL
%
%履歴
%\Drireki{
%         95/04/13 余田 成男
%        }
%
%\Dchapter{はじめに}
\Dchapterhead

この章では, まず, 地球流体電脳倶楽部の地球流体電脳ライブラリとは何なの
か, その背景と特徴について, また, 我々の時代認識と将来展望について述べ
ます. また, ライブラリの構成と本書の構成を概観します.
\vspace{1em}

この章の詳細は, 「地球流体電脳ライブラリ 利用者の心得」を御覧下さい. 
dcl-x.x/doc/kokoroe/ の下に \TeX ファイルがあります.

%-----------------------------------------------------------------------
\section{地球流体電脳ライブラリ(DCL)}

地球流体電脳ライブラリ(DCL)は, 地球流体電脳倶楽部という集まりの下で, 
地球流体力学関係の研究者有志が長年にわたって開発, 改良, あるいは収集し
てきた「研究者による研究者のためのライブラリ」です. また, このライブラ
リは, 急速に変化しつつある計算機環境に対応するために, 現在でもつねに開
発, 改訂が行われている「生きているライブラリ」でもあります. 情報工学な
どとは畑違いの者にとってこのようなライブラリを維持することは決して楽な
ことではありませんが, 計算機の利用が不可欠となった現在, 我々はあえてこ
の困難な作業に取り組み, 確実な技術に基づく地球流体力学の着実な発展をめ
ざしています.
\vspace{1em}

我々地球流体電脳倶楽部は, このライブラリが多くの人に使われ, 地球流体力
学の発展に寄与することを願っています. したがって, ライブラリの使用は無
料です. しかし, このライブラリの開発には多くの人々の多大な労力が注ぎ込
まれており, 現在でも全くのボランティアによる開発及び維持管理作業が行わ
れていることに留意して, 常識的なマナーは守っていただきたいと思います. 
また, 当然のことながら, ライブラリの品質及びこれを使った結果に関して一
切の保証はありません. 

%-----------------------------------------------------------------------
\section{DCLの背景}

DCLの開発グループは, 全て地球流体関係の研究者で構成されており, いわゆ
る計算機の専門家は一人もいません. そのようなグループが自力でこのような
ライブラリを構築してきた背景には次のような事情があります.
\vspace{1em}

近年の計算機の発達により, 地球流体関係の研究は他の研究分野と同様に, 計
算機なしには研究ができないほど計算機に依存するようになってきました. 今
では, パソコン, ワークステーション等の個人レベルの計算機から, スーパー
コンピュータまでいろいろなものがあり, 一人の人間が複数のコンピュータを
扱うことは当り前のことになってしまいました. しかし, それぞれの計算機に
は計算機に依存したソフトウエアが用意されているのが一般的であり, 同じよ
うな仕事をするのに計算機の数だけプログラムが必要になります.  これらの
コンピュータは能力の差こそあれ, 計算機であることに変わりはないわけです
から, それぞれの計算機において解を求めたりグラフを描いたりすることが同
じようにできれば, 能率的に仕事ができると考えられます. そのためには, ど
んな計算機でも共通に使える標準的なライブラリが必要です.
\vspace{1em}

しかし, そのようなライブラリを誰が開発し維持していくのでしょうか. 近年, 
いわゆる情報科学の進歩が非常に急速で, 10--20年前とは状況が全く異なりま
す. 現在の情報科学の最先端は, 人工知能やファジイ理論に代表されるように, 
これまで人間にしかできなかった複雑な事を機械にやらせる所に主な興味があ
り, 単純な計算を延々と繰り返す数値計算やグラフィクスツールの開発などは, 
すでに研究対象としては時代遅れのものとなりつつあります. これらを専門と
する情報科学者は少なくなる一方であり, 従って, 我々地球科学を専門とする
研究者が「ライブラリの整備などはその専門家に委せておけばよい」と言って
おられた時代は終りを告げたのです. 我々自身が数値計算やグラフィクスの専
門家として自立していかなくてはならない時代になってしまったわけで, 実際
問題として, それぞれのノウハウを自らの手で蓄積していく以外に方法はない
ように思われます.
\vspace{1em}

さらに, 地球流体力学の本質に関わる重要な背景があります.  それは, 計算
機に対する依存度が高くなってきた結果, 比較的理論的な仕事でさえ「他人が
得た結果」を検証することがほとんど不可能になりつつあるということです.
これは「科学」としての地球流体力学の存在基盤そのものを危うくする由々し
き事態です.  解析的な論文であれば, 論文に従って紙と鉛筆と忍耐力を頼り
にその結果を確認することができますが,数値計算に関する論文では, 解析的
なものに比べて途中の情報が極端に少ないので, 論文だけの情報から追試を行
うことはほとんど不可能です. これを解決するためには, プログラムそのもの
を公開して流通させる以外に方法はないと思われます. それには, まず, プロ
グラムそのものを「計算機に対する命令」ではなく, 「計算過程を記述したド
キュメント」として考えることが絶対に必要でしょう. さらに, この時「標準
言語」としてのライブラリがあれば, このドキュメントはより簡潔なものとな
り, 可読性が向上するはずです. すなわち, 研究者仲間で同じ「標準言語」を
使うことで, プログラムそのものを情報伝達の手段として使うことが可能とな
るわけです.
\vspace{1em}

DCLは, このような背景を踏まえて, 地球流体関係の研究にたずさわる自分達
自身がその必要とする「どんな計算機」でも使える「標準言語」としてのライ
ブラリを「我々の力」で構築したライブラリなのです. また, ライブラリに収
められているソフトウェアには, 全く自力で開発したもの以外に Free Wear
(フリーソウェア, 無料ではあるが著作権は放棄しない, 本ライブラリもそう
である) や PDS (Public Domain Softwears)から拝借してきたもの, あるいは, 
それに手を加えたものが存在しています. これは, すでに存在している質の高
いソフトウェアを積極的に研究者仲間に広めて「標準言語」化しようとするも
のです. このことにより, 世間に流通しているソフトウェアとなるべく相性の
良い状態を保ち, 我々が作る種々のプログラムの「標準」度を高め, より広い
コミュニティの研究者仲間に受け入れられるようにしていこうと思います.

%-----------------------------------------------------------------------
\section{DCLの特徴と将来}

地球流体力学という分野における, 特に大学での研究教育活動の現状を反映し
て, DCLは次のような特徴を持っています.
\begin{enumerate}
  \item「標準言語」としてライブラリの体系がわかりやすく, 柔軟である.
  \item プログラムが適当に構造化され, 可読性が高い.
  \item 複数の計算機上で同じプログラムが実行できる.
  \item 標準的に FORTRAN 言語を使う.
  \item 高品質な2次元の図形出力がサブルーチンコールの形でできる.
  \item 欠損値の存在するデータ(観測値)を, そのまま扱える.
\end{enumerate}
このうち1, 2 の特徴は大学で使うという事情を反映したものであり, 3, 4 は
現在の我々を取り巻く計算機環境に関係しています. また, 5, 6 は, 常に計
算機の能力いっぱいの仕事が存在するという地球流体力学の特徴に関係するも
のです.
\vspace{1em}

DCLはIBM型メインフレームと共に育った世代の手によるものです. したがって, 
メインフレーム$+$FORTRAN という組み合せにおいては, 洗練された完成度の
高いライブラリであると自負しています.  現在, DCLはワークステーション
$+$FORTRANという組み合せを標準的な計算機利用方法として想定していますが, 
これが将来にわたって標準的な形態であるとは思えません. FORTRANの新しい
規格であるFORTRAN90がFORTRAN77に取って代るほど普及するかどうかはわかり
ません. また, ワークステーション$+$Cという組み合せによる計算機利用スタ
イルが急速に普及しつつある現在, 世の中の計算機事情に応じて, ライブラリ
自身も変化していかなければならないでしょう.
\vspace{1em}

もっとも, 完成度の高いライブラリを書くためには, その言語の特質を知りつ
くしていなければならないので, 急にDCLが変化していくとは思えませんが, 
時代の流れは注視していく必要があると考えています. 我々はあくまでも計算
機を使う側の人間であり, 計算機技術に関して流れを変えることはできないの
でしょうから.

%-----------------------------------------------------------------------
\section{DCLの構成}

DCLは, 下図のようにいくつかの箱に分けて管理されています.

   \setlength{\unitlength}{0.2mm}
   \begin{center}
   \begin{picture}(520,160)(0,0)
        \put(  0,110) {\framebox(520, 50){User Contribution}}

        \put(  0,  0) {\framebox(300,100){}}
        \put(  0, 50) {\line(1,0){300}}
        \put(100,  0) {\line(0,1){100}}
        \put(200,  0) {\line(0,1){100}}
        \put(  0,  0) {\makebox(100,50){MATH1}}
        \put(  0, 50) {\makebox(100,50){MATH2}}
        \put(100,  0) {\makebox(100,50){MISC1}}
        \put(100, 50) {\makebox(100,50){MISC2}}
        \put(200,  0) {\makebox(100,50){GRPH1}}
        \put(200, 50) {\makebox(100,50){GRPH2}}

        \put(310,  0) {\framebox(100,100){}}
        \put(310, 50) {\line(1,0){100}}
        \put(310,  0) {\makebox(100,50){ENV1}}
        \put(310, 50) {\makebox(100,50){ENV2}}

        \put(420,  0) {\framebox(100,100){ETC}}
   \end{picture}
   \end{center}
   \setlength{\unitlength}{1mm}


ここで, 左下の6つの箱(MATH1, MATH2, MISC1, MISC2, GRPH1, GRPH2) はDCL
の本体部分です. ライブラリに含まれるサブルーチンや関数のFORTRANプログ
ラムは全てこの中にあります. この本体部分は「機能」により横に3つ, 処理
の複雑さによる「レベル」により上下に2つ, 計6つの箱にわかれています.
\vspace{1em}

機能による分類で, MATHというのは数学的な処理, MISCはI/O処理等その他の
処理, GRPHは図形処理をさします. レベル分けの基準となる「複雑」さはあく
まで相対的なものですが, 以下のような基準を満たすように分類されています.
\begin{itemize}
  \item レベル1のルーチンはレベル2のルーチンを呼んではならない.
     (下克上禁止の原則)
  \item レベル2のルーチンは他の機能のレベル2のルーチンを呼んでは
     ならない.
     (機能独立の原則)
  \item レベル2のルーチンは機種依存してはならない.
     (汎用性の原則)
\end{itemize}
これらの基準により, レベル1のルーチンはレベル2のルーチンがなくともその
動作が保証され, また, レベル2のルーチンは他の機能のレベル2のルーチンと
独立に扱うことが可能になります.  さらに, 特定の計算機に移植する際には, 
レベル1のルーチンが移植できれば, 自動的にレベル2のルーチンも動作します.
さらに, レベル1の箱の中では, MATH1 $<$ MISC1 $<$ GRPH1 のような形でパッ
ケージ間の「格付け」がなされており, 箱どうしの依存関係ができるだけ簡単
になるように分類されています.
\vspace{1em}

本体部分の隣にあるENV1, ENV2は電脳ライブラリ本体を使用する際の環境を整
えるために用意されています.  ENV1 には主としてインストールに必要となる
道具類や基本データが収められており, ENV2 にはDCLを使ったユーザープログ
ラムを実行する時に使うようなユーティリティプログラムが収められています. 
また, ETCには, 必要不可欠なものではありませんが, あると便利な道具類が
入っています.
\vspace{1em}

DCLのマニュアルは, 箱とレベルで分類されたパッケージごとに分冊化されて
います. つまり, MATH1, MATH2, MISC1, MISC2, GRPH1, GRPH2, それに, ETC
があります. 環境設定のためのパッケージ ENV1, ENV2 に収められているソフ
トウェアは機種依存する部分が多いので, これらのマニュアルはまとめて「機
種別手引」に記載されています. また, 全体にわたるものとして, 「利用者の
心得」「サンプル集」および初心者向けの「ごくらくDCL」と「らくらく
DCL」があります.
\vspace{1em}

これらのドキュメントはそれぞれ dcl-x.x/doc/ の下に分けて置かれています. 
すべての文章は \LaTeX で書かれており, 簡単に再出力することができます. 
ただし, ETC に収められている地球流体電能倶楽部の標準スタイル {\tt
dennou.sty} を使っていますので, \TeX でコンパイルする際にはそれを取り
込むことが必要です.

%-----------------------------------------------------------------------
\section{本書の構成}

本書は, DCLがすでにインストールされている環境で, このライブラリを使い
始めようとする人を念頭に置いて書かれています. サンプルプログラムはすべ
てFORTRANで書かれており, その知識を前提としています. 
\vspace{1em}

本書ではグラフィクス部分だけを解説しています. 第2章では, DCLグラフィク
スの雰囲気を概観し, 第$3\sim5$章では, GRPH1の基本的な部分について解説
します. また,第$6\sim10$章では, 上位ルーチン群であるGRPH2の各パッケー
ジを解説します. さらに, 第$11\sim13$章では欠損値処理やカラーグラフィク
スなどの応用的な部分を紹介します. 
\vspace{1em}

グラフィクス以外の部分については最後の章で簡単に触れます. MATH部分はこ
れからどんどん充実させていきたいところであり, やがて, 「らくらくMATH」
が出るくらいに取り組んでいきたいものです.
