2008年11月30日

JREのバージョンがあがったら

 つい最近、JREのバージョンがあがった。アマテルのバージョンダイアログからも確認することができるけど最新版は1.6.0_10-b33。
(これより前のバージョンのときは、Javaのコントロールパネルから簡単にアップデートできる。または自動アップデートに設定しておくと、自動的にやってくれる。)

 バージョンが上がってから前より高速に動くようになってるみたいだ。アマテルでホロスコープをドラッグして回転させるとやっぱり速くなってる感じがする。
posted by おーさわ at 11:25| Comment(0) | アマテル開発日誌

2008年11月28日

アマテルカウンタの数は

アマテルカウンタの数は今回リリースした時点から数え始めるので、これまでにインストールされた数は入っていません。
けれどこれから少しずつ増えていくのが見えるはず。
数え方の詳細はマニュアルを見てね。
posted by おーさわ at 03:42| Comment(0) | アマテル開発日誌

バージョン1.3.0βをリリース

バージョンアップしました。

■追加された機能

チャートの画像をファイルに保存、クリップボードにコピー、印刷。
ホロスコープを時計のようにリアルタイムにアニメーションする時計モード。
ヘルプメニューからマニュアルを表示。
マニュアルを大幅にリライト。前よりも読みやすくなるよう心がけた。
ツールバーを非表示にして画面を広く使えるようにする機能。
全国のアマテルの稼働数がわかるアマテルカウンタ機能。
マイチャート、今のチャートボタンに、スキンと計算条件を適用できるようにした。
全体の操作性の向上。多数のバグを除去。
より安定動作するようになりました。

■操作法が変わったところ

マイチャートへの登録は、チャートを表示してから編集メニューで行う。表示中のチャートに適用されている計算条件とスキンも記憶される。今のチャートボタンも同様に編集メニューから。

メニューバーのチャートと編集メニューの順序を入れ替えた。

以上

もうすぐ新月だ。少し早めに種まき完了。
posted by おーさわ at 00:52| Comment(0) | アマテル開発日誌

2008年11月27日

バージョンアップ作業中

今23時32分。バージョンアップの作業中なのですが、ちょっと手こずっています。もしかしたら今のアマテルを起動すると、エラーが出て落ちるかもしれません。すいません。少し時間を置いてからためしてみてください。

リハーサルして本番というようにしたいのだけど、なかなか追っつかない。orz
posted by おーさわ at 23:34| Comment(0) | アマテル開発日誌

2008年11月22日

来年のムーンダイアリーとサンダイアリーが出た

DSCN4085.JPG

> この前サン・ダイアリーを買いました。
> 書店で何気なく見てみたらなんだか便利そうなので欲しくなって。
> 来年は毎日のサビアンを見ながら暮らします♪

というメールがきて、コロッと忘れていたのを思い出したので紹介。
来年のムーンダイアリーとサンダイアリーが発売されました。
手帳につかわれてる暦の計算が私の分担。

サンダイアリーは毎日のサビアンと太陽と他の天体のアスペクト、それから二十四節季と七十二候が分かる手帳。毎日のアドバイスつき。
ムーンダイアリーは毎月のボイドの時間帯と月齢が分かる。こっちも毎日のアドバイスつき。

 占星術知らない人にも、それに簡単に触れることができる便利な手帳です。
 ちなみに私はボイドの時間はプログラミングしない。ボイドの時間は新しい事をはじめてはならないとか、ミスが多発する、口論になりやすいとか言われるのですが、どうも眠くなりやすいというのが本質かもしれないと思う今日この頃。眠いとき無理すると問題が起きやすい。


ムーン・ダイアリー’09

サン・ダイアリー’09

posted by おーさわ at 00:41| Comment(2) | 日記

2008年11月21日

ニワトリを数えなおしてみた

amalog.png アクセスログをいくら解析してもアマテルがインストールされた数はわからないと以前書いたけど、あらためてサーバのアクセスログをながめていたら、二つの条件を満たす行を抽出すれば概算できそうに思えてきた。アマテルのjnlpファイルをGETしていて、かつその一手前に、インストールページを参照しているアクセスを抽出すれば良い。インストール後、デスクトップアイコンから起動した場合は、インストールページの参照情報は付かないから、両方の条件を満たしているアクセスは、インストールされたときのものと推定できる。

 サーバに貯まっていた8月8日から11月19日までのログをまとめてDLし、Perlで解析用のスクリプトをちょいちょいと書く。Perlは書き捨て感覚で書けるのでこの手の用途には実に良い。十分ほどでプログラムは完成。
 解析結果は664件。毎日かならず数件のインストールがあり、多いときは一日15件以上の日もある。インストールをやり直す人もいるから、あくまでも概算だが悪くない数字だ。その結果をエクセルでグラフ化。
 宣伝したり声の大きなサイトで紹介されるとガーッと一時にアクセスが集中し、そのあと一気に数が減るものだけど、今のところそういうことはせず、自然にまかせているせいか、増減の波はほとんどなく毎日一定のペースでじわりじわりと順調に増えていってる。
 しかし数百人がインストールしたらしいとはいえ、直接使い方を聞いてきたり、バグを報告してくるユーザはほとんど皆無で、少数の知りあいの人々からのものがほとんどだ。
 マニュアルがなくても使えるのが良いソフトだし、バグもないからクレームもない、というのがある意味理想ともいえるが、反響があると私はうれしい。アマテルに目安箱機能をつけたら、もっと情報があつまるかなとも思うのだが、それはメールでもブログにレスしてもらうのでも可能な事だ。あまり押し寄せられてもさばききれないし、他人の意見にふりまわされはじめると、本来めざしている軌道を見失うから加減が重要だ。

 インストールしてくれたユーザの皆様ありがとう。まだの方も是非インストールしてください。今後もバージョンアップを続けます。アマテルをよろしく!
posted by おーさわ at 06:57| Comment(0) | アマテル開発日誌

2008年11月20日

サポート掲示板を作りかけてやめている

 したらばでスレッド式掲示板を借りてアマテルのサポート掲示板を作ろうかと手続きをしたのだが、、、、やっぱめんくさいなぁ。ブログにレスする人もいれば掲示板に書く人もいて、さらにメールでよこす人もいて、、、3つもチャンネルあけると、時間食われすぎてしまう。
 今の段階ではユーザーサービスや広報は最小限で、アマテル作りに専念してクオリティを上げるほうが先決だろう。
posted by おーさわ at 13:03| Comment(0) | アマテル開発日誌

飯は食わねどプログラミング

 「プログラミングで飯が食えるか?」という本を読んだ。職業プログラマーとして一流の人とは、求められる人材とは、職業プログラマーの喜びとは、そんなことが書かれている本。そういうものを目指す人々には面白い本かもしれない。

 しかしいつのまにか「飯のためにプログラミングする人ばかりになってしまった」のではあるまいか。非職業的に趣味や芸術としてのプログラム作りがもっと流行るといいんだけどな。それができる環境は、いまや至れり尽くせりで、開発環境もマニュアルもライブラリもすべて無料で手に入るのに。アマテルもそういうのを使って作っている。
posted by おーさわ at 12:50| Comment(0) | 日記

2008年11月17日

ホムペをリニューアル

人任せにしていたホムペだけど、更新作業は伝言しなければならず、かゆいところに手が届きにくいので自分で作り直してしまった。
でも今のところ内容はあまり変わっていません。
posted by おーさわ at 11:38| Comment(0) | アマテル開発日誌

マイチャートボタンのこと

 マイチャートボタンは、自分のデータを登録しておくと、以後そのボタンを押すとすぐに自分のチャートが開く、というボタンである。
実は「自分のデータを登録」という考え方が、間違っているのだ。
「自分のチャートを登録」するのが正しい。このボタンを押したら出てきてほしいのは、望んでいるチャートなのであって、出生データではない。ところが今は出生データを登録するというインターフェイスになっているのだ。

 チャートはどんな図を描くのか(チャート(C)メニューの中のどれを使うか)、計算とスキンの設定はどれを使うのか、図に表示する出生データはどれか。トランジットの情報、がワンセットになったものだ
 今のマイチャートでは、出生データの呼び出し用IDを記憶しているだけだが、チャートを復元するためには、これだけの情報をどこかに記憶しておく必要がある。

 マイチャートボタンに必要とされている機能は、前述したいくつかのパラメターをひとまとめにして、チャート単位で保存/復元を行う機能だ。これはマイチャートボタン一つだけであれば簡単で、今いじっているバージョンではそれはもうできている(公開バージョンはまだ)。
 しかしこの機能から見えてくるより高度な機能がレジューム機能だ。アマテルでいくつかのチャートを開いて、占星術の作業をしているとする。作業が終わってアマテルを終了する。ふたたびアマテルを起動したときに、前回開いていたチャートが再び画面内に復元される機能。これは前々から予定しているのだが、チャートを表示する部分や、表示設定を管理したりする部分など、細部ができないと作りようがない機能である。小さな機能が複数集約されてできあがる機能だからだ。
 占星術とは直接は関係がないんだけど、こういう機能のほうが私の中では優先順位が高い。入れ物の部分だから。その入れ物の中に、様々な占術メソッド用の道具類が入る。サビアン辞書や占星術辞書も中身の部分。レジューム機能は道具箱に属する機能。

 メインである道具作りを優先したい誘惑はしばしば起きるし、人はどんな新道具が追加されたかにはよく反応する。ドラえもんのポケットから出てくる道具に目はいくが、ポケットの仕組みにはあまり意識が向かわない。「前よりずっと使いやすいポケットになりました」なんていっても「ふーん」てなものである。でも真に(技術的に)大事なのは入れ物のほうなのだ。道具箱からすぐに望んだ道具が取り出せなかったら、どんなに良い道具も真価が発揮されない。

 時計だって中の機械ではなく側のケースにコストがかかっている。うどんだってうどん玉よりつゆのほうがコストがかかる。秋月電子の組み立てキットにケースがついていないのは、ケースはメカより何倍もコストがかかるからだ(と思う)。人間も中身が大切だというが・・・なんか話が脱線しはじめたのでこのへんで(w。
posted by おーさわ at 11:14| Comment(0) | アマテル開発日誌

2008年11月10日

EeePCでアマテルは動いたらしい

 EeePCでアマテルが動かない問題があったけど動いたらしい。
UserHomeディレクトリ内の.Amateruを削除して再インストールしたらうまくいったとのこと。

 問題が発生する場所はすでに特定できているのだけど、なぜそのような事態が発生するのかがイマイチ特定できずにいる。しかし対症療法的に問題を回避する方法はあって、次のリリースでは対策をほどこしている。どうなるかは、その後様子をみてみるしかない。

 また近日中にバージョンアップする予定です。
posted by おーさわ at 15:24| Comment(1) | アマテル・バグフィクス

ひさしぶりにCGIのプログラミング

 ここ4日ほどアマテルがインストールされた数と起動回数を調べるためのCGIプログラムを作っていた。(もう二年以上サーバーサイドのプログラミング忘れていたのでかなり嫌な作業である。)
アマテルが起動したときに、このCGIにアクセスさせる。CGIは名無しのアマテルにIDを与えログに記録する。これによってアマテルがインストールされた数が分かる。
IDをもったアマテルのアクセスもログに記録する。これによって今日起動したアマテルの数が分かる。このようにして毎日ログを蓄積していく。そして蓄積したログを解析して、日別、月別の集計表を作る。

 CGIのプログラミング言語は、私には選択肢が二つあった。PerlとPHPだ。PHPは書くのは楽なのだが開発環境をととのえてやらないといけない。Linuxマシンを用意してHTTPサーバーやDBを常駐させて・・・。前はそういう環境を用意していたのだが、なんかもうめんどくさい。手間を食いすぎる。アマテル本体を書く時間を削られたくない。
 それからPHPはある時、大幅なバージョンアップをして、それまで書いてきたソースの多くがほとんど動かなくなり修正をせまられた。これがあるから新進言語は恐ろしい。

 そこで昔からまったく変わっていないPerlである。これはほんと、96年ごろからまったく変わってない。これで書いたプログラムは今でもちゃんと動くし作法もいっしょ。動作チェックもWindowsのローカル環境でもできる。
 ログを蓄積してそれを日別月別に集計したり、ID発行を管理したり、様々な角度からデータ分析を行うといった場合、やはりDBを使いたくなる。普通のファイル管理でも実現は可能だが、書いた集計プログラムの動作検証がDBを使うよりかなり手間なのと、あとから仕様変更しようとしたとき融通が利かない。DBを使うとSQLによってそういう苦痛を大幅に軽減できる。

 今回の用途にDBはとても魅力的だし、使ってるレンタルサーバはDBを完備しているが、あえて使うのはやめた。リモートホスト上のDBをメンテナンスするのはじゃまくさい。DBが動いてないと書いたプログラムの動作チェックができないので、ローカル側でもDBの使用環境を整えてやる必要ありそれがじゃまくさい。サーバーの引っ越しがあると、DBのデータの移し替え作業がじゃまくさい。(もうめんどうなことは一切嫌なの!これが四十過ぎるってことなんだよね。(笑))
アマテル集計プログラムはごく普通の原始的な方法で書き上げた。

 なにを問題にしているかというと時の重みだったりする。時間がたつと自分で書いたプログラムも他人が書いたもののようにわからなくなる。言語も仕様変更されて今まで動いていたものが動かなくなる。サーバーだって引っ越しすることはある。コンピュータの世界はほんとに諸行無常を痛感するので、時間の経過に耐えるか耐えないかで使う技術を選ぶようになる。石橋を叩いて渡らない(笑)。でも、叩いて大丈夫だったはずの石橋が数年たたずに落るんだな、これが。
posted by おーさわ at 10:08| Comment(0) | アマテル開発日誌

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) | アマテル開発日誌