階層的分類が破綻するのは、最初に決めた分類方法に当てはまらないものが現れた時に分類方法を更新すべきなのにそれをやらないことが原因なのだが、 「だから階層的分類は全て破綻する、やるべきではない」というScrapboxの思想はちょっと行きすぎてて、 素朴な「容器のメタファー」は多くの人にとってとっつきやすいし、kintoneが「スペースなんてなくてすべての投稿はフラットです」ってなるのが正しいとは思えない。 容器のメタファーが壊れた時に整理し直すことがシステム的に支援されるなら、階層的分類をやっても問題ないのでは。

https://twitter.com/nishio/status/1334051841680699392

  • 先日の考察からさらに発展して「情報を整理し直すことの支援」が必要なのではという気持ちになってきたので、それを書き連ねてみる。
  • 「階層的分類はいずれ破綻する」の話、それが真であったとしても「階層的分類を一切やってはいけない」は真ではない、ここに論理的な飛躍がある
  • 階層的分類が破綻するのは、大きく2つの原因があった。事前に想定した分類方法ではうまく分類できないものが現れることと、複数人で使う時に分類方法が食い違うこと。
  • 前者も「過去の分類方法と新しい分類方法の食い違い」と捉えれば、これは「分類方法が一通りしか持てないシステムの問題」となる
  • 分類方法が一通りしか持てないから、うまく当てはまらない情報が出てきた時に「過去の分類方法を捨てて、新しい分類方法で分類し直す」が必要になり、それをほとんどの人は面倒だと思って古い分類方法のまま無理やり情報を入れる
  • 「分類し直すこと」のコストが高いから「分類し直し」が行われない。ならば分類し直しが容易であるような設計や、分類し直しを支援するシステムがあれば良いのでは?
  • たとえば「どこに入れたら良いかわからないもの」が現れた時に、多くの場合「それでもすぐどこかに入れなきゃいけない」というプレッシャーをユーザが感じているために適当な場所に入れられてしまう。それを防ぐためには「どこに入れたら良いかわからないものを入れる場所」をあらかじめ用意すれば良い
    • 漫画喫茶などでよく行われている運用だ。分類を無視して適当なところに入れられるくらいなら「分類されてないもの」というくくりに入れた方が良い。
  • 次に「分類し直し」によって何も破壊されないことの保証が必要。フォルダとファイルによる素朴な階層的分類がダメなのは整理し直しで「別の場所に動かす」と「元の場所に見つからなくなる」ところ。ここをケアしたシステムにすれば良い。
  • たとえば「タグ」を仮想的なフォルダにして、その「タグ」がついたものをその中に入れて見せる容器のメタファーのシステムなど。
  • ファイルXをフォルダAからフォルダBに動かすと「AにあったはずのXがなくなった!」となるが、ファイルXにタグAがついてる状態でタグBを追加しても「仮想的にAに入ってる状態」は失われない。この保証があることで安心してタグの付与ができる。
  • ここまでにあげた二つの道具では全然足りない。たとえばある人がXをAに入れて、別の人が「これがAに入ってるのは誤りだ」とBに移動した場合、XがAからなくなるとAにあると思ってる人が迷子になり、なくならないなら「Aにあるのは誤り」という意図の表現ができない。
  • 一つの解決方法はAに「Aから削除もしくは移動されたもの」が入る「ゴミ箱」をつけること。もう一つの解決方法は「過去にAにあったもの」に対する検索。
  • 階層的分類で事前に適切な分類方法を決めるのが困難であるのと同様に、タグ付けにおいて事前に適切なタグ付けの基準を決めるのも困難。その結果、一つのタグが100のページについてて一覧困難になる事態とかが起こる。
  • 「すべての単語Xの出現をタグにしてしまうと、Xでの検索結果と変わらなくなるからそういうことをやってはいけない」というの、考えれば当然なのだが、すべてのユーザがそれを理解して使うかというと当然そんなことはない
  • ソフトウェア開発に例えると、何が何を参照するかを事前に適切に設計することは困難ということ。ならばどうするかというと「不都合が明らかになった時点でリファクタリングする」ということになる。リファクタリングは「今動いている機能を壊さないように書き換える」ことだ。