« 形態素解析器IgoのRuby版を作った | トップページ | RubyGemsの命名規約 »

2010年12月16日 (木)

igo-rubyを作った経緯

Ruby昨日当blogでも公開したigo-ruby
その開発(というか移植作業)に至る経緯や、強み、弱みなんかをさらしてみる。

経緯

TwitterでIgoのPython版を知ったのが12月1日。
その元になっているIgoを調べてみると、解析結果がほぼMeCab互換のJava(とCommon Lisp)で実装された形態素解析器であることが分かった。

MeCabについては以前も取り上げているけど、例えばRubyなんかから気軽と使おうとすると特にWindows環境ではバインディングがインストールできなかったりしてちょっとメンドい。
(それでもMeCabをWindowsからラクに使いたいぜ、という方はこちらをどうぞ。)

Windows環境じゃなくても、例えばネット上の、自前じゃない環境(レンタルサーバとかVPSとか)で動かそうとすると、まぁやっぱりメンドくさいと思う。

その点、IgoはJavaオンリーで動作するので、JavaVMが動くところならどこでも動く(はず)。ヒジョーにポータビリティが高い。

イイとこに目をつけてんなぁ、と。

再度、igo-pythonに目を向けると、(あくまでも主観だけど)igo-python自体はIgoの解析用辞書をできるだけそのまま使用するように移植したようで、最小限の実装で「まずはpythonで動作する」ことを優先しているように見える。
(解析用辞書の生成機能も今後実装する予定があるようです。)

やはり、イイとこに目をつけてんなぁ、と。

この調子ならソッコーでRuby実装も出るはず!!とは思ったんだけど、igo-pythonのソースを眺めているうちに「俺でもなんとかなるかも?」と思ったのが運の尽き
翌日くらいからJava版とPython版のソースを横目に、実際に動かしながら(おかげで自宅のPCにEclipseとPython入れちゃったヨ)Rubyへの移植を進め、12月11日に初版をリリースした。

…実はアルゴリズムをろくに理解しておらず…データ構造もよく分かってなくて結構苦戦してたり…。

強み

上にも書いたけど、Igoの強みはJavaオンリーで動くところ。辞書さえあればigo-pythonはPythonのみで、igo-rubyはRubyのみで動作する。
お気に入りの(あるいは使い慣れた)言語以外の仕組みを導入しなくてイイというのは強い。強すぎる。

日常的にプログラミングを行う職業プログラマでさえ…あるいはそれ故かもしれないけど、環境を準備するという行為はけっこう壁が高い。そういう本質的ではない部分で手を煩わせたくないんである。情報過多の時代にあって、自分の守備範囲外の情報には触れたくないんである。
(これはこれで問題ではあるんだけど、ここでは触れません。)

よろしい。

igo-rubyは(辞書さえ準備すれば)あなたの環境で即座に動作する。

弱み

これはigo-rubyだけの弱みだけど、Igoの辞書ファイルに依存している、という点。辞書ファイルのフォーマットが変わってしまえば、igo-pythonは動作しない。

少なくとも、現在のIgoの最新版であるIgo 0.4.2で生成した辞書ファイルでは動作しているように見えるので、将来的に(辞書ファイルのフォーマット変更によって)igo-rubyが動作しなくなった場合は、ひとまずこの0.4.2で辞書ファイルを生成することにより対応できると思う。

|

« 形態素解析器IgoのRuby版を作った | トップページ | RubyGemsの命名規約 »

Ruby」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/16742/50310619

この記事へのトラックバック一覧です: igo-rubyを作った経緯:

« 形態素解析器IgoのRuby版を作った | トップページ | RubyGemsの命名規約 »