カラオケの全文検索を有志で作る方法

 タケルンバ卿がカラオケの検索性の弱さを嘆いていた

 システム屋の自分はこういうとき、どんな顔すればいいのかわからないの風なシステムを作ることができるだろうかということを考えるのが職業病、というかもはや不治の病なのだけど、その病状をここに記しておこう。

データベースを作る

 曲名、歌手名を登録したデータベースを設計するのは容易い。今風のシステムにするために曲にタグを付けれるように設計することもできることだろう。ボーカロイドタグとか東方タグとかあったら便利なんじゃないか。

 歌詞も登録できるようにすることも容易い。たとえ10万件あったとしても、歌詞が400字程度だとすれば、UTF-8で格納*1しても1件1600byte、たったの160MByteですむ。今時のサーバなら余裕で全データをメモリ上にキャッシュできるレベル。*2

 ただし、歌詞に特定の言葉を含むものを探そうとして、SQL*3でのLIKE検索みたいなことをしても遅いし、誤検出も多くて使い物にならない。ググレカス時代を生きている僕らにはもっと高度な全文検索エンジンじゃないと満足できないよね。*4

 んで、Google製ではないけども、全文検索エンジンというものはある。興味がある人はwikipedia全文検索の項でも参考にするか、ググれ。技術としては割と確立されていて、フリーの全文検索エンジンも多々ある。詳しい話は割愛するけど、こいつを入れれば相応に検索ができるようになる。*5

赤外線が扱える端末があるじゃないか

 デンモクのような専用端末じゃなくても、携帯電話で赤外線通信してリモコンの代わりにできるじゃないか!

 そしてコイツは通信機器を兼ねている…。インターネット上でカラオケ検索サービスを提供しておいて、ネットワークを使って携帯電話で操作するってシナリオだ。つまり、メーカーやカラオケ店が検索エンジンを作ってくれなくても、僕らで作っちゃうことってできるよね、という話。

 なければ作ればいいじゃない。それがプログラマの合言葉。

ネックは著作権

 歌詞そのものを出力するようなサービスじゃないので、検索して特定の語が含まれている曲を探し出すサービス自体は著作権的には問題にはならない。著作物を検索する権利みたいなものはないわけで、この点はセーフだ。

 ただし、膨大な歌詞データをどうやって登録するの?という問題があって、wikipedia式にみんなの持ち寄りで登録、編集できるようにしたとしたなら、登録編集画面では歌詞を表示せざるを得ない。この部分が著作権的に怪しい。まぁ、メーカーがやるなら、その辺の権利の対処もできるんだろうけどね。

GAEとか

 GAE(Google App Engine)でサービス提供するのもいいかもしれないね。まぁGAEはGoogle製だけど全文検索機能がないようなので、ちょっと残念だけど。

 同じくGoogleが手がけるAndroid携帯でクライアント端末が動くようにしたら面白いかもしれないね。

で、作るの?

 作りません。

 企業からそういうシステム設計してくれと言われたら仕事として請けるけどね。職業病として、こういうシステム構成だったら―みたいなことは日常的に考えてて、それを書きなぐっているだけ。だからあんまりやる気がない。このネタをやってみたいという人は好きに実装すればいいと思うよ。ネタをぱくったとか言わないし、むしろ、自分で作る気のないネタは、聞いて作ってみようと思う人がいて、実用化したら自分が使えてラッキーぐらいに考えている。

 悪く言えば、居酒屋で野球の監督に文句つけて俺ならこうやるとか、政治家に文句付けて俺ならこうやるとか言ってる人と同じ。いや、だから最初に職業病だって言ったじゃないか。

*1:日本語は通常3byteだが、一部の文字が4byteになる。Unicodeは21bitなのでUTF-8形式でも最大4byteで済む。

*2:業務システムだと億単位のデータとかわりと普通にある。人力じゃとても無理なことも機会がやるとあっという間だねぇ…

*3:SQLというのはデータベースを操作するためのある種のプログラム言語

*4:シソーラス(類語)検索とかもやってくれないと表記のブレでみつからない!なんてことになるし。

*5:個人的にはそろそろ、業務システムも全文検索エンジン入れて当たり前の時代が来てもいいころだと思うんだけど…。