このブログは、自分で悩んでいることをつらつらと書いたものになるので、まとまりのないものになります。読んでしまってから後悔しないように、あらかじめ断っておきます。
悩んでいるのは製品のカテゴリー分けです。特に製品というよりも、各メーカーが提供している学術資料であるとかをまとめて整理するためのカテゴリー分けです。バイオの買物.comの比較表のところで使うものです。
何を悩んでいるかを解説できるほどに頭が整理できている訳ではないので、まずはバイオの製品カテゴリー分けがうまくいっていない例を紹介しています。
うまくいっていないカテゴリー分け:BioCompare
BioCompareは多数のメーカーの猛烈な数の製品を階層的にカテゴリー分けしています。しかもカテゴリーはかなり細かく分断しています。例えばPCR用の耐熱性DNA polymeraseのところは15のサブカテゴリーに分かれています。
しかもTaq DNA PolymeraseだけではNativeとRecombinant、さらにdNTPがキットに含まれているものという3つのサブカテゴリーにわかります。いまの例なんて特にそうなんですが、カテゴリーの重なりや独立性にはこだわっていないようで、目的の製品がどこにあるのか、大いに悩んでしまうような分類になっています。
ユーザの立場から見たらすごくわかりにくいカテゴリー分けですが、実際にデータを入力する立場から考えるとその気持ちは非常に良くわかります。単純な話、階層的にかつ独立性のあるカテゴリー分けというのはほとんど無理な話で、必ず訳が分からなくなるのです。そしていったん訳が分からなくなったら、もう後はずるずると易きに流れて、「えい、どこかにとりあえずしまっておけ」という感じのカテゴリー分けになるのです。
どうしてカテゴリー分けが狂うのか
階層的なカテゴリー分けをしているのは、Biocompareもそうですが、ほとんどのメーカーのウェブサイトがそうです。コスモバイオのようにカテゴリー分けをそもそもあきらめて、検索だけ提供すればいいやと開き直っているメーカーも一部にはありますが、たいていのメーカーはとりあえず製品を階層的にカテゴリー分けします。
インビトロジェンなんかは合併に次ぐ合併をしたせいもあり、全製品を統合してカテゴリー分けするのではなく、とりあえず合併した会社をそれぞれ別々のカテゴリーに分けています。
僕がいたロシュも、リアルタイムPCR試薬・機器とその他の試薬が別々のグループに分かれていたので、かなり重なりがあるにもかかわらず、最も上流で枝分かれをしています。
このようにユーザの立場ではなくメーカーの都合でカテゴリー分けをすることによって、カテゴリー分けが狂ってしまうというケースが一つにあります。
もう一つには階層的なカテゴリー分けの限界があります。階層的なカテゴリー分けは、基本的には一つの属性を基準にして、ユーザに複数のものから一つの道を選択させるものです。ですから複数の属性があり、複数の階層にまたがる製品はどっちのカテゴリーに入れることもできず、悩んでしまうのです。例えばBioCompareの耐熱性DNA polymeraseの例では、Pfu DNA PolymeraseとかTgo DNA Polymeraseの他にHigh Fidelity Polymerasesというカテゴリーがありますが、PfuもTgoもHigh Fidelity Polymeraseの一種なので、カテゴリーがおかしくなります。さらにHot StartのPfu Polymeraseも発売されていますが、これはいったいどっちに入ってくるのか、さっぱりわかりません。
それでもBioCompareが階層的なカテゴリー分けをするのは、メーカーの情報を割とそのまま載せているからだと思います。メーカーは印刷物のカタログを作る関係で、必ず階層的なカテゴリー分けをします。その階層化されたカタログをメーカーがBioCompareに渡して、「これを掲載して」と言っている訳ですから、BioCompareも階層的にカテゴリーに突っ込むのが作業的には楽なのでしょう。ユーザにとってはわかりにくくても。
バイオの買物.comの試み
バイオの買物.comでは、BioCompareのようにカテゴリー分けの問題をテキトウに済ますのではなく、WebとかDesktopサーチで使われているようなコンセプトを応用していこうと思っています。BioCompareの製品比較表のカテゴリー分けは意識的に細かくせず、大雑把なところでとどめています。そこからさらに絞り込むためには、カテゴリー分けに頼るのではなく、メタデータ(製品スペック)による絞り込み検索を実行するようにしています。
そしてこれに加えて、そろそろダグというメタデータもつけようと思います。
製品スペック的なメタデータは、ある程度限定された範囲で説明できる機能について、特に数字を比較するときなどに役立ちます。例えばPCRで何キロベース伸びるとか、プラスミドDNAがどれだけ回収できるのかです。でも一方で、非常に広がりがあるものについては弱いです。例えばトランスフェクションが成功した細胞はどれか。この場合は何千という細胞株をスペックに用意するのは大変ですし、そもそも有無だけで抽出する訳ですから、数字の比較はしません。学術資料がどの分野の実験について書かれているか、というのも同様です。ノーザンとかサザン、in situハイブリダイゼーションというのをそれぞれ別々のスペックにしていたらとても大変です。
ということで、取り扱いメタデータによって、スペック的に取り扱うかタグ的に取り扱うかを選べるようにしていこうと思います。
その一方で、いろいろな手法が混在してしまってユーザが混乱してしまわないように、いろいろ工夫しないといけません。これもチャレンジですね。
Railsのacts-as-taggable-onがなかなか良さそうなので、これを使っています。