見出し画像

Cinderella開発経緯

 Cinderella は,動的幾何ソフトといわれるものです。ここでは,その開発経緯に
ついて書きます。

1992年 Cinderellaの開発構想が始まり,試作品ができる。
1996年 新しいプロジェクトとして再出発。
1998年 バージョン1.2 を公表。
2006年 CindyScript – 関数型プログラミング言語、そして CindyLab – 物理シミュレーションエンジン を追加したバージョン2.0を公表。
2011年 バージョン2.6 を公表

その後,Web上でJAVAアプレットが使えなくなるなどの経緯を経て,JavaScript を用いたCindyJSを開発し,Cinderella のバージョンも3になりました。

 以下は,Cinderella のヘルプから参照できるマニュアルに掲載されている開発経緯です。大変面白い内容なので転載します。「シンデレラ1.2への序文」は阿原一志氏の翻訳によるもの、「2.0への序文」と「2.6への序文」は入谷の翻訳によるものです。Cinderellaの作者の Jürgen Richter-Gebert さんと Ulrich Kortenkamp さんの許可を得ての転載です。

Cinderella 1.2への序文

 シンデレラ はコンピュータで幾何学の作図ができるソフトウェアです。 現在の製品は、1993年から1998年の間に行われた3つのプロジェクトの総決算です。 私たちは、19世紀の幾何学者たちの知恵から最新の数学的発見まで、実に様々な数学理論の結晶としてこのソフトウェアを開発しました。
 これらのプロジェクトの最初の構想は、1992年に、スウェーデンのミッターク-レフラー研究所において組合せ論の国際会議が開かれ、そこで、 ヘンリー・クラポとユールゲン・リヒター-ゲバートがシンデレラという名の船で旅をしたときに生まれました。 そのころ、ユールゲンは幾何学の定理をコンピュータによって証明するための 記号的方法について研究しており、ふたりは、だれでもが簡単なマウス操作で幾何学の図形を操れたり、できた図にどのような性質があるかをコンピュータに尋ねることができるようなソフトウェアを夢みたのでした。
 ヘンリーとユールゲンはNeXTコンピュータでこのプロジェクトをスタートさせました。 というのはNeXTには当時ソフトウェア構築の道具がたくさんそろっていたからです。 シンデレラ は、このプロジェクトの名前となり、いつしかこのプロジェクトとは切っても切れない名前になっていったのです。
 数週間後、最初の試作品ができ上がりました。 プログラムは射影幾何学と不変理論の原理に基づいて作られていました。 それは、点、直線、2次曲線についての射影幾何学の多くの定理について、画面上で代数的な証明を見ることができるようになっていました。
 しかし、NeXTは次第に人気がなくなってしまい、それとともに シンデレラへの最初の情熱も冷めていきました。 1995年の夏以降、このソフトウェアの進歩はほとんどありませんでした。 マサチューセッツ・サウスハドレイのマウントホリオークカレッジでの計算幾何学の会議の時には、NeXTコンピュータやそのOSはほとんど姿を消しており、シンデレラのデモンストレーションを行うこと自体ほとんど不可能でした。
 1996年8月、そのマウントホリオークでの会議の後、私たち(コルテンカンプとゲバートは、当時ベルリン工科大学でギュンター.M.ザギエのグループで研究をしていました) は新しいプロジェクトを始めることにしました。 それはまったく別のプラットフォームであるJavaで開発するというものでした。 そのころ、Javaは比較的新しい言語で、私たちは二人とも、リアルタイムで大量の計算が必要なプログラムにインタープリタ系の言語が適しているのか懐疑的でした。 しかし、ともかく私たちは始めてみました。
 この2回目のプロジェクトの最終目的は、昔の機能(NeXT版で使えたものについて)を本質的にユークリッド幾何、非ユークリッド幾何の両方に拡張することでした。 私たちは、幾何の軌跡についての機能も増やそうと思っていました。 さらに、Java言語がインターネット対応であることから、新しくでき上がるソフトウェアはインターネットのブラウザの上で動くように作る必要がありました。 とくに、ウェブ用の学生向け練習問題を作ることが可能になるようなものにしたかったのです。 学生の解答があっているかを自動的にチェックすることができるようにするためには、定理自動証明機能をプログラムに実装する必要がありました。
 国際会議やコンペの締め切りが近づくたび、私たちはピッチをあげて開発にとりくみました。 作り直したあとの最初のバージョンは1996年9月のチューリッヒでの「CGALスタートアップ会議」で公開されました。 1996年の次のバージョンは1997年の1月にカールスルーエでのマルチメディアトランスファーで「マルチメディア革新賞」を受賞しました。
 1997年に、ゲバートはチューリッヒ工科大学で助教授となりました。 この変化が開発にも新展開をもたらしました。 コルテンカンプも9月にチューリッヒに移りました。
 同時に私たちは シンデレラの出版に向けて交渉をはじめました。もともとはこの第2のプロジェクトに磨きをかけて完成させてしまうつもりでした。しかし、事態はさらに違う方向へと向かったのです。
 この1996年のバージョンは、ほかの幾何のソフトウェア同様、明らかな数学的な矛盾を避けられなかったのです。 この矛盾は、たとえば「円と直線の交点を求める」という操作において現れる任意性のことです。 交点は二つかもしれないし、一つかもしれないし、あるいはまったく交点がないかもしれない. それは円と直線の位置関係によって決まるものです。 円と直線の交点を用いて得られた図をマウスでドラッグしている間にも、プログラムはどの交点を作図に利用するかを決定しなければいけません. この、無害のように思われる任意性が図の振舞いに重大な矛盾を引き起こしてしまうこともあるのです。 一点をほんのちょっと動かしただけでも図全体がはじけ飛んでしまうこともあるのです。
 1998年の初頭、この「ジャンプする点」の問題が実際問題として解決可能なことがわかりました。 しかし、それを実装するのは容易ではないことは明らかでした。 すべての作図を複素ベクトル空間へ埋め込まなければいけなかったのです。 「図がつぶれたりジャンプしたりする特異な状況」を避けるために、関数論の定理を用いなければいけなかったのです。 この新しい方法を用いるために、私たちはプログラムの数学的な中心部分を一から書き直さなければなりませんでした。 このプログラムはおよそ20〜100倍もの計算が必要で、私たちにとってもJavaにとっても難問となります。
 私たちはこの方法を用いることに決め、そしてこの第3のプロジェクトを完成させることができました。それが現在のバージョンです。 信じられないほど集中して作業し(この期間、私たち、そして私たちの家族は限界まで忍耐しなければなりませんでした)、 私たちはプログラム全体を書き直したのです。 そうして、このプログラムはどんな状況下においても高いパフォーマンスを示すことができるようになりました。
 このような努力が報われました。新しく開発したこのプログラムはもともと私たちが考えていたよりもずっと役に立つことがわかったのです。 この新しい考え方に基づいて、私たちは乱数を用いた信頼性の高い自動定理確認機能を実装することができたのです。 図上の性質をみつける方法として、これは記号的な方法よりかなり有用であることが示されました。 また、一般的な方法で完全な幾何的軌跡を生成することも可能です。 それは私たちの知る限り斬新なことです。
 現在のプログラムは19世紀の古典的幾何学だけでなく、複素解析、私たちの開発した新しい手法、そして現代のソフトウェア技術の融合なのです。 私たちは皆さんがこのソフトウェアを私たち以上に楽しんでくださることを望んでいます。

Jürgen Richter-Gebert, Ulli Kortenkamp
Zurich, December 1998

Cinderella.2.0 への序文

I may not always be perfect, but I am always me!
Found on a t-shirt

 1998年にシンデレラの最初のリリースをしてから7年半が経ちました。その間に、プロジェクトは私たち自身が予期しなかったいくつかの変貌を遂げました。私たちは今、シンデレラがシンデレラ2となって、すっかり新しくなったことを感じます。
 ある意味で、シンデレラのプログラミングは "終わりのない物語" であることがわかりました。付け加えたい機能や、改善したいこと(デバッグも含め)が常にあるのです。ですから、現在の版は決して完全なものではなく、残念ながらまだ日の目を見ていないような新しい特徴もあるのです。
 新しい版から何が期待されるでしょうか。まず第一に、最も明らかな変化は、シンデレラの幾何学部分がかなり改善されたとはいえ、それだけにはとどまらないということです。現在の版は3つの主要部分からなります。それはCinderella – 幾何学エンジン CindyScript – 関数型プログラミング言語、そして CindyLab – 物理シミュレーションエンジンです。一見すると、これら3つの部分は互いにほとんど独立して使うことができるように思います。しかし動的な幾何学 CindyScript、そして CindyLabは、互いに協力し、それぞれの利点をできるだけ生かすように設計されています。 (新しいロゴをご覧いただけたでしょうか。それはいろいろの方法で互いに相互作用する3つの部分を象徴しています)。 この最終的なデザインに至った経過はエキサイティングな物語ではありますが、それを書くには紙数が足りません。一言で言えば、それは長い道のりでした。ユーザーからの要求、クールなソフトウェアにしたいという私たち自身の欲求、科学的な視覚化とマルチメディアに関して昼夜繰り返される会議。それらは、時には行き詰まりながらも実り多い日々でした。
 シンデレラ の幾何学部分はかなり改善されました。変換と変換群が追加されました。円錐曲線を描く方法が増えました。フラクタルを扱うことも可能です。また、正多角形を直接描くこともできます。変換と変換群は先進的な図を描くのにおおいに役立つことがわかりました。私たちはユーザーの皆さんがそれらの概念を利用することを勧めます。一番リクエストが多かったのは "マクロ"でした。シンデレラ2では、既存の図の一部を再利用する、複写/貼付/再定義をマクロ化できます。それをツールバーのボタンにしてしまうこともできます。
 CindyLab は、シンデレラの図の中の点が質量を持つ点として振舞い、線分がバネやその他の物理的な力を発生させるものとして振る舞うような環境を提供します。CindyLab は、粒子と質量、力に関するシミュレーションをするだけのものではありますが、それは実に強力な道具です。私たちはすでに複数の恒星を持つ惑星系や不思議な動作をする機械、ビリヤードのシミュレーションなど多くのことを楽しんでいます。
 最後に、 CindyScript は幾何学のアプリケーションとして設計された関数型プログラミング言語ですが、実は数学の他の分野でも利用できるように設計されているのです。CindyScript はシンデレラでも関数のグラフを描きたいという欲求から生まれました。コンピュータ・サイエンスでは、問題に対する単純な解から出発した技術が他に波及するということがよくあるのです。ざっとこんな具合でした。「式も計算したいね」-「どうして点の位置を操作するのにこれを使わないんだい?」 「制御機構を加えようよ」「行列も扱えるといいな」・・・ 「リストを使おう」・・・「再帰的定義はどうだ」・・・「関数のグラフ機能を強化しよう」 こうして、フル機能で、数学的に根拠のある関数型の、リアルタイムで高水準なプログラミング言語ができあがったのです。プログラミング言語と連動して、動的な幾何学の環境がどのくらいその長所を活かせるか、まったく想像ができません。しかし、学生たちがすでにCindyScriptを使っていろいろなことをおこなっているのを見て、とても驚いています。私たちは、すべての読者が本当にクールで予想外のアプリケーションをこのツールで作り出すことを勧めます。
 なお、これら3つの部分とは別に、いくつかの優れた付属品があります。たとえば、シンデレラ2はペンタブレットやインタラクティブホワイトボードやPDAによる手書き認識をサポートしています。 また、最初のリリース以来プロジェクトの一部であった幾何学的な練習問題は、大いに改善されました。
 最終版に盛り込めなかったものがいくつかあります。それは安定性の問題です。われわれは、それらが正しく動くようになったら数ヶ月後ごとに加えていくつもりです。予定しているのは次のようなものです。 幾何学の基底についての本格的なサポート、シンデレラの操作の記録、ハードウェアシミュレータなどなど。したがって、頻繁にアップデートを確認して更新することを勧めます。
 シンデレラ2を作るにあたって、コメント、ユーザーフィードバック、β版のテストなどで実に多くのかたがたの助力を得ました。なんといっても、私たちの家族に第一に感謝をしたい。シンデレラのために、私たちは多くの余暇をあてました。そのため、父親として、あるいは夫としての時間を家族に与えることができませんでした。数えきれないほどの週末と夜の時間を新しい機能の追加やバグ退治のために費やしました。 私たちは、これからの人生を他の大切なことにも多くの時間を割けるようになることを望んでいます。
 私たちは Dirk Materlik にも感謝します。彼は図形認識についての卒業論文で私たちのチームに関わり、後期に Matheon Visage projectの傍ら、設計の重要な問題を解決するのに助力してくれました。 ( インスペクタは、彼なしにはできなかったでしょう)。また、特に Gunter Gemmel にも感謝したい。彼は、 PSLQ algorithmの実装を一晩でやり遂げてくれました。多くの人たちが積極的にβ版とプレβ版を使ってコメントを寄せてくれました。順不同で名前を挙げますが、失念してこの中に書けなかった人たちもいることをご容赦願います。
 Hermann Vogel, Gunter Gemmel, Martin von Gagern, Peter Lebmeir, Vanessa Krummeck, Thorsten Orendt, Andreas Fest, Carola Dietrich, Wolf Dieter Heker, David Bakin, Christof Boeckler, Gerhard Bischoff, Alexander Elkins, Dan Beaton, Camille Wormser, Franz Klement.
 最後に、特筆すべき人が二人います。ひとりは David Kramer で、ハーバードから来た私たちの編集者です。彼は、私たちが書いたドキュメントを丁寧に読み、すくなくとも言語的には理解しやすいドキュメントを仕上げる手助けをしてくれました。ありがとう David! 2番目の人は、ある意味ではほとんどシンデレラ・チームのメンバーともいってよい人です。それは Martin Peters で、私たちが信頼を寄せる、シュプリンガー・フェアラーク社の編集者です。彼は、私たちの新しい問題に対して常に聴く耳を持ち、ソフトウェアをリリースするまでには時間が必要なことを理解してくれ、公開上の問題を解決したり、いくつかの重要なコンタクトをとるのを積極的に助けてくれました。そして、最も大切なことなのですが、最良の結果であると思えることを私たち自身が決定する自由を常に与えてくれました。
 Peter の忍耐と信頼に対してとても感謝しています!

May 2006
Jürgen Richter-Gebert, Munich
Ulrich Kortenkamp, Schwäbisch Gmünd

Cinderella.2.6への序文

「将来についての最善のことは、ただ日一日とやってくる。」
エイブラハム・リンカーン

 もう5年が経ちました。この5年は、多くの仕事やプロジェクト、つぎつぎに沸いてくるアイデアとコラボレーション、教育、研究...でいっぱいでした。この間に、Cinderellaは多くのプロジェクトに関係してきました。我々は、それらのプロジェクトをいくつかの(時には予想外の)方向でCinderellaを強化する機会としてきました。これらの機能の一部はまだ実験段階です。しかし、Cinderella2.6ではドキュメンテーションにもそれらの機能を含めています。
 ミュンヘンで2008年にドイツ博物館と協力して考えた、数学と音楽の相互関係に関するコースは、Cinderellaで音声出力を行なうための出発点となりました。2007年に立ち上げたポータルサイト Mathe-vital( www.mathe-vital.de) は多くの機能を新開発する出発点でした。TeXライクな植字システムのサポートは、線形代数や微分積分、関数描画のためのものといえます。ドイツ博物館での展示に関する事業では画像表示と画像変換に関する開発のきっかけとなりました。また、3Dオブジェクトを取り扱いたいという願望が膨らみ、機能を強化するプラグイン構造をつくることになりました。
 さらに、このドキュメンテーションによって説明されていない、半公式的な機能がまだあります。マルチタッチデバイスのサポート、グラフアルゴリズム、バックグラウンド処理などです。我々はこれの機能の多くが将来公式的に使えるようになることを確信しています。
 Cinderella2.0から2.6までに、Cinderellaプロジェクトは発展し、幾何学ツールをはるかに超える数学の視覚化ツールと呼ばれてもよいものとなりました。我々は、みなさんが我々の大学の学生と同じように、Cinderellaで数学のビジュアルな作品を作るのを楽しむことをを望んでいます。
 2.6版のもうひとつの特徴は、このマニュアルです。2年ぶりに現バージョンのすべての公式的な機能について説明をしました。このマニュアルを印刷するとしたら、あなたはなぜ600ページにもなるマニュアルを必要とするのか疑問に思うかもしれません。これに対する答えはいろいろありますが、2つ述べましょう。ひとつめは簡単です。Cinderellaは本当に強力なツールになり、豊かな機能を提供します。2つ目はあなたー親愛なる読者ーに関係があります。私たちはできるだけ読みやすくて使いやすいマニュアルを出版しようとしました。そのために、600近いスクリーンショットと、CindyScriptのプログラム例、段階的なチュートリアル、さらには若干の技術的・科学的な背景情報を含めました。Cinderellaは非常に強力なツールですが、多くの仕事は簡単な方法で行なえます。これは、基本をマスターした後に、あなたがこのマニュアルを読んで最も興味がある部分:幾何学、物理、プログラミング、音楽、関数プロット、フラクタルなど:を選択するようになればわかることだと思います。
 私たちが2.6版のためのマニュアルを用意するにあたり、多くの人の助力がありました。特に、マニュスクリプトの最終版においてElena Kohler と Stefan Kranichに、WikiからLaTeXへの マニュアル の変換において Stephan Berndts に感謝します。(訳注:WikiからLaTeXへの変換は英語版での話です。)
 多大なる感謝を Terzio Verlag のオーナーであるRalph Möllers にも捧げます。彼は、画像操作で Ritter Rost の絵を使う許可をくれました。これらの絵の著作権は Terzio Verlagにあります。われわれはこれを利用できることを本当に誇りに思います。
 マニュアルは紛らわしかったり間違っていたりするでしょうし、バグもあります。最新版と正誤チェックのために、われわれのWebサイト http://cinderella.deを訪問してください。バグを報告するときは bugs@cinderella.de にメールをください。そして、我々とコンタクトをとるためにはauthors@cinderella.deにメールをください。

2011年2月
Jürgen Richter-Gebert, Munich
Ulrich Kortenkamp, Karlsruhe


おまけ

1.2 への序文にあった観光船Cinderella です。

← Cinderella 総目次に戻る