Toshです。

In message "[ruby-list:22868] Re: [Q] blade internal design"
    on 00/05/24, Hideto ISHIBASHI <hideto-i / rr.iij4u.or.jp> writes:
>なるほど。そちら (swigruby) も検討してみます。
>
>自分が使うものだけ書いて、ruby-list に PDS として流して、
>あとは達人におまかせ、というワザを使うかもしれません :-)

実は少し前に拡張ライブラリを書く練習にRuby/Namazuを書いた事があります。

かなり問題ありありなのでちゃんとしたものを書く人達の混乱を引き起こす
かもしれないと思って今まで沈黙してたのですが、まぁ、情報はないよりは
あるほうがいいと思うので、一応。

とりあえず、namazu-cmd.cを参考に最低限の部分で動く所までは持っていき
ましたが、オブジェクト指向にインターフェイスがうまくまとまらなかった
のでほっぽってしまいました。

僕が見た限りでは、libnmzの使い方は、
  (1) nmz-add-indexでインデクスのディレクトリを一つずつ追加して
      エンジンを初期化しておく。
  (2) nmz_searchで検索すると、結果の構造体のリストが返って来る。
  (3) nmz_free_internalでエンジンを解放。
の様な感じです。

(1)(3)のようにエンジン自体に初期化・解放の処理があるため、エンジン自体
をオブジェクトと扱いたかったのですが、なまずエンジンの内部状態は1プロ
セスにつき1つしか持てないようになっているようです。

# ちゃんと調べたわけではないので間違っている可能性もかなり高いです。

そのため、エンジンをオブジェクトとしてもモジュールとしてもいまいち
しっくりきません。その上、nmz_free_internalを呼ばないとメモリにゴミが
残り、それが検索を繰り返す度に大きくなります。

ここらへんが解決できなかったので、Ruby/Namazuは短命なプロセスでなら使
えてもサーバーに使える程安全ではないものになってしまいました。

一応、ソースも置いておきます。

  <URL:http://www2.pos.to/~tosh/ruby/ruby-namazu.tar.gz>

何か間違っている部分とかあれば指摘していただきたいですが、僕には今
これをメンテする余裕は無いので反映されるかどうかは不明です。
あしからず。

# RubyとNamazuの両方に精通している人は多分何人かいらっしゃると思うので
# そういう方がちゃんと書き直すのが一番かと思います。

---
Tosh
Toshiro Kuwabara