技術的背景 - Cinderella Documentation
Description: The user's guide to the Interactive Geometry Software Cinderella

# 技術的背景

この節は、 1999年のマニュアルに書かれていたものと同じです。履歴という意味で再掲します。

普通は、ソフトに使われているプログラム言語やソフトの詳細について知りたいとは思わないし、その必要もありません。 しかし、私たちは シンデレラのコンピュータサイエンスの背景についてお話したいのです。

シンデレラ はJavaという言語で書かれています。 これはサン・マイクロシステムズが開発した、機種を選ばないコンピュータ言語なのです。 つまり、どんなコンピュータでもどんなオペレーティングシステムでもこのソフトを動かすことができるのです。 Javaが動くためには、JVM（Java仮想機械）と呼ばれるものが必要です。 サン・マイクロシステムズが、WindowsマシンとSolaris（UNIX）マシン用のJVMを発表していますし、その他にもLinux, OS/2, MacOS, BeOS, AIX, HP-UXといったOS用のJVMもあります。 実際には、多くのコンピュータにJVMがインストールされているはずです。 というのは、Netscape Communicator や Internet ExplorerといったブラウザーソフトにはJVMが組み込まれているのが普通だからです。 ということは、これらブラウザーソフトでJavaのプログラムを動かすことができるということです。 このプログラムを「アプレット」と呼んでいます。

ここでJavaについて詳細を述べることはしません。 詳しく知りたい人は、Javaのホームページ http://www.javasoft.com を見てください． しかしながらシンデレラの開発にJavaを用いた結果どうなったかについては一言説明させてください。

一般的に言って、マイクロソフト社のWindowsは最もよく使われているOSであることは周知の事実ですが、多くの大学の数学科ではいろいろな種類のUnixワークステーションを使っているのも現実です。 同じ研究グループの中でも使っているコンピュータのOSが違うなどということはとてもよくあることです。 その点、Javaで書いたプログラムで研究を進めれば、コンピュータのOSを気にすることなく同じようにシンデレラを利用することができます。 コンピュータが違っても同じソースコード(プログラムコード)をインストールして使うことだってできるのです。 私たちにとってもっとも親しみのあるOSであるLinuxでシンデレラを開発したのですが、ほかのOSを使っているもっともっとたくさんの人とこのソフトを共有できることは確実なのです。

次に、ブラウザーソフトの中でJavaソフトを動かすことができるということから、シンデレラの 「ホームページの作成(HTMLファイルに出力)」という機能が可能になったのです。 つまり、出版物を作ったり、個人のホームページにアニメーションを加えたり、学生向けの宿題を課すこともできるようになったのです。 私たちの決めた ライセンスでは、シンデレラの必要な部分を再配布する自由はできるだけ与えられています (もちろん多少の制限はつけさせていただいていますが)。

Java は インタプリタ系 言語でした。 つまり、一般的にソフト開発に用いられているC言語やC++言語のような コンパイル系 言語ではありませんでした。 インタープリタ系である利点はいくつかありますが、プログラムの実行速度が遅くなってしまうという欠点がありました。 現在、Java(あるいはJVM)は実行速度を速めるために改善されてきているので、私たちがこの企画をはじめたころほど遅くはありません。 それでもなお、私たちは "インタラクティブな感覚"として許せるスピードになるようにソフトの最適化をたくさんしなければいけませんでした。

時には、点を動かすのが遅いと感じるときがあるかもしれません。 しかし、これはコンピュータのせいでもJavaのせいでもシンデレラのせいでもありません。 この遅さは、正しい結果と正しい画面表示を得るためにとても複雑な計算をしているからなのです。 この計算が必要なのは、1つには軌跡を描くため、そして2次曲線を含むたくさんの要素の交点を求めるためです。 計算のスピードアップのために最善を尽くしましたが、数学的な正確さを犠牲にしたくなかったので、どうしてもスピードに(数学的な)限度があるのは仕方ありません。

最後に、シンデレラやこの本を作成するのに使ったとても便利な道具についても説明させてください。 まず XEmacsです。 これは機能が多く広く拡張可能なテキストエディタです。 GNU Emacsを元に作られています。 もとのEmacsはリチャード・ストールマンが70年代にMITで作ったものですが、これはそのひとつのバージョンです。 (訳註：日本語対応EmacsとしてはNEmacsやMeadowという名前のものが広く知られています。) XEmacsは本当に便利で優れたエディタで、私たちはプログラムソースのすべて、このマニュアルのすべてを書くのに利用しました。

このソフト自身は、サン・マイクロシステムズから配布された Java開発キット（Java Development Kit） 特にそれのLinuxに移植されたものの助けを借りて作りました(Linuxへの移植について詳しくは http://java.blackdown.org を見てください)。 Linux はフリーウェアで、Unixと同じような働きをするOSです。 最初はリーナス・トーバルズが作りましたが、今は世界中の何百人というプログラマーがその拡張に努めています。

ファイルに保存されている作図を読み出すのに使ったパージング(構文解析)の部分は ANTLR 2.5.0の助けを借りています。 これは、テレンス・パーがメイジラング研究所で作ったJavaとC++用のパージングソフトで、パブリックドメインです。

プログラムコードの後最適化と圧縮には、アルファワークスの Jax の助けを借りました。 アルファワークスはIBMの一部門です。 Jax のチーム、特にフランク・チップのご助力と、Jax を商業目的で利用する許可をいただいた IBM に感謝したいと思います。

Cyclic Software が提供するバージョン一致システム Concurrent Versions System (CVS) を使ってバージョンのマージを行いました (何度も頭痛から救ってもらいました)． これもフリーソフトです。

マイクロソフト社と Netscape社の「ブラウザー戦争」にも感謝． このおかげで Netscape Navigator の再配布に関するライセンス条項で、シンデレラにJava-1.1対応のブラウザーを同梱することが可能となりました

シンデレラのマニュアルには、製本されたものとオンラインで見ることができるものの2種類があります。 どちらもXEmacsを利用してHTML言語で書きました。 同じファイルから印刷物を作成すると同時にコンピュータ画面上に表示できます。 そのウェブページのデザインには、カスケイディング・スタイル・シート(Cascading Style Sheets, CSS)を使いました。 印刷物にするときにはジャン・カールマンの html2ps の変形版を使いました。

シンデレラの中で使っているアイコンや図は、私たちがデザインしたのですが、 The GIMP というソフトを使いました。 これはGNU Image Manipulation Programの略で、ピーター・マチスとスペンサー・キンボルが作ったものです。 私たちの使った感じでは、このソフトはフリーで配られているソフトの中でも非常に感銘深いもののひとつでした。 本文中のほかの図はもちろんシンデレラを使い、この他ポブレイ Povrayというフリーの3次元レイトレーシングソフトも使用し、そしてPostScriptをいじっています。

Javaの開発者である James GoslingとNetscape Navigatorの最初のUnix版を作ったJamie Zawinskiの名前をぜひ挙げておかねばなりません。 この二人はともに特別な意味でXEmacsとかかわりがあった人たちです。 ジェームズはEmacsを最初にCで実装しました(GOSMACSという名前で知られています)． ジェイミーはXEmacsのバージョン19.0から19.10の主たる開発者でした。 そのとき、ルーシッド社(今は店じまいしていますが)とサン・マイクロシステムズ社と共同で行った仕事でした。