Namazu の検索結果を RSS に!2006年03月25日 12時54分15秒

ここのところ Search-Namazu で遊んでいるので、何か作ってみようと思い、Namazu の検索結果を RSS で出力する rssnmz.cgi というものを作ってみました。

CGI パラメータ query に検索語(エンコードする必要はあるが)を指定すると、検索結果が RSS で得られるというもの。

blog に貼り付ける RSS リーダー に仕込んで検索結果を表示すると面白いかもしれない。 例えば、将来は

  • query=+uri: で日付順にソートすると、更新ページリストの表示が可能
  • query=+uri: でアクセス数順にソートすると、人気のページリストの表示が可能
  • 検索語トップ10の表示
  • その他

といったこともできるでしょう。

Search-Namazu の機能的な制限により、できることが限られますが、そのうち公開します。 (よりしっかりしたものが必要なら C 版で作れば良いわけだし。)

rssnmz.cgi と同じディレクトリに .rssnmzrc という設定ファイルを用意し、そこでインデックスの位置やReplaceの指定を行うことにします。 現在は query を CGI パラメータで渡していますが、.rssnmzrc で指定する方が良いのかもしれません。 その代わり、rcfile の接尾語を CGI パラメータで渡して、.rssnmzrc.xxx を読み込むようにして切り替えられるようにしたいと思います。 これは、namazu.cgi の欠点である別の .namazurc を使いたい場合は、別ディレクトリに namzu.cgi と共に置かなければならないといった問題を避けるためです。

Namazu による RSS rssnmz.cgi 試運転開始!!2006年03月26日 02時27分47秒

テストをかねて rssnmz.cgi の試運転を開始しました。

CGI パラメータなしで呼び出すと、日付順に全件表示モードで出力するようにしました。ただし、デフォルトは先頭4件のみ。

そうすると、検索結果の表示という意味からは外れ、単純な RSS フィード出力と同じ動作になりました。 それではということで、サイトの RSS 出力に rssnmz.cgi を使うようにしてみました。 サイトは、何らかのツールで RSS フィードに対応しようとは思っていましたが、Namazu で対応するとは昨日までは考えていませんでした。

RSS 出力のためだけに Namazu を使うのは少々オーバースペックな気はしますが、ちょっと面白い例かなと思います。

今のところは goo RSSリーダー ウェブ版での動作確認のみです。

OpenSearch にも対応したつもりですが、テストする方法が分からないので、まだ未確認です。 (goo RSS リーダーは OpenSearch には対応していないみたいです。あるいは rssnmz.cgi の OpenSearch モードの出力にバグがあるか。)

rssnmz.cgi の OpenSearch 対応2006年03月26日 10時14分20秒

OpenSearch の登録画面

OpenSearch 対応はしたものの動作確認ができず困っていましたが、 A9.com に登録して確認することにしました。

ユーザー登録後にサーチエンジンの登録が可能となります。また、ここでプレビューができました。登録前に動作確認ができたので、最初からここで確認すれば良いわけです。

動作確認中にいろいろと不具合が見つかり、結局ここでデバックしていました。うまく動作するようになったので、ようやく登録です。 サイトのアイコンを作ったりもしました。

goo RSS リーダーでうまく動かなかったのは、rssnmz.cgi の OpenSearch モードにバグがあったからでした。デバッグ後には通常の RSS リーダーでも RSS 2.0 モード、OpenSearch モードのどちらでも表示することができました。

rssnmz.cgi は元々 OpenSearch のような使い方を発想して作ろうとしていましたが、OpenSearch の方がよく考えられたシステムでした。(当り前か) また、普通の RSS フィード出力としても使えるとか、作っているうちに世界が広がってきたので、単純なプログラムの割には楽しめました。

MeCab 0.90 リリース2006年03月27日 01時44分08秒

MeCab 0.90 がリリースされました。

http://mecab.sourceforge.jp/

pltests でテストしただけですが、特に問題なく動作するようです。

Namazu for Windows 2.0.16 ダウンロード数とインストール数に大差あり2006年03月27日 09時42分08秒

3/12~3/27(本日)までの約2週間の
nmz2.0.16.001-win32.zip のアクセスログから次のようなことがわかり
ました。

[リクエストされたページ]
1. /public/nmz2.0.16.001-win32.zip           725
2. /PPMPackages/800/NKF.ppd                  193
3. /PPMPackages/800/index.html               187
4. /PPMPackages/800/File-MMagic.ppd          175
5. /PPMPackages/800/Text-Kakasi.ppd          173
6. /PPMPackages/800/x86/nkf.tar.gz           145
7. /PPMPackages/800/x86/Text-Kakasi.tar.gz   142 
8. /PPMPackages/800/x86/File-MMagic.tar.gz   139

リクエストされたページは、nmz2.0.16.001-win32.zip が 700 件ぐらい、
PPD は 170件ぐらいでした。


[ダウンロード数]
1. /public/nmz2.0.16.001-win32.zip           605
2. /PPMPackages/800/x86/nkf.tar.gz           145
3. /PPMPackages/800/x86/Text-Kakasi.tar.gz   142
4. /PPMPackages/800/x86/File-MMagic.tar.gz   139 
5. /public/nmz2.0.15.004-win32.zip            53
6. /PPMPackages/800/x86/Search-Namazu.tar.gz  19  

ダウンロード数は、nmz2.0.16.001-win32.zip が 600 件ぐらい、
PPD は 140件ぐらいでした。
7人に1人は nmz2.0.16.001-win32.zip のダウンロードの途中でやめ、
17人3人は PPM のインストールの途中で止めたということでしょうか。
Search-Namazu も 19件ダウンロードがありました。


[ブラウザ毎のセッションのドリルダウン]
1. Internet Explorer                         623      
2. Googlebot                                 417     
3. Mozilla Compatible Agent                  246   
4. Mozilla                                   181      
5. ppm                                       141    
6. msnbot                                     35
7. Opera                                      25

ppm から 140 件ぐらいアクセスがありますから、先の内容とあわせて
おそらく ppm-inst.bat でインストールを試みた回数は 140 件ぐらい
だろうと思われます。


[リファイラ]
1. (no referral)                           1,197
2. www.namazu.org/pipermail/namazu-win32-users-ja/2006-
March/001203.html
                                             410
3. www.namazu.org/pipermail/namazu-win32-users-ja/2006-
March/001198.html
                                              28
4. google.co.jp/search                        27
5. www.namazu.org/pipermail/namazu-users-en/2006-
March/000184.html
                                              24
6. namazu.asablo.jp/blog/                     16

namazu-win32-users-ja からは 410 件、namazu-users-en は 24 件でした。
先の内容から nmz2.0.16.001-win32.zip は 700 件ほどのリクエストが
あったので、260 件ほどは他(メーリングリストや、ブログとか)のサイト
からアクセスしたものと思われます。
namazu-win32-users-ja は MailMan のアーカイブからのアクセスですが、
www.namazu.org からリンクしているので、この数になっているのでしょう。

英語環境でインストールされた人はごくわずかだということですね。
(先の24件は MailMan のアーカイブからのアクセスですので、直接
namazu-users-en のメールからアクセスした数は含まれていません。)

nmz2.0.16.001-win32.zip をダウンロードした 600 件のうち、
PPD をインストールしたのが 140件ぐらいということは、ほとんど
ダウンロードだけしてインストールしなかったと考えるか、
PPM のインストールをしていないということでしょうかねぇ。

何にしても Windows 版の開発をやめてもいいかなと思うぐらいに
数としては随分と少ないようです。

nkf 2.0.6 チェック2006年03月28日 07時35分38秒

nkf 2.0.6 がリリースされました。そのため早速チェックしてみました。
nkf 2.0.6 の -e オプションは eucJP-ascii ベースとなっています。

そこで http://www.opengroup.or.jp/jvc/cde/appendix.html のマッピングとの比較を行いました。

とりあえず U+0080 から U+00FF までの範囲を確認したところ、eucJP-ascii では次の変換が行われるようです。


EUC-JP UNICODE
0xA1F1  U+00A2
0xA1F2  U+00A3
0xA1EF  U+00A5
0xA1F8  U+00A7
0xA1AF  U+00A8
0xA2CC  U+00AC
0xA1EB  U+00B0
0xA1DE  U+00B1
0xA1AD  U+00B4
0xA2F9  U+00B6
0xA1DF  U+00D7
0xA1E0  U+00F7

0x8FA2B1 U+00B8
0x8FA2B4 U+00AF
0x8FA2C2 U+00A1
0x8FA2C3 U+00A6
0x8FA2C4 U+00BF
0x8FA2EB U+00BA
0x8FA2EC U+00AA
0x8FA2ED U+00A9
0x8FA2EE U+00AE
0x8FA2F0 U+00A4
0x8FA9A1 U+00C6
0x8FA9AC U+00D8
0x8FA9B0 U+00DE
0x8FA9C1 U+00E6
0x8FA9C3 U+00F0
0x8FA9CC U+00F8
0x8FA9CE U+00DF
0x8FA9D0 U+00FE
0x8FAAA1 U+00C1
0x8FAAA2 U+00C0
0x8FAAA3 U+00C4
0x8FAAA4 U+00C2
0x8FAAA9 U+00C5
0x8FAAAA U+00C3
0x8FAAAE U+00C7
0x8FAAB1 U+00C9
0x8FAAB2 U+00C8
0x8FAAB3 U+00CB
0x8FAAB4 U+00CA
0x8FAABF U+00CD
0x8FAAC0 U+00CC
0x8FAAC1 U+00CF
0x8FAAC2 U+00CE
0x8FAAD0 U+00D1
0x8FAAD1 U+00D3
0x8FAAD2 U+00D2
0x8FAAD3 U+00D6
0x8FAAD4 U+00D4
0x8FAAD8 U+00D5
0x8FAAE2 U+00DA
0x8FAAE3 U+00D9
0x8FAAE4 U+00DC
0x8FAAE5 U+00DB
0x8FAAF2 U+00DD
0x8FABA1 U+00E1
0x8FABA2 U+00E0
0x8FABA3 U+00E4
0x8FABA4 U+00E2
0x8FABA9 U+00E5
0x8FABAA U+00E3
0x8FABAE U+00E7
0x8FABB1 U+00E9
0x8FABB2 U+00E8
0x8FABB3 U+00EB
0x8FABB4 U+00EA
0x8FABBF U+00ED
0x8FABC0 U+00EC
0x8FABC1 U+00EF
0x8FABC2 U+00EE
0x8FABD0 U+00F1
0x8FABD1 U+00F3
0x8FABD2 U+00F2
0x8FABD3 U+00F6
0x8FABD4 U+00F4
0x8FABD8 U+00F5
0x8FABE2 U+00FA
0x8FABE3 U+00F9
0x8FABE4 U+00FC
0x8FABE5 U+00FB
0x8FABF2 U+00FD
0x8FABF3 U+00FF

nkf 2.0.6 では、

EUC-JP UNICODE
0xA1F1 : U+00A2
0xA1F2 : U+00A3
0xA1EF : U+00A5
0xA1F8 : U+00A7
0xA1AF : U+00A8
0xA2CC : U+00AC
0xA1EB : U+00B0
0xA1DE : U+00B1
0xA1AD : U+00B4
0xA2F9 : U+00B6
0xA1DF : U+00D7
0xA1E0 : U+00F7

0xFCFC : U+00A6 0xA1B1 : U+00AF 0xA1A4 : U+00B8

となり、3バイト文字(補助漢字)への変換が行われないのと、U+00A6, U+00AF, U+00B8 が追加されています。(eucJP-ascii との非互換)
この範囲の値は、UNICODE -> EUC-JP -> UNICODE 変換で元の値に戻ります。
また、--fb-xxx で削除されるデータを拾うことができるはずでしたが、うまく機能していないようです。おそらくバグでしょう。

nkf 2.0.6 の --fb-* オプション2006年03月28日 08時06分33秒

nkf 2.0.6 で、UNCODE U+0080 ~ U+00FF までの値を -W16e --fb-subchar で変換すると、
U+00A1
U+00A4
U+00A9
U+00AA
U+00AE
U+00BA
U+00BF
U+00C0
U+00C1
U+00C2
U+00C3
U+00C4
U+00C5
U+00C6
U+00C7
U+00C8
U+00C9
U+00CA
U+00CB
U+00CC
U+00CD
U+00CE
U+00CF
U+00D1
U+00D2
U+00D3
U+00D4
U+00D5
U+00D6
U+00D8
U+00D9
U+00DA
U+00DB
U+00DC
U+00DD
U+00DE
U+00DF
U+00E0
U+00E1
U+00E2
U+00E3
U+00E4
U+00E5
U+00E6
U+00E7
U+00E8
U+00E9
U+00EA
U+00EB
U+00EC
U+00ED
U+00EE
U+00EF
U+00F0
U+00F1
U+00F2
U+00F3
U+00F4
U+00F5
U+00F6
U+00F8
U+00F9
U+00FA
U+00FB
U+00FC
U+00FD
U+00FE
U+00FF
が欠落します。これは欠落してはいけないのではありませんでしたか?
--fb-subchar と --fb-skip との違いは以下のようになります。
0a1,33
< U+0080
< U+0081
< U+0082
< U+0083
< U+0084
< U+0085
< U+0086
< U+0087
< U+0088
< U+0089
< U+008A
< U+008B
< U+008C
< U+008D
< U+008E
< U+008F
< U+0090
< U+0091
< U+0092
< U+0093
< U+0094
< U+0095
< U+0096
< U+0097
< U+0098
< U+0099
< U+009A
< U+009B
< U+009C
< U+009D
< U+009E
< U+009F
< U+00A0
4a38,39
< U+00AB
< U+00AD
5a41,45
< U+00B2
< U+00B3
< U+00B5
< U+00B7
< U+00B9
6a47,50
< U+00BB
< U+00BC
< U+00BD
< U+00BE
23a68
< U+00D0

nkf 2.0.6 リリース2006年03月28日 08時12分41秒

nkf 2.0.6 の入手先を書き忘れていました。ここから取得できます。

http://prdownloads.sourceforge.jp/nkf/19481/nkf206a.tar.gz

MD5 : f4b07268b238ac85551e2777fa2c3836

SHA1: be81a8e3322b0c2567a1c38be9f0ba06b4431152

nkf206.tar.gz が最初にリリースされましたが、アーカイブ内の各ファイルのパーミッションがすべて 0777 になっていたので、nkf206a.tar.gz が作られました。 本質的には同じものです。

Re: NKF の UNICODE -> EUC-JP 変換における問題2006年03月28日 08時29分18秒

NKF における UNICODE マッピングの問題
UNICODE -> EUC-JP に変換した時に次のような変換が行われます。
nkf 2.0.6 で次のように修正されました。

                      NKF 2.0.4     NKF 2.0.5    NKF 2.0.6.
I    (U+0130)   (0x00)    削除     削除
' 
y   (U+00fd)   (0xc0)    削除     削除
-D  (U+00d0)   (0xc0)    削除     削除
_
E   (U+0114)   (0x00)    削除     削除
_
e   (U+0115)   @ (0x40)      削除     削除
'
g   (U+0123)   (0xc0)    削除     削除
'
O   (U+01fe)   (0xc0)    削除     削除
^
o   (U+01ff)   (0xc0)    削除     削除

\   (U+00a5)   (0xc0)    削除     (0xA1EF)
(c) (U+00a9)   (0x00)    (0x00)        削除
(R) (U+00ae)   (0x80)    削除     削除

* ここでテストした文字以外で不具合が生じる可能性はあります。

NKF 2.0.4 では誤変換が多く、特に 0x00 に変換されるのものは C 言語で取り扱う際に不都合が生じます。
NKF 2.0.5 ではほぼ理想的に変換できない文字が削除されていますが、(c)だけは例外で 0x00 に変換されてしまいます。
NKF 2.0.6 では、理想的にすべて削除されています。U+00A5 が 0xA1EF に変換されるのも好ましい変換です。

この部分に関しては、NKF 2.0.6 で問題が解決したので、NKF 2.0.6 を推奨としたいところですが、--fb-* でバグがあるようですので、推奨は先送りにしようかと思います。

NKF の PPM を更新し、2.06 にバージョンアップしました2006年03月30日 01時15分56秒

NKF 2.0.6 がリリースされましたので、NKF の PPM ファイルを更新しました。

http://www.akaneiro.jp/PPMPackages/zips/8xx-builds-only/Windows/

にソースを含めてまとめた zip ファイルを置きました。

ActivePerl ビルド 800番台 専用です。500, 600 番台では使用できませんのでご注意ください。

なお、次の手順で NKF のバージョンアップが可能です。

C:\>ppm
ppm> uninstall NKF
ppm> install http://www.akaneiro.jp/PPMPackages/800/NKF.ppd -force
ppm> quit
  • ライセンスはソースのライセンスに従います。
  • 予告なく PPM, zip の中身は更新します。