題名:Java Diary-15章

五郎の入り口に戻る

日付:1999/9/25

目次に戻る


SETI@Support-part9(Ver0.5-Part1)

一覧表もつけた。それに最初のバージョンでちょっと心に曇りを感じていたスクロールバーもとりあえずなんとかしてしまった。それからもバグつぶしはぶちぶちと続いたが、私はそれとともに一つの恐怖感を感じていたのである。つまり次のバージョン0.45は今までの例からいくとマイナーバージョンアップになるはずだ。それぐらいのネタはだいたい頭にある。しかし問題は次のMajor Version UpになるはずのVer0.5である。さて何を追加したものやら。。

実のところここまでで最初、あるいはこれまでに考えていた機能はだいたいつけてしまったのである。となればいかがしたものか。今までこのプロジェクトは私の貧弱なImaginationを刺激してくれたが、その刺激がネタ切れか、あるいは私の頭の中のImaginationのほうがネタ切れになったのだろうか。

今まで自分の想像力について記述が及ぶときに常に「貧弱な」という形容詞をつけている。これは日本の美しい「謙譲」と「現実」が半分づつなのであるが、いずれにしたって本当にそれが「貧弱」であることが目の前に現実となって現れてしまうのはあまり楽しいことではない。現実を常に直視すべき、と日頃は考えている私であっても不愉快な現実であればあまりみたいとは思わないのである。

かのような理屈をこねまわしながら漫然と画面をクリックする日が続いた。いかがしたものか。そして季節は大変中途半端なものであった。日は明らかに短くなってきている、なのに暑さはちっとも改善されない。私は長い日照時間が好きな人だ。だから日が短くなるのは大嫌いだ。それでもせめて少しは涼しくなってくれればいいのに、汗だけは止まらない。

 

そんなもんもんとした日々、私は画面を見ていてあることに気がついた。

私がもんもんとしていようがご機嫌でいようが解析は淡々と進んでいく。解析済みのデータはすでに100を越えていた。そして画面は結構込み入ってきたのである。となると最初は気にならなかったことが気になってくる。

私はSkyMap上に進捗状況を表示しておくのが好きだ。しかしその文字が解析済みデータのシンボルと重なって大変読みにくくなってきたのである。最初に考えたことは文字の背景を黒で塗りつぶした上に文字を書くことであった。しかしそれをしても或程度読みにくさが残っている。何故か?ベースとなる星図つまりSKyMapのデータはBerkeleyのサイトからダウンロードした物をそのまま使っている。この図はペイントされたものだから、たとえば座標軸の数字だけをじゃまだと思ったら選択して消すなどということはできない。それはもうすでにそこに書かれているのだ。

またそのうちまた妙な事が気になりだした。たとえば解析データのシンボルが図の左右の端に来ることがある。となるとシンボルは2/3しか表示されない。しかし端とは何なのだろう?たまたまSkyMapが0時を真ん中にして書かれているから、12時近くのデータは端に来る。しかし本来角度というのは360度くるくると回ってどこが真ん中か端かなどということにはあまり意味がない。本来であれば左の端と右の端は一続きなのだ。

そんなことを悶々と考えているうちに私はあるアイディアにたどり着いた。なんとかこの最初から塗られてしまっているSkyMapに別れを告げることはできないかと。ペイントされた星図でなく、星と星座の座標をベースに自分で描画すれば「どこが地図の中心か」などと悶々と悩まなくても済むではないが。

 

構想ここに至っても私はまだ手を動かし始めなかった。そしてあれこれ考えている。大抵の場合こうした考えは大変馬鹿げた物である。「案じるより産むが易し」といった人は私にとってはかなり偉大な人のように思える。こうした馬鹿げた思考の時間を10時間もつよりは、10分でもインターネットで情報をあさるほうが物事を前に進めるのに有効なのだが。

まず考えたのは「どうやって星と星座のデータを手に入れるか」であった。一人でもんもんと考えている時にはろくな事を考えない。今回私がしようとしているのはとにかく今使っているSKyMapと同じ様な表示ができればいいのだから、そんなに正確でなくてもいい。おまけに全天にある星をすべて表示しなくてもとにかく今のSKyMapにある星だけが表示されればいいのだ。ってことは、そんなに難しく考えずにSkyMapをなぞってみてはどうだろう。考えてみれば会社でコンピュータを使ってすべての物を書くようになる前にはよくグラフ用紙など紙の上にあててなぞったことだってあったではないか。そういえばとっても忙しいときにコピーの縮小機能を使って縮小のグラフをつくらず点を一つづつ書いていったらずいぶん課長に怒られたことがあったなあ。。でも最終的には点を一つづつ打ったんだよなあ。。あれ、これって話がちょっとずれてないか?

よし、これで星の位置データは手に入ったとしよう。問題は銀河だ。今使っているSkyMapには銀河が青く書き込まれている。これをどう表現したものだろうか?まあ適当になぞって多角形で近似してかけばいいか。

さて、この時点で私は大抵の場合「無駄な労力は省くもんだ」とちょっと得意になっている。(自分でも何をいっているのかちょっと不明だが)ところがその得意の気分も実際のSkyMapを目にするまでだ。それまで「結構星を省略しているよな」と思っていたSkyMapだが、自分が点をすべてなぞってみようかと思って眺めると異常にたくさんの点というか星が描かれていることに気がつく。とても全部プロットするなど思いも寄らない数だ。このころ会社では(相変わらず)何もしていなかったから理論的に時間はたくさんあるのだが、どうにも気力がわかない。考えて見ればこの会社に就職してからというもの一年、私は何一つ仕事をしていないのだ(もっとも会議で黙って座っている、とか鞄持ちをするとか、英訳の手伝いをするとかはN○○では立派な仕事のようだが)それで給料がもらえるのだから楽と言えば楽な状況。しかし季節が秋に向かうにつれ、私はちょっと鬱気味になってきたのである。何をしてるんだ、と。その鬱の状況で趣味のプロットを延々やるのはちょっと難しいことである。

そんな深淵は話はおいておいても、銀河の形は私が頭のなかで描いていたよりもずっと複雑に描かれていることに気がついた。これはとてもなぞって多角形で表現するわけにはいかない。おまけに、とそのうねった形を見ながら考えた。そもそも銀河の形というのはなんなんだ。星が集まって見えるところを銀河と呼び慣わしているだけで、別にそう定義されたエリアが存在するわけではないのだ。

SkyMapを見つめること数分、私はあっさりとそれまでの自分の考えを捨てた。考えて見れば星の位置だの星座の形だのは公共性の高いデータだ。まさか星の位置のデータで特許を取る奴など(アメリカを除けば)あるまい。となればきっとこのインターネットのどこかに存在していそうではないか。

そう考えると私は二つの事を始めた。一つはインターネットでなんとか星図のデータを捜すこと。もう一つはそのデータがなんとか手に入ったとしてそれを表示するプログラムを作ることである。

実はこの二つの仕事の初期段階は結構にかよっている。まず星図を表示してくれるフリーウェアを捜すところから始めた。うまくいけばそのフリーウェアに星図のデータがついているかもしれない。そう思ってあれこれ捜してみると結構こうした分野でもいろいろなソフトウェアが発表されているようだ。フリーウエアあり、シェアウエアあり、そしてれっきとした売り物まである。今は私も自分でフリーウェアを書いて世の中にばらまいている身分だが、この世の中には(日本だけでも)どれだけの数のこうした人間が存在しているのだろう。

さて、そうしたプログラムをダウンロードしたり使ってみたりするとちょっとづつイメージがわいてくる。中でも一番参考になったのは米国のサイト()にあるJava Appletであった。丁寧なことにこのサイトではプログラムのソースコードと使っているデータまでダウンロードできる。

そうしてあれこれみていると、どうやら星の位置のデータに関しては、Yale Bright Star Catalogというものが結構良さそうだ、ということになった。よしよしと思って本家のYale Universityのサイトにアクセスしてみると「CD-ROMで送ってやるから金をおくれ」などと書いてある。なんだ?これはフリーではないのか?と思ってさらにあちこち捜すと、国立天文台(日本のだ)のサイトにフリーのデータがおいてあった。これで一安心である。こうして星の位置のデータはなんとかなったが問題は星座データのほうだった。

 

あれこれ捜して、気がついた点がある。星座というものは全世界的に共通に定義されているわけではないらしい。星座の領域というのは決められているが、結び方、というのは結構バラエティに富んでいる。私はなるべくもとのSkyMapに近い結び方にしようと思ったのだが、どうもそうしたデータはどこにも存在しない。それどころか実際に座標値を示したデータすらなかなか見つからないのだ。日本のサイトですべての星座について写真がのっているものがあった。その美しさに私は感心したが、それをそのままコンピュータの入力データにするわけにはいかない。行き詰まった私は(例によって)馬鹿なことをやり始めた。

SKyMapに表示されている星座の数はそう多くない。おまけに形もそう複雑ではないようだ。手元にはフリーの星の位置のデータがある。星座というのはつまるところ星をつないだものだ。となればSkyMapをみながらそれらしい星のデータをつないでいけばなんとかなるかもしれないではないか。星のデータは9000もあるが、明るい星だけみればそう数は多くない。となればなんとかなるか。

そう思った私は手近なところから手をつけていった。小熊座、カシオペア、、、ところが早くもこの二つ目で破綻を生じていることに気がついた。SkyMapの上で確かに点が存在していると思われる場所であっても、データのほうで星があるとは限らないのである。おまけに星座は明るい星ばかりを結んでいるのかと思ったらそうでもないようだ。かなり暗い星もどうどうと線の一部を担っている。となると座標から星を捜すのは結構難しくなる。

ちょうどその日はそこで定時になった。(私の定時は5時半だが)私は「失礼しまーす」と言って会社をあとにした。帰りの電車の中で考えた。どうも自分が馬鹿な事をやっている気がする。あとこんな作業を残りの数十の星座についてもやるのだろうか?もうちょっとましな方法はないものだろうか?

さて、米国のあるサイトに星座のデータが存在していた、ということは前述した。では何故私が素直にそれを使わなかったかといえば理由はちゃんとある。そのデータはとにかく線分のデータ(4っつ数値だが)が並んでいるもので、どれがどの星座だか全くわからなかったからだ。元のSKyMapを忠実に再現しようと思えば(これは私の目標の一つだったのだが)或程度どの線分がどの星座に属しているか識別する必要がある。しかし延々と並んでいる数字を目の当たりにするとその気力はうせてしまう。

しかし、どうもこのデータを相手にするしか手はなさそうだ。さらに数種類のデータを組み合わせるなどしてみたが、どうにもうまく星座が再現できない、となれば手動で線分を識別して星座に結びつけるしかないようだ。

私は概略このような結論に達した。そして翌日からの4連休(3連休に代休を一日つけていた)旅行と称しながらひたすらデータを手動で区分し、画面で確認する、という作業を続けたのである。トータルの時間にすれば半日くらいであろうか?たぶん細かくみれば大間違いだらけだろうが、とにかくなんとか使えそうなものができあがった。やれ、これで一安心である。星のデータと重ねて表示してみるとところどころ星と線がずれていたり、どうみても星が存在していないところで線が折れ曲がっていたりするがまあそこは問わないことにしよう。だいたいの星座はちゃんと星にのっかっているのだし。

私は今ここで「星のデータと重ねて表示する」と書いた。ということはそれまでに或程度星のデータを表示できるプログラムができあがっていたことを意味する。このデータ作成と平行して表示プログラムのほうもあれこれ作っていたのだが、例によって例のごとくこちらも一筋縄ではいかなかった。

 

次の章へ


注釈