2009年8月アーカイブ

みんな「白いクスリ」が大好きだよなぁ

ニコニコ動画における動画削除について - ピアプロ開発者ブログ
動画削除依頼について‐ニコニコニュース

問題の動画は、「白いクスリ」でよつべばそれっぽく見つかるわけだけど、なんというかみんな「白いクスリ」が大好きだよなぁ。薬中的な意味じゃなくて、議論の対象として。Twitterでもスラドでもはてブでも2ちゃんねるでも、あれはあーだとかみんな自分の意見書いてるわけですよ。

そんな重々しい話ばっかのリアルな世界は複雑すぎて疲れちゃう。

そんな議論する暇があるなら、曲を聴けって。おまいら、ミクをなんだと思ってんだ。

Namazuを改造した・・・けど疲れた

某ログの検索のために Namazu を使ってるけど、こいつの検索精度がいまいち。ってことで、分かち書きのためのエンジンの入れ替え作業をしたわけだけど、その後かなりぐだぐだになってしまったので、その成り行きをつらつらと。

Namazu は主に日本語を対象にした全文検索システムで、PDFも検索対象にすることができるようになっていたり、(インデックス作成が遅いものの)高速に検索できるあたりが特徴。で、英語の場合は単語がスペースで区切られてるんで境目が明らかだけど、日本語の場合はそうじゃないんで、日本語の全文検索をするためには文章を単語に分ける「分かち書き」という処理が必要になる。Namazu は、この分かち書きの処理に、Kakasi, ChaSen, MeCab から選べるようになっている。Kakasi は純粋に分かち書き用のエンジンだけど、ChaSen/MeCab は品詞推定やらまで行う形態素解析のエンジンですな。で、Namazu はデフォでは Kakasi を使っていて、かつたいていの人は Kakasi を使っていると言うことすら知らなかったりして、でKakasi による分かち書きの精度がいまいちだったりすることもあったりで、結果的に Namazu の検索精度にまで響いてしまうと。

というわけで、Namazu が使う分かち書きエンジンを Kakasi から MeCab へ入れ替えてみた。入れ替え作業は「Namazu MeCab」とかでググれば見つかるし、ほとんど tar.gz 解凍して ./configure && make && make install だけなんで省略。。唯一、/usr/lib と /usr/local/lib の違いで *.so な sharedライブラリの依存関係で実行時エラーになったけど、適当に cd /usr/lib; ln -s /usr/local/lib/libkakasi.so.2.1.0 とかして手抜き対処した。本当は etc/ld.so.conf あたりに追記するのがいいんだろうけど。

で、入れ替えてみた感想が、うーんなんかいまいち。確かに動詞や複合語なんかで精度が上がってるんだけど、ひらがなだけの文章に弱すぎ。特に、最近のネット用語やらネット的なくだけた表現(「2ちゃん語」といった方がニュアンス近いかも)がぼろぼろ。実は、Kakasi はひらがなだけの箇所は、頑張って分かち書きするようなことはせずに、N-gram方式だけで対処しているとかいうこともあって、結果的に Kakasi も MeCab も一長一短。というのもあって、方針変更。エンジンを排他的に使うんじゃなくて、複数エンジン使って、より検索にヒットしやすくすればいいんじゃね?と。もともとの検索対象がせいぜい100MBくらいのテキストなので、検索の適合率は下がってもいいや、再現率が上がればいいやという割り切りで。

で、早速この複数エンジンによる分かち書きを導入すべく Namazu の改造を始めたわけだけど・・・ここが意外にむずかった。というより、はまった。。

Namazu は、インデックスを作る "mknmz" の Perl スクリプトと、検索を行う "namazu" (or namazu.cgi) のバイナリのと大きく2種類に分かれている。で、今対象にするのは分かち書きなので、"mknmz" の中のこいつがさらに使っている外部スクリプトの "wakati.pl" (/usr/local/share/namazu/pl) で、特にその中の "wakatize_japanese_sub" サブルーティンです。ぱっと見た感じ "return @tmp" してる @tmp 配列に2つのエンジンの分かち書き結果を入れればいいように見えるけど・・・そう思いこんで改造作業にはまった。結論から言うと、もともと $$content は \x7f を特別な区切り文字として使った構造化された変数になっていて、この構造を意識した結果を @tmp に入れていないとうまく動いてくれない。どうも重み付きでファイル名やらを特別処理するために使ってる模様。気づいてしまえばたいしたことないけど、そんな構造だと言うことに気づくまでにふて寝含め1週間以上かかってしまいました。。できたパッチ「namazu_kakasi_mecab.diff」

今回の改造作業を通じて mknmz のソースを結構読んだけど、うーんなんかこう、ムリに拡張したような跡が結構あったなぁと。euc-jp じゃないと処理できないようなとこもあったりして、これをさらに拡張するのは厳しいだろうなぁと。10年くらい前は、全文検索といえば Namazu みたいな感じだったけど、ここ最近はコミュニティもあまり活発じゃなさそうだし、もはやこれまでなのかなぁと。

やっぱ時代はもうSenna?でもMySQLコンパイルするとかめんどいやん、他の全文検索のいいのないの?

デジタル家電はしょせんは家電だ

デジタル家電という便利な言葉がある。もともとは、家電といえば電気回路を使った電気製品が主だったが、やがて電子回路やデジタル回路を使ってさらにはマイコン乗せてソフトウェア制御するようになってきた。従来はほとんど使ってなかったデジタル技術をふんだんに使った家電という意味で、従来の家電とは違うものだというのを強調するためによく使われる。まぁ細かい話をすれば、今時デジタル技術の入っていない家電なんて皆無に等しい。マイコンジャーなんて言われたのは今や昔、洗濯機・掃除機はメニューとかのインターフェースがもろデジタルだし、冷蔵庫・エアコンはソフトウェア制御のVVVF使ってる(ハズだ)し、てな時代。・・・ちなみに、「マイコンジャー」は、マイコンの入ったジャーを指すのではなく、加熱方法にヒーターを使っていてかつその制御をマイコンでやっているものを指そうな。「マイコン制御のIHジャー」とかいうと逆に混乱するんだろうな。そんな細かい話はあるものの、デジタル家電といった場合は通常デジタル技術をふんだんに使ったものを指していて、具体的にはケータイ・デジタルテレビ・レコーダ・デジカメ・オーディオプレーヤ・ゲーム機あたりを指す。

で、家電であるのにもかかわらずなぜデジタル家電なんて特別な名前で呼ぶのかというと、デジタル技術をふんだんに使っているからであり、それはプログラマブルデバイスに依存している度合いが強いからと言うことでもあり、それはソフトウェアの占める割合が大きいからという意味につながる。そうなんだよ、開発の半分をソフトウェアが占めていてソースが1000万行を超えてるらしいんだよ。・・・あれ?1000万?そんなに少なかったっけ?・・・まぁいいや。それだけのソフトウェアが作られればそりゃ開発大変でバグもたくさん出るわけで、バグをたたきつつもすべてのバグ検証が終わらず見切り発車で製品を発売することさえあるらしいですよ。・・・あれ?見切り発車されてない製品ってあったっけ?・・・まぁいいや。それだけの規模のソフトウェアを開発してると、昔ながらの組み込みソフトウェア開発の気分じゃとうてい乗り切れないわけで、組織立った開発体制や再利用可能なモジュール設計・ソフトウェアの共通化なんかが求める。

とはいえ、専用に作り込まれたハードウェアと限られた開発期間ともなれば、組み込み丸出しなソフトウェアのコードも必要で、理由もわからないおまじないコードでハードのバグに対応したり、足りないメモリを何とかするためにあーだこーだやったりという部分も必要になる。「DRAMちょっと増やせばこんなの問題にならないのに・・・」とか思ってはいけない、開発にもスピードが求められる昨今はソフトウェアの詳細設計をやってる頃にはすでにハードのスペックがすべて決まっていたりするで、後から言ってなんとかなるようなものじゃない。いくらソフトウェア開発が「デジタル家電級」になっていたとしても、求められているのは通常の「家電級」の組み込みソフトウェア開発なのだ。ソフトウェア開発が「デジタル家電級」になってるのはあくまで開発の都合でしかない。

というか、デジタル家電なんて言葉が一般用語になっているのがそもそもおかしい。家電の内部がデジタル化してるのは開発の都合でしかなく、一般利用者が家電の内部の変化を知りたいわけがないし知る必要もないはず。

というわけで、デジタル家電なんて言葉は、プログラマブルなデバイスを使いソフトウェア制御されることを期待して設計・開発・生産されたハードウェア上にてきちんと動くソフトウェアを短期間に完成させることが求められているもののそんな無茶いうなボケーと言う他称「組み込みソフトウェア」プログラマの反論のための言葉であり、決して「今すぐほしいデジタル家電」とかいうお題でお店が高額商品を買わすための方便に使うようなものじゃないと思うんだ。

「テレビ」という言葉の持つ意味

定義とかはまぁ辞書見るとかペディるとかすればいいとして、私個人的にはどう考えているのかというのを書こうかと。大きく3つの意味に分かれると思ってる。

1つめ、「テレビ番組」の略。主にテレビ放送で放映することを目的として作られる番組。最近でこそ、後でDVDで売るとかスペシャル版を映画化するとかのメディアミックス路線が広まっているけど、特にバラエティ番組は今でもテレビ放送のためだけに使うのが多いように思う。

2つめ、「テレビ放送」の略。もともとの「テレビジョン」はこの意味だったはず。変調してアンテナから電波として飛ばし、アンテナで受信して受信機で復調する、この一連のシステム全体のこと。狭い意味では受信機のみ、広い意味では変調する手前の送るための映像を切り貼りしたりするシステムも含むと思う。今はやりのデジタル化のメインはここ。

3つめ、ディスプレイ。主にテレビ放送を映すためのディスプレイで、そのために受信機を内蔵していたりする。液晶だプラズマだとかいってるのはこの部分で、本質的にはデジタル放送とは関係がない。

もっと細かく分けられたりもするし3つがそれぞれ影響し合っていたりもするけど、大まかにはこの3つなのかなぁと個人的には思っている。

・・・で、何を書きたかったんだったっけ。。番組を見たいだけなのに、デジタル化という放送の都合で、受信機内蔵したディスプレイまで買い換えないという流れになっていて、それに対し反発する人が出てくるのはまぁ当然だよなぁ、とかそんなことを書きたかっただけなのだと思う。

このアーカイブについて

このページには、2009年8月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年7月です。

次のアーカイブは2009年9月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 7.9.0