blog管理 学術系 業務連絡 四柱推命 紫微斗数 時事ネタ 書籍・雑誌 数秘術 姓名判断 性格類型論 占術いろいろ 占星術 素質論 日記 風水

2017年5月14日

天体位置計算エンジン「はいぱーへきちゃん」

JavaScript版もできたことですし、ちょっとここらで書いてみますか。

うちのサイトで使用している天体位置計算エンジンには「はいぱーへきちゃん」という名前がついています。
まぁ、ご想像通り名前の由来は好きなアーティストのひとり、椎名へきるさんからです。それはいいとして、なぜ「はいぱー」という形容詞的なものがついているか、それを一度お話ししてみようかと。

「はいぱーへきちゃん」は別途作成していた超高精度天体位置計算ライブラリ「poscalhp」のスピンオフです。
もっとさかのぼると、poscalhp自体も私が学生時代にでっち上げた占星術ベースの性格類型論のスピンオフだったりするのですが。

一方、「はいぱーへきちゃん」は阪井占星術研究所的には第3世代の位置計算エンジンにあたります。太陽系天体の位置を二体問題で近似していた初代、海上保安庁水路部(当時)の計算式をベースに計算した第2世代を経て、フランス経度局(当時)のVSOP87を使って計算するいまの形になっています。その流れはposcalhpも変わりません。

ただ、poscalhpとへきちゃんシリーズには「サーバサイドで計算するかどうか」という設計思想上の違いがあります。
もともとうちのサイトでCGIを使うようになったのは@niftyの@homepageで利用できるようになったからなのですが、その際にどのくらいならサーバのリソースを大きく取ることなくある程度の精度で天体位置を長期間計算できるかで悩みました。
海上保安庁水路部の計算式を見たことがある方ならイメージできると思うのですが、あの程度ならサーバ的にも問題ないだろう、と1999年の時点では予想できていたのですが、歴史上の人物を計算させるには心許なかった、というかすでに精度が追いついていなかった。そこでVSOP87に目をつけたのですが、すべてのデータを投入しようとしたらさすがにサーバ止まるだろ、とも考えました(いまでしたらもう1桁精度あげていたと思います、というか某所で実際やりました)。

そこで、いろいろ考えて「自動占いのコンテンツとして許容できるとすれば誤差は±1分かな」という結論に達し、振幅係数の絶対値が1.0×10-4以上の項を有効数字1.0×10-5まで取って計算することになりました(月と冥王星は別処理しています)。実際作ってみて動かしてみて、サーバにあまり負荷がかかっていないことを確認した上で運用を開始して約18年、いまの形になってから13年経過していますがこれが原因でサーバが止まった、という話は一度もありませんでしたね。

とはいえ、この数年のブラウザ環境の変化から、横から別な問題が。FlashからHTML5への移行が進んできた結果、出生図作成サービスでFlashを使っていたのを見直さざるを得なくなりました。構想自体は2015年夏からあったのですが、やっと先日かたちにすることができました。たぶんこれで「はいぱーへきちゃん」は現時点でのweb技術的には最終形なはずです。

でも、「はいぱーへきちゃん」にもまだ課題が残されています。それは小惑星の位置計算。
確かに高精度に計算するには数値積分した結果を保持するしか方法はありません。でも、へきちゃんシリーズの設計思想「許容誤差は±1分」を踏襲すれば、「数値積分した結果からごにょごにょして近似式作ればいいんじゃね?」とここ数年調査・研究を続け、ようやく「数値積分してごにょごにょする」方法の具体的なイメージが形になりました。あとはひたすら書くだけ(時間が割けるかは別として)。

もちろん、「最初からSwiss Ephemeris使えばいいじゃない」という意見があるのはよくわかっています。正直Swiss Ephemerisを見た時は「負けた」と思いました。でも、一度フルスクラッチで書いてみることで見えてくる世界もあるのも事実です。
いま振り返ってみると、へきちゃんシリーズを作ったことが私の人生を大きく変えたのは間違いないようです。

投稿者:astsakai 2017年5月14日 16:46