2008年11月07日

ニワトリ・アマテルは何匹いるのか?

 8月8日の北京オリンピックの日にリリースしてから、3ヶ月経過したが、はたしてアマテルはいったい何台のマシンにインストールされたのだろうか?
 インストールしてもそのまま使わずに、あるいは使えずに、放置されたりアンインストールされてしまったものもあるだろう。毎日あるいは数日おきに使われている場合もあるだろう。アマテルが何匹に増えたのか、確実に知る手段を私は用意していなかった。

 Java WebStartによるアマテルのJNLPファイルへのリンクをクリックすると、はじめてならインストールが行われる。JNLPファイルにアクセスしたことは、Webサーバー(Apache)のアクセスログに記録が残るのだが、アマテル起動時にはかならず、このJNLPファイルにアクセスし、バージョンが新しくなっていれば、アップデート処理が行われるというのが、Java WebStartの仕組みである。
 ユーザーのリモートアドレスが固定されているなら、IPをユニーク抽出すればアマテルのユーザ数を割り出せるが、普通は毎日かそれ以上のペースで変化してしまうので、これも個人もしくはマシンを特定する手がかりにはならない。つまりサーバーログの情報をいくら解析しても、アマテルが何台のマシンにインストールされたのかほとんど確かな情報は得られない。

 そんなわけで、次にリリースするアマテルには、何匹に増えたかを計る仕組みを用意した。tetramorph.toのサーバには祝福CGIなるものを用意する。インストール直後のアマテルはまだ祝福されていない。祝福とはIDをもらうことなのだが、これは教会で洗礼名をもらうようなものだ。最初アマテルはIDを持っていない。
 アマテルが起動すると祝福CGIにアクセスする。祝福CGIはIDを持たないアマテルからのアクセスがあるとユニークIDを発行する。アマテルはそれを受け取り記憶する。アマテルが次に起動したときは、もらったIDを祝福CGIに送信する。祝福CGIはIDをもっているアマテルが目覚めたことをログに記録しアマテルに「Live long and prosper.」と言う。
 ログにはアクセスしてきたアマテルのIDとその日時が記録される。ログに記録されているIDをユニーク抽出したら、これまでにインストールされたアマテルの数が分かる(もちろん多少の誤差はつきものだ。たとえばオフラインのときは祝福CGIへのアクセスは休む。サーバがメンテ中ということもある)。
 長期間にわたって何度も出現するIDは、そのアマテルがよく使われていることを意味する。一度ログに表れてその後まったく表れないIDは、インストールされたけど、使われていない死んだも同然のIDだとみなせる。繰り返しアクセスのあるIDのみ抽出すれば、実際にアマテルを常用してくれているユーザ数を知ることができる。インストールされた数より、どれだけ常用されているかのほうが重要だ。使われないなら意味がない。

 何匹のニワトリがマシンにインストールされたか。何匹のニワトリが日々生きているか。ニワトリの数の推移。といったログの解析結果もアマテルから参照できるようにしていく予定。
posted by おーさわ at 18:24| Comment(2) | アマテル開発日誌

2008年11月01日

アマテルの軽量効率化を考える

 Eee PCでアマテルが動かなかったというメールが来た。どんなPCかと思ってしらべてみると、ASUSが製造している低価格ミニノート。メモリは256Mから1GB、CPUはIntel Celeron M、TFT液晶で800×480。なぜ動かなかったかは、詳細が不明なのでまったく不明。アマテルを使うには画面サイズがちょっとキビシイけど、次回のリリースではツールバーを隠せるようにして少しは広く使えるようになっている。

 「インストールしたが、古いパソコンなので動作が遅い」「メモリを食いすぎる」というレポートは何件か寄せられる。対して最新のCore2duoを積んだマシンだとストレスなくサクサク動くとも。私はPen4 3GHz、メモリ1GBで、もう数年前のスペックだけど、ほとんどストレス無く動いている。コンピュータの性能は毎年伸びていくし、CPUの性能は1年で倍になるというムーアの法則は今でも有効とされているし、今は遅くてもほっとけば自動的に問題は解決するだろうと踏んでいた。しかし省エネや世界規模での経済破綻が叫ばれる昨今、Eee PCが出てきて売れ筋商品になっている状況をみると、コンピュータ業界が私の思惑通りに進展していくかどうかは怪しい。

 しかし遅い、リソースを食う、というのも機能と引き替えという部分もある。三万件以上のデータを占星術的に瞬時に検索できるようなソフトはアマテル以外には知らない。何万件もデータを記憶すれば、メモリを消費するのはこれは当たり前。大量のデータ管理という点では、既存の占星術ソフトはほとんど役にはたたないはず。それらはみなグラフソフトとして開発されたものだから。

 アマテルのメモリ消費量をjconsoleという専用のツールで調べてみた。データが約三万五千件登録されている状態では60MBほど消費する。データが一件も登録されていない状態だと26MBほど。
 データはHSQLDBを使って管理しているが、このDBはデータを基本的にはオンメモリで扱う。いちいちファイルにアクセスしない。だから動作が高速。そのかわり大量のデータを読みこめば当然メモリは消費する。また起動時にはデータを一気にメモリに読みこむので少々時間がかかる。ただしDBの設定を変更して、メモリではなくファイルに保管する方式も使用できる。その分、メモリ消費は押さえられるが、かわりに動作は遅くなる。

 実験でファイルに保存する方式に変更してみると、データ件数三万五千件のとき、起動速度はオンメモリに比べて35%速くなる。起動時にデータを一気読みしなくなるのでその分早くなる。メモリ消費量はあまりかわらない。30MB〜60MBの間で変動する。メモリ式の場合は55〜60MBの間で変動。最大消費するときの量は変わらないわけで、「メモリが少なくて動かない」というケースを救済してくれるものではない。動作速度が重要だが、かなり遅くなる。体感では倍くらい遅くなる感じがする。このような状況から考えて、メモリ消費を押さえるためにDBをファイル式で動かすのは得策ではないと判断できる。

 百万件とかとんでもない数のデータを入れたいなら、メモリ式ではかなり無理があるので、そのときはファイル式にするか、あるいはもっと本格的な汎用DBを使う選択肢を用意しなければならないだろう。
 今のところアマテルはそこまで多量のデータを入れることを想定していないが、そういう状況にも対応することはさほど難しくはない。SQLで動く高性能のDBはすでにあるので、それに切り替えたら良い。

 データ未登録のアマテルは約26MBのメモリを消費する。ちなみにJavaで書かれた2ちゃんブラウザのV2Cのメモリ消費を計ってみると、6〜8MB。アマテルを開発しているIDEのNetBeans5.5は、アマテル開発時に60MBから100MBを消費。Javaアプリとしてみたとき、アマテルはそんなに大飯喰らいではないと思われる。

 アマテルの起動を速くしたい、メモリ消費を押さえたい場合は、たくさんのデータを登録しないというのが一番の解決策だろう。そういう使い方をすると、アマテルの真価が発揮されないのだけど、どうしてもという場合は仕方がない。

 Eee PCのような低スペックのノパソも対応はしていくつもりだ。周囲をみている限りでは占い師や占いユーザはモバイル環境を好む。高性能のデスクトップ環境を前提にしてしまうと、主要なユーザ層を取りこぼしかねない。しかしあまり古い機種までサポートするわけにはいかない。今さらWin98を持ち出されても困る。
対応するか捨てるかの線引き基準としてEeePCというのはちょうど良いかも。ただしメモリは最低でも512MB入ってるモデルにしてほしいけど。

 JavaやSQLで動くDBを採用したこれまでの開発方針が間違っていたとは思わない。望んでいた機能を満たすためにはどうしても必要だった。プロトタイプは大がかりで効率が悪いと決まっている。開発のしやすさを取り、速度や効率を犠牲にしたのは方針通りだ。
 多機能で、多量のデータを管理でき、高速に検索でき、メモリを極力消費せず、高速に動作し、精度よく計算し、表示も印刷も美麗なのが理想である。すべてが良いのがいいに決まっているのだから。
 しかし軽量と高機能は対立する性能だ。高機能をめざせは、軽量化は難しい。軽量化をめざせば高機能は難しい。それでも、その両立は目指すべき理想ではある。問題はいつから目指すかだ。たしかに時代は省エネに向かっている。しかし今のアマテルの開発状況で、それをするのは早すぎる。子供でいえばまだやっと首がすわってきたような段階。もっと様々な実験を行い可能性を模索したい。最初から型にはめる開発なんてつまらない。

---------------------------------------------

 「動作しなかった」とかバグレポートは大歓迎。詳しく症状を書いてエラーログもついてると、だいたいはすぐに解決することができます。
 アマテルのよくある質問集、エラーログの取り方は次のページを参照してください。

http://tetramorph.to/amateru_faq/
posted by おーさわ at 14:41| Comment(0) | アマテル開発日誌

2008年10月25日

スキンと計算条件の設定まわりのバグ

表示(V)メニューの中にある、スキンと計算条件の設定や選択機能ですが、これは今のところ、基本ホロスコープと相性ホロスコープだけが、設定できる機能をもっています。

設定機能をもたない他のチャート(たとえば星座分布グラフとか)を表示中に、表示(V)メニューを選択すると、その中にはスキンと計算条件のメニューがそのまま表示さていて、なんと選択することができます。

でもこれ、だめです。選択しないでください。おそらく壊れるほど深刻なエラーにはならないと思いますが、やっちゃだめです。NullPointerExceptionが出て動作不安定になる。ごめん。
設定変更機能は、今のところ基本ホロスコープと相性ホロスコープのみでご利用ください。

なお次のバージョンアップのときには、このバグは治っています。
posted by おーさわ at 22:53| Comment(0) | アマテル・バグフィクス

印刷やコピペやファイルに保存

 アマテルのチャートの画像を、ファイルに保存したり印刷したりできるようにした。保存はPNG,GIF,BMPなどいくつかの中から選べる。私は印刷してチャートを読む習慣がないので、この機能は後回しにしていた。

 ホロスコープの印刷は、最初から印刷することを前提にしていたので楽だったけど、レポート機能は考えていなかった。印刷してみると紙からはみ出してしまう。縮小するとか、さらに2ページに分けて印刷するとか、考えないといけないのだが、Javaのマニュアルを読んでも方法が書かれていない。レポート機能はJEditorPaneというHTMLを表示できる部品を使っているのだけど、検索してみるこの部品の表示を印刷する方法はみな悩んでいるようで、しかも解決策がズバリのってるのはみつけられなかった。

 そういうときは公開されてる印刷APIのソースコードを読んだり、試行錯誤して自己解決するしかないんだけど、印刷しないことには結果がわからないから、何度も何度もテスト印刷する。紙がどんどん無駄に消えていく。もったいないので裏返してまたテスト。
 結局一日悩んだすえ無事解決。わかってしまえば簡単なことも、わからないとほんとに難題に思えて憂鬱だが、算数さん太君みたいにピッカーッ!が来ると、いっぺんにハイになる。この感情的なアップダウンが好きなのかもしれない。
posted by おーさわ at 19:05| Comment(0) | アマテル開発日誌

2008年10月20日

アマテル 1.1.5βをリリース

アマテル1.1.5βをリリース。
三種類ほど検索機能が増えました。
それからスキン(配色設定ファイル)のインポート/エクスポート機能が追加。
前のバージョンより、操作性と安定性が向上。

スキンファイルをいくつか用意しました。
これは基本ホロスコープ用です。
自動解凍書庫になっています。

(1)ダウンロードして実行するとskinというフォルダができその中に4つのXMLファイルが入っています。
(2)アマテルを起動して適当なチャートを表示。
(3)チャート(C)から「基本ホロスコープ」を選択。
(4)表示(V)から「スキンの整理」を選択。
(5)ダイアログが開くので、その中の編集メニューから、インポートを選択。
(6)ファイルダイアログが開くので、解凍したXMLファイルのフォルダを開き、なかの4つのXMLファイルを選択。(Shiftキーを併用すると複数選択可能)
(7)「開く」ボタンを押すと、インポートされます。
(8)スキンの整理ダイアログに、インポートされたスキンの名前が表示されるので、任意のものを選択すればOKです。

スキンファイルのダウンロード skin.exe (40KB)

 前バージョンのマニュアルは、あまりにもやっつけ仕事だったので、今回、ちょっと気合いを入れて書き直した。しっかりした目次や索引を作りたいのだけど、パワーポイントでは機能不足でちょっと無理。
目次や索引のリンクを張る機能は、できてあたりまえのように思えるけど、あまりきちんと対応しているソフトを見かけない。
アドビのインデザインに乗り換えるか・・・。
しかしパワポのお手軽さは捨てがたい。
 
posted by おーさわ at 09:57| Comment(0) | アマテル開発日誌

2008年10月14日

AMATERUは常時接続環境でないと使えないの?

 という質問が来たのですが、常時接続でなくても使えます。
 インストールのときはネットに接続されている必要がありますが、そのあとは不要です。
 アマテル起動の際に、ネットに接続されているときは、当サイトのサーバーに更新の確認を行い、新しいバージョンになっているときは自動でアップデートします。
 モバイル環境等でネットに未接続のときは、サイトへの更新確認はスキップしそのまま起動します。
posted by おーさわ at 23:16| Comment(0) | 日記

2008年10月12日

近々バージョンアップをします

colorChart.jpg すずしくなって開発が順調で、それにのめりこんでいたらブログはほったらかしになってしまった。次の新月までにはバージョンアップするつもり。(まだぜんぜん先じゃないかって?まーちょっと余裕を見ていってますので(笑))。

 操作性はまえよりもかなりよくなった。三重円まわりの操作体系もかなり改善された(手前味噌的主観です)。
 ノーアス検索/回帰検索/月相検索も追加。ノーアス検索はぜひためしてみてほしい機能。ノーアスの人が山ほどいるってことがよくわかるはず。ノーアスは特別視されすぎてる。

 スキン(と計算条件)のエクスポート/インポート機能がついたので、これからホロスコープがとてもカラフルな表示になる予定。スキン(カラー定義)の設定ファイルもネットで配布していける。人間は目の生き物だからみてくれは大事(笑)。

 今はマニュアルを更新しているところで、新しくなったアマテルの画像に差し替えたり、未説明だったところを追加したり。バージョンアップのたびに、広範囲にわたってリライトするのは大変だけど、これもこつこつやっていくしかない。

 紫微斗数やヘリオセントリックなど、ご要望は来ているんだけど、まだ基礎作りの段階。基礎がしっかりできたら、あとは次々と開花する予定。自分では見ないけど東洋系のも入れていきたいとは思ってる。
posted by おーさわ at 00:54| Comment(2) | 日記

2008年09月29日

バージョンアップしたいが、しかし・・・

amateru0924.jpgベータ版1.0をリリースしたあと、検索まわりの強化を図ってきた。
たとえばノーアスペクトの人物データを検索できるようにした。
検索結果窓をタブ式にして、またどのような検索をした結果なのかわかるようにした。
新月や満月の時刻表を生成して、新月図や満月図が簡単に作成できるようにした。
同様にネイタル図に対しての太陽回帰図や、他の天体の回帰図が表示できるように、回帰時刻のデータを生成できるようにした。

前回書いたチャート選択の問題も、一応、改善の努力はしてみたが、やっぱりこのあたりにねじれがあるようで、どうもまだ詰めが甘い。
この部分がすっきりしたら、ホロスコープの配色設定を、多人数でシェアできるスキンの仕組みに着手できるのだけど・・・。
占星術辞書はその後くらい。

新月あたり、つまり今日明日あたりには新バージョンをリリースしたかったけど、水星逆行がはじまった影響か、どうもまだ腹が決まらない。
もうちょっといじくる必要がありそう。

しかし、あまり間をあけず、頻繁にバージョンアップをくり返すというのも、わるくはないかもしれない。作りかけの部分や、バグが残っていても気にしないという方針で(笑)。操作法が一気に大きく変化すると、ユーザのほうも面食らうだろうし・・・。しかしあんまりひどい状態でリリースすると信用にかかわるし。それもベータ版の間は良しとするか・・・・迷う。

posted by おーさわ at 00:41| Comment(0) | アマテル開発日誌

2008年09月18日

三重円の操作体系はちょっと間違いっぽい

やっぱりメニューバーの機能(C)を選択したら、

機能(C)
-------------
ネイタル円
トランジット円
ネイタル+トランジット
NPT
相性円
相性円+トランジット
レポート
星座分布グラフ
・・・・

とまぁ、こんなふうに、なってるほうが良いわけ。
今は、NPT三重円が最初にあって、それを選択したあとで、表示(V)→表示円→7種類の組合せ、というように分岐していく仕様だけど、どうもこれだと、まぎらわしくて使いにくい気がする。

しかし、このように仕様変更するのは、かなりの作業量が必要で、なおそうとしたらひと月くらいかかってしまうかもしれない。
うーむ、悩む。

なんでこのような造りになったかというと、N-P-Tをワンセットにして作るのが、一番作りやすかったから。しかし人間にとっての使い勝手はまた別問題。まぁ、よくありがちな話なんだけど。
posted by おーさわ at 04:50| Comment(0) | 日記

2008年09月13日

Vectorの登録拒否とJava WebStartの関係

 Vectorソフトウェアライブラリに、アマテルを登録しようとしたら、拒否されてしまった。なんでかというとアマテルがオンラインインストールになってるから。ベクターが受け付けるのは、zipやexeファイルになってる、いわゆるフツーのソフトウェアに限られ、vectorのサーバー上に保管できるものでなければならず、作者自身のサイトから配布するのは許可しないのだそうな。

 アマテルはJava WebStart技術を使っていて、オンラインで一気にインストールする。この方式を警戒するユーザーがいるのは百も承知だったのだけど、Javaアプリのようなクロスプラットホームでの動作を前提にした場合、インストーラーを作るのに非常に手間がかかるので採用した。セキュリティ面でのリスクも、zipやexe形式で配布されているものと比較してもほとんど差は出ない。
 JWSにしておけば、LinuxもSolarisもWindowsも、そしておそらくMacも、サンマイクロなりアップル社がほっといてもインストーラ(正確にはデプロイメントといわなきゃいかんのだそうだが、そんなことはどうでもいい)は用意してくれる。
開発者側は各機種やOSに合わせてインストーラーを作る手間から開放される。もしこれを自分で作ろうとしたら、複数のOSや機種を一式そろえることになり、会社ならともかく個人ではそこまでまかなえない。時間もかかる。
 それから人の足もとをみたというか、これは会社の足もとを見てるというべきなのだが、馬鹿みたいに高価なクロス環境対応のインストーラも売られているが、個人のフリーソフトにそんな金をかけるわけにもいかない。

 JWSはそこらへんの問題を一気に解決してくれる便利なもんなのだけど、新しい(といってもこれが出てきてもう数年経過してるのだけど)ことをすると、古いやり方と対立してしまうものらしい。なかなか新しい流儀というのは浸透しないものだし、新しいものが優れているというわけではないのだが、どうせ日進月歩ですぐに変わっていくのがこの業界だ。昨日の常識は今日の非常識にとってかわる。自分で好きなように書くほうを優先したい。

 それになにより、JWSで自動更新してくれるほうが楽ですよ。
手作業でDL&バージョンアップしたり、パッチ当てたりめんどくさい限り。
posted by おーさわ at 03:36| Comment(0) | アマテル開発日誌