宇宙SFを書くのにあると
便利かもしれないソフトウエア

林[艦政本部開発部長]譲治

最初に:
 宇宙SFを書こうとする場合、資料を調べたり計算をしたりする必要がある。いやまぁ、計算はともかくとしても、資料くらいは調べるだろう。普通はそうするよね。少なくとも俺の周囲のSF作家はみんなそうしている。っていうか、たいがいまともな小説家はそうしている。これはハードSFだろうが伝奇SFだろうが変わらない。あぁ、もちろん私の交友関係の範囲での話だけど。
 かつて谷甲州と言う人はネパールの山中で航空宇宙軍史を書くためにタイガー計算機を使って計算していたわけだが、あれから20年、パソコンも普及し、計算能力も向上した。宇宙SFを書くための環境は著しく整備されている。
 そういうわけで、宇宙SFを書くのに役に立ちそうなソフトウエアを幾つか紹介してみようと思う。もっとも、ぶっちゃけた話をするとエクセルなどのスプレッドシートがあれば、ホーマン軌道の計算とかローレンツ変換とか大概の計算はできるんですけどね。でもそれじゃ原稿的に華がないじゃありませんか。
 というわけで華のある奴を色々。ただし選択基準は俺の主観です。
Xplns:
 まずはプラネタリウムソフトから。
 華があるし、何年何月の太陽系の惑星配置なども表示してくれる。思った以上に使いでのあるソフトなのであります。
 最初にとりあげるのはXplns。
 Xplnsというから「未知の計画」のことかと誤解する人がいるかもしれないが――まぁ、普通はそんな馬鹿な解釈はしないだろうけど。だいたい計画はplanだろう――そういう意味ではない。ちなみによく 世間で「+α」などという表現を目にすることがあるが、これは本当は「+X」が正しいのだという。「Xplns」を「未知の計画」と解釈できるなら、「+α」よりも「+X」が正しいことが理解できよう。じゃあどうして「X」が「α」になってしまったかというと、外人が筆記体で書いた「X」を日本人が「α」と誤読したためらしい。まぁ、世の中、最初にしくじると物事後々まで尾をひくということですね。
 それでXplnsのXだがUnix系OS用ウィンドウシステムのX Window上で走ると言うことらしい。ちなみにこれはX Windowなのであって決してX Windowsではない。大した違いでは無いように思われるかもしれないが、年季の入ったUnix使いに言わせると、X Windowは絶対にX WindowsなどとMSの製品のような呼び方はしてはいけないのだという。
 WindowとWindowsのsのあるなしは、SFと架空戦記くらいに大きな隔たりがあるものなのである。ただ「覇者の戦塵」が歴史改変SFで、架空戦記とは別物であるのはSF者にはわかるが、他の人にはすぐには理解できないように、Unix使いでないとWindowとWindowsの違いはよくわからない。
 まぁ、ともかくXplnsはX Window上で動くのである。最近はLinuxやFree BSD――などと全角のアルファベットで書いているけど、これもきっと半角で書かねばいかん! と思っている人もいるんだろうな――が普及しているので、普通のパソコンでLinuxなりFree BSDをインストールしてあれば「家のはサーバー用でコマンドラインさえ使えるならばXは不要」という人以外はXplnsを走らせることができる。
Fig 1-1
図1-1

 とりあえず走らせると図1−1のような画面が現れる。
 どこかで見たような画面だと思う人もいるかもしれない。まぁ、プラネタリウムソフトなのだから、再現する夜空が同じなのは不思議でも何でもない。ただこのXplnsはもともとStella Navigatorの商用コードを含んでいるので、画面構成などを見たことがあるような気がするのはそうしたことも関係するだろう。
 普通はLinux系のフリーソフトはソースも添付されたりするのだけども、このソフトの場合は商用コードが含まれているため配布はバイナリー形式のみである。
 RPM形式の配布も行われており、この場合は、Xplns(Xplns本体)、xplns−elm(軌道要素データ)、xplns−cat(追加恒星データ)、xlns−img(画像データ)の4ファイルをインストールする。Red Hat系はこれで簡単にインストールできる。RPM形式を採用していないディストリビューションについては何か方法があるらしいが俺は知らない。
 もともと商用ソフトだった物なので使いやすい割には機能も豊富で図1−2みたいな正座早見盤のような画面も表示できる他、図1−3のように天球上を星が移動する様を再現する事もできる。この図では光跡を残しているが、残さないようにすることも可能だ。

Fig 1-2 Fig 1-3
図1-2 図1-3

 ちなみにひょっとすると気になる人もいるかもしれないので書いておくと、図のデスクトップ環境はKDEを使用してます。
関連URL:
http://www.astroarts.com/products/xplns/index-j.html

xephem:
 プラネタリウムソフトの二つ目。xがついていることからもわかりますように、このソフトもまたUnixとX Windowが使える環境なら大抵のマシンで走るプログラムです。まぁ、確かめたのは我が家のノートパソコンとデスクトップ機の二つだけですけど、この二つで走ったんだからたぶん他所様の環境でも大丈夫でしょう。
 それでxは良いとしてephemは何の意味かといえば、ephemerisつまり暦のことです。この名前からもわかるように、このソフトはプラネタリウムソフトというよりも観測支援ソフトと呼ぶ方が実は正しいかもしれない。
 もともとはxephemはxの無いephemというDOS上で作動する軌道計算ソフトだったという。
Fig 2-1
図2-1

 図2−1なんかを見るとプラネタリウムソフトそのものだが、これはこのソフトの能力のほんの一部に過ぎないという。
 本来の使い方は天体の観測計画を立てるような場合に、目標の天体が何時にどこからどのように現れるかなどを知るためのものらしいのだ。じっさい最新バージョンではこのxephemは天体望遠鏡の制御もできるのだという。そういう点でまさに本格的な天体ソフトであろう。
 このソフトの多機能ぶりは多くの人々の唱える所で、正直言って私などはとても使いこなしておりますなどとはとても口にできないが、その一部の機能だけでも感心させられることが多い。
 例えば図2−2の写真。これは見てわかるとおり、ある時間における太陽系の惑星配置図だ。この機能もなかなか重宝だが、いまどきの天体ソフトでは比較的ありふれた機能だろう。ところがxephemでは太陽系表示でも一味違う。それがわかるのが図2−3の写真。太陽系の惑星配置の視点を変えることができるのだ。真上からも斜め上からも、真下からさえ眺めることができる。しかもこの惑星の運行は自由に過去・未来へと動かすことができるのであります。もちろん縮尺の調整も可能で、内惑星だけをクローズアップもできる。

Fig 2-2 Fig 2-3
図2-2 図2-3

 さらに驚嘆すべきなのは、天体観測支援ソフトならではの機能。図2−4を見れば一目瞭然だが、土星の主要な衛星の配置もわかってしまうのである。もちろん土星だけでなく木星や火星などめぼしい惑星で同じことができる。
 宇宙SFを考える時に、木星や土星の衛星配置が重要になるようなこともあるわけだが、そういう時にこのような機能は非常に強力な道具となろう。
 宇宙SFを書く場合の強力な機能としては図2−5の機能なども忘れられない。
 基本的に土星の衛星配置と同じ物なのだが、火星や月に関してはこのように満ち欠けまで再現してくれる。まぁ、『宇宙船から火星がどう見えるか?』みたいな描写ではそのまま使えないが、それでも計算のためのとっかかりにはなる。

Fig 2-4 Fig 2-5
図2-4 図2-5

 また火星では無く地球を選ぶと地球上の昼夜の境界線表示なども行ってくれる。もともと天体観測支援ソフトであるので、国際天文連合(IAU)のホームページなどから軌道ファイルを入手し、最新の彗星や小惑星のデータを表示させることも可能。天体のデータフォーマットは決まっているから、自分で宇宙船の軌道データを読ませれば、それがいつごろどこにいて、どの惑星からどういう位置関係にあるかを表示させることも可能だ。俺はそこまでやってないけど。
関連URL:
http://www.ClearSkyInstitute.com/xephem/xephem.html

OpenUniverse:
 プラネタリウムソフトや天体観測支援ソフトでは、惑星や彗星などがどこに存在するかとか、どのような軌道を描くかを知ることができる。しかし、宇宙から惑星が具体的にどのように見えるか、イメージすることは中々難しい。そういう時に役に立つであろうと思われるのが、このOpenUniverseである。
 OpenUniverseは少し前まではSsystemと呼ばれていた。その心は太陽系シミュレーターである。つまり太陽系内のグランドツアーを再現することが可能なのである。
 このソフトは若干のディストリビューションが自前でRPMにした物をのぞくと解凍してmekeしてインストールする必要があるのだが、まぁ、この辺はごく普通の作業なのでそれほど面倒なことではない。むしろ面倒なのは、このソフトはOpenGLを前提としているので、あらかじめMesa3Dをインストールする必要があることだろう。でもこれもそれほど面倒じゃない。俺は苦労したけど。
 ktermか何かでコマンドラインから openuniverse& と入力するとソフトウェアは起動する。でも openunivers& では起動しません。openunivers&と入力すると、コマンドラインからちっとも起動しないが、しかしインストール自体はうまくいっていて、はてさてMesa3Dのインストールでしくじったのだろうか……などと悩むことになります。普通は悩まないって? 悪かったね。
 起動するとOpenUniverseは幾つかの起動画面を切り替えて表示します。太陽と土星のツーショットのように、エンターテイメントだから私の小説は考証はしません、なんてふざけたことを抜かす架空戦記のごとく、絶対あり得ない絵が立上がることもありますし、小惑星エロスが通過する画像が立上がることもあります。
Fig 3-1
図3-1

 起動画面が終わると図3−1のような画面からプログラムは始まります。このプログラムインストールのときにGLUIライブラリーも先んじて入れておくとGUIによりマウスで操作できるそうですが、私はやってません。
 しかし、立上がって表示されるのはこの画面だけで、果たしてこれをどうするのかというと、昔のDOSプログラムのごとくキーボードで操作します。
 しかし、いきなりキー操作もわかんないでしょうから、最初はデモ画面を表示させるのが良いでしょう。とりあえずキーボードの「d」を押すとデモンストレーションで太陽系をまわってくれます。
 図3−2はそのひとこまですが、太陽周辺をまわる時のレンズのフレアを再現しています。これを見て「ここまでやるか!」と思うか、「なんでこんなことをやるわけ?」と感じるかは個人の資質でしょうから私からはとやかくは申しません。ともかくこういう風な絵もあるということで。

Fig 3-2 Fig 3-3
図3-2 図3-3

 デモ画面はわかったとして、例えば適当な惑星に行きたい時はどうするか? このような時には表示する対象を切り替える。具体的には「Home」「End」キーにて行う。このキーを順に押して行くと追尾する天体が変わって行く。だから例えば土星を選ぶと図3−3のような姿を見ることができる。もちろんカメラの視点なども変えることができるのは言うまでもない。こういうことができるなら、惑星に接近した時に、それがどのように観察できるかを具体的に知ることができるわけだ。
 Openuniverseの凄い所は、そうして観察できるのが惑星にとどまらないという点にある。例えばそれは図3−4でもわかるだろう。これは何かと言えば、いまその筋では注目度No1の天体、木星の衛星エウロパである。ボイジャーとかガリレオなどの惑星探査機のおかげで、こうした画像作製に必要なテクスチャーが使えるので、彼のごとくリアルな惑星映像を表現できる。ちなみにOpenuniverseのインストール用のファイルにouhires.zipというのがあるのだが、これは標準画像では無く、探査機等などのデータを利用したハイレゾ画像のファイルである。これを使うとメモリーは食うし、CPUにも負荷がかかるらしいのだが、それはそれは美しい画像を再現するという。俺は生憎と入れてませんけど。まぁ、標準画像の木星でも図3−5程度の画質は保ててます。

Fig 3-4 Fig 3-5
図3-4 図3-5

 ちなみに今回、画像としては表示していないが、Openuniverseには宇宙船の画像も幾つか用意されている。2001年のディスカバリー号はいうに及ばず、スペースシャトル、APOLLO13などが人工天体として含められている。
 これらも「Home」、「End」キーで選択できるわけだが、そこで「w」キーを押すとカメラ自動追尾モードになり、宇宙船と一緒に視点を移動させることができる。あとは適当にキーを操作すると、宇宙船の操縦を行うことも不可能ではない。
 これがあれば太陽系の惑星などが理解できるわけでは無いが、絵的なイメージはつかめることは間違いない。まぁ、原理も理解できないで絵的なイメージだけあっても意味は無いですけどね。
関連URL:
http://openuniverse.sourceforge.net/

Gnuplot:
 ここまではいわゆる天体ソフトを使って宇宙を表示させてきた。しかし、絵的なイメージだけではどうにもならないこともあり、また太陽系外の話を考えなければならないこともある。いや太陽系外に出ないでも、例えば土星の衛星タイタンの周回軌道上にある人工衛星は……みたいな話を考えなければならないことも珍しくない。まぁ、宇宙SFであればですけども。
 そういう場合の計算にはスプレッドシートが中々便利である。谷甲州さんはいまは知らないが、前まではマルチプランで軌道計算などを行っていたという。計算機よりも楽だとのことだったが、そりゃタイガー計算機よりは楽でしょう、確かに。
 しかしながら、それらで導いた数値列は、そのままでは何を意味しているか良くわからないことも確かにある。例えばスプレッドシートにAからGまでの欄に数字が並んでいて、行ごとにそれらが変化している。そしてある行でB、C、DとE,F,Gのデータが一致した時のAの値が、二つの軌道を移動する宇宙船がランデブーをした時間を表す……などという計算を行うことは十分に考えられるが、二つの軌道が実際どういう関係かを数字だけで読み取るのは難しい。単純な円軌道ならともかく、離心率の大きな楕円軌道だとなかなか分かりにくい。
 またランデブーではなく宇宙船と機動爆雷の衝突みたいな状況では、ランデブーの際の速度を一致させる必要も無いため、軌道傾斜が大きく食い違っていても、その瞬間の座標さえ一致していれば問題はない。だがそれをイメージするのは難しい。
 このような時に数値列を分かりやすく視覚化してくれるソフトがあると大変にありがたい。そうした物の代表がGnuplotであります。
 実は私は長らくGnuplotとは有名なフリーソフトでもあるので、てっきりGNUプロジェクトの何かだとばかり思っていた。ところがよく調べてみるとGNUプロジェクトとは直接関係がないらしい。このソフトウエアを開発したグループは最初、newplotという名前にしたかったらしい。ところがnewplotという商用ソフトがすでに存在していたためにGnuplotという名前にしたらしい。
 このプログラムもまたX Windowシステム上で結果を表示するのだが、そのための操作はktermなどによりコマンドラインから行う。で、X Windowシステムらしいのは結果の表示だけで、じつはコマンドラインからの操作こそがこのプログラムでは重要になる。
 コマンドラインから gnuplot& と入力するとターミナル上で gnuplot> というメッセージが表示される。あとはこのメッセージに従いコマンドを与える。つまりコマンド・インタープリタがこのGnuplotの正体といえるだろう。
 たとえば gnuplot>plot sin(x) などと入力すると、瞬時にサインカーブを描いてくれる。多少、計算式を複雑にしても同様だ。
 だがこのプログラムは計算式を表示するだけでは無く、計算結果を出力したファイルのデータに従い、その数値をグラフ化する。たとえば図4−1のように。これは地球を中心として遠点距離3200キロ、近点距離2100キロの楕円軌道の軌跡を計算し、それを表示した物である。
 じっさいにこの楕円軌道があったとすると、地面の下を人工衛星が回っていることになるが、計算だけならこういうこともできるわけだ。イメージとして楕円軌道であることがわかるだろう。ちなみにこの軌道のデータの計算はエクセルで行っている。多少、工夫すると図4−2みたいな軌跡も描かれる。これは先のデータである時間における人工衛星の軌跡と位置を表示させた物だ。
 ただデータを視覚化したといっても、それはあくまでもデータの視覚化に過ぎず、計算内容について、その意味を理解していないとデータを視覚化したところで得られる物は何もない。図4−1と図4−2の二つのグラフにしてもそう。ちょっと見ると横方向に長いので、そういう楕円軌道と思うかもしれない。が、それは大きな間違い。遠点距離3200キロ、近点距離2100キロの楕円軌道というのは、それほど顕著に楕円であることはわからない。まして横方向の楕円軌道であれば、図4−2の楕円軌道はかなり妙な位置から軌跡が始まっていることになる。
Fig 4-1 Fig 4-2
図4-1 図4-2
 ではこの楕円軌道はどうなっているのかといえば、縦方向の楕円軌道なのである。手前がまさに楕円軌道の近点であって、時計まわりに衛星が移動しているところを表しているのだ。それを三次元的に表示しているので、遠近と視点の位置の関係でこのように見えてしまうのである。
 このようにデータの視覚化は簡単であるが、そこから意味を読み取るためには、その問題について理解している必要がある。宇宙SFに限らないが、小説を書くのは人間であって、道具であるコンピュータではない。
Fig 4-3
図4-3

 さて、Gnuplotは計算結果を表示するだけでなく、色々と応用が利く。たとえば図4−3がそう。これは何かと言えば太陽を中心として半径20光年以内に存在する恒星の立体配置を描いた物だ。図4−3では視点は固定だが、Gnuplotにはもちろん視点を変える機能がついている。だからこうした恒星の立体図などもコマンドラインからのパラメーターの設定を変えるだけで真上からみたり、真下から見たりするようなことも可能となる……はずだ、やったことは無いけど。
 10年くらい前に同じことをBASICでプログラムを組んで表示したことがあるのだが、その時の手間を考えるならGnuplotは非常に強力な道具と言えるかもしれない。
関連URL:
http://www.cs.dartmouth.edu/gnuplot_info.html

 時として宇宙SFに計算が必要なことを不思議がる人がいる。計算などしなくても――時として計算の代りに調査などが入ることもあるが――想像力だけでできる云々というような意見である。これはもっともらしく聞こえるが、無意味な主張だ。
 計算しようがしまいが、小説を書く以上は想像力などあって当たり前であって、計算などの行為を想像力と対比すること自体がおかしいのである。
 計算とは宇宙を認識するための行為であって、計算の必要性はまさにそこにある。認識というプロセスがあるからこそ、自由な発想が生まれるわけだ。
 なるほど時に計算や知識が制約条件として働くかもしれない。だが制約条件があるからこそ、それを解決するために自由な発想が要求され、想像力の拡大を招くのだ。
 たとえば光速の制限を無視して話を作ることはできる。宇宙船はあっという間に恒星間を飛行し、通信装置は100万光年の隔たり、でも普通の会話を実現するような話は「いわゆる科学知識が自由な発想を妨げる」から、科学知識など無視してしまえばできるだろう。しかし、このような「自由な発想」の中からワームホールなどというものは絶対に生まれないだろうし、双子のパラドックスなど生じることは無いだろう。量子コンピュータやゲーデルの不確定性原理とも無縁だ。
 で、どちらの方が本当の意味で自由な発想を保証するか?
 怠惰の言い訳に知識が自由な発想を阻害する云々という話を持ち出す立場か、制約条件を認めつつ、それに正面から向かい合う立場か。それは自明の事だろう。
 SFには色々な種類があるから、みんなが計算を行う必要はまったく無い。ただ宇宙SFの場合、計算という行為は書き手の創作態度の表明ではあるかもしれない。


蛇足ではあるが、本項の解説をしておこう。
いや、隙間が空いたからとかいうわけではなく。

落合[いまいちキャラクターの薄かったMSG]哲也

 まず最初に、本項では対象となっているOSはLinuxである。林譲治氏が使っているのはVine LinuxというLinuxディストリビューションである。Linuxについてはかなり有名であろうから説明は省く。
 X Window Systemの名称についてであるが、MIT内で開発されていたWというウインドウシステムを元にしたので、次の文字“X”が使われたとの事である。とかくUnix系の文化においてはこのような適当な命名が行なわれており、たとえばUnixのコマンドでもコマンドの動作を端的に表わした英文を、再現不能なほどに短縮したものなどが多く、たった十数年の間に元の言葉がわからなくなってしまったものもあるほどである。つまり、「まぁ適当でいいか」って事だ。でも公の場では間違いは嫌われるし、特にWindowsという言葉がMicrosoftのWindowsを連想させるために余計に“X Windows”などの間違いは毛嫌いされているようだ。しかし、X Window SystemのIntel CPU搭載PC用のものであるXFree86の名称が、それまで主流であったX386が商用になってしまったためにフリー版を作る際、X386をもじってXFree86になった(“えっくす・すりー”を“えっくす・ふりー”にしたわけですな)話などを聞くと、やっぱりどうでも良いんじゃないかと思えるが、こんな事をバリバリのUnix like OSユーザの前で言うと顰蹙ものなのかもしれない。
 なお、“Unix系OS”という言い方であるが、これはUnixが発展していく上で辿った紆余曲折による。簡単に言えば登録商標化されてしまったために、誰もが“Unix”という名称を使えなくなったのである。現在では厳密な物言いを好む人達の間では“Unix like OS”と呼ばれている。もっともこのような一括りの言い方はせずにLinuxならLinux、もっと厳密にはディストリビューション名で呼ばれるのが一般的だろう。「Vine使ってるんですが、日本語対応いいっすよ」みたいな感じである。(Vine Linuxという日本で作られた配布セットがある) ちなみに、人口が少なく肩身の狭いBSD/OS, FreeBSD, NetBSD, OpenBSDなどのBSD仲間は“*BSD”などとひとまとめにして身を寄せあっている。これも語弊のある言い方だなぁ。
 RPM形式について。RPMというのは、Red hat Package Managerの略で、普通ならばソースをどこからか貰ってきて、makeする必要がある(makeというのはプログラミングツールの名前だが、makeを使ってプログラム一式を作成する行為も“makeする”などと言う。なおmakeは猛烈に高機能な自動実行ツールであり、大抵のものはmake install などとmakeコマンドに「インストールまでしてね」とお願いすればインストールまでしてくれる)。
 で、RPMファイルというのは、Red HatというLinux配布元が作ったもので現在Linux界では標準になっているようである。RPMファイルにはコンパイルしおわった実行ファイルと、それらをどこに置けば良いかなどの情報が入っており、ごにょごにょすれば簡単にアプリケーションのインストールが出来るのだそうだ。
 デスクトップ環境という言葉であるが、Unix系OSは実は基本部分はGUIではなく、派手に使うためにはX Window SystemなどのGUI環境をその上で動作させる必要がある。さらにX Window Systemは最も基本的な機能(といっても一般人にとっては基本機能すら提供していないと思えるかもしれないが)しか提供しない。さらにその上にウインドウマネージャーと呼ばれる便利な機能を乗せて使うものである。X Window System単体では、ウインドウを開く事が出来ても移動やリサイズなどは出来ないのだ。本項で使われているKDEは先進的な、単なるウインドウマネージャーを越えたデスクトップ統合環境である。これ以上はいくら説明しても伝わらないだろうからここでストップ。
 最後に。FreeBSDもいいよ。




●一般研究編に戻る