I spent months building comparison tables before I understood that my database was lying to me.

The interface looked fine. Clean rows, neat checkmarks, red X marks where a tool fell short. Visitors scrolled through them and occasionally clicked. But underneath the surface, the schema was quietly corrupting every conclusion. I had built a beautiful UI on top of bad data.

Boolean(真偽値)の罠

比較ページは通常、分かりやすいパターンから始まる。行を機能、列を製品とし、すべてのセルにBoolean(真偽値)を格納するグリッドを作成する。True(真)はツールがその機能を持っていることを意味し、False(偽)は持っていないことを意味する。しばらくの間、これは秩序があるように感じられる。しかし、2つのプロジェクト管理ツールや、3つのクラウドデータベース、あるいは4つのAPIゲートウェイを比較しようとすると、そのグリッドは反旗を翻し始める。

Booleanのセルには、ニュアンスを持たせることができない。セルがFalseを示しているとき、それは全く異なる5つの意味を持ち得る。ツールに本当にその機能が欠けているのかもしれない。あるいは、異なる仕組みによって同じ問題を解決しているのかもしれない。機能自体は存在するが、エンタープライズ向けの有料プランに限定されているのかもしれない。気づかなかっただけのプラグインが必要なのかもしれない。あるいは、単に検証を忘れており、その赤い「×」は自分自身の不確実性を埋めるためのプレースホルダーに過ぎないのかもしれない。

これが重要なのは、ユーザーが高価な意思決定を行うために、比較グリッドを信頼しているからだ。CLIベースのツールに対して「リアルタイムのコラボレーション機能なし」とマークする場合、それは「ライブカーソル共有機能がない」ことを意味しているのかもしれない。しかし、そのツールは、ブランチベースのワークフローやレビューキューを使用することで、全く同じ結果を実現している可能性がある。それをFalseとマークすることは、設計上の選択を「欠陥」へと平坦化してしまうことだ。これを20もの機能に対して行えば、それは2つのツールを比較したことにはならない。どちらか一方が「壊れている」と宣言したに過ぎないのだ。

また、Booleanのスキーマは、ユーザーのニーズではなく、ベンダーの語彙で考えるようにあなたを仕向けてしまう。もし行の名前をカテゴリーリーダーから借りているなら、NotionがそれらをWorkspacesと呼んでいるために、すべての競合他社がWorkspacesを持っているかどうかを問うてしまうことになる。別のツールはそれをProjectsと呼ぶ。3つ目のツールには専用のコンテナすら存在しないが、個別のファイルに権限を設定することで同じ隔離を実現しているかもしれない。行の名前がすべての製品をリーダーのメンタルモデルに押し込めてしまう。これは市場の巨人に都合が良く、他のすべての人にとっては不公平なことだ。

ステータスを表すためのより良い語彙

解決策は、データ型そのものから始まる。Booleanの保存をやめることだ。明示的な語彙を持つステータスフィールドを保存するのだ。

次の6つの状態を検討してみてほしい。

Full は、ツールが回避策や追加購入なしでそのタスクをこなせることを意味する。

Partial は、その一部をこなせるか、あるいは何か複雑な設定を行った後にのみこなせることを意味する。多くの比較表の不正確さは、ここに隠れている。暗号化を提供していても、それが保存時(at rest)のみであるようなツールは、FullではなくPartialとすべきだ。

Different Model は、問題は解決されているが、カテゴリーリーダーと同じ方法ではないことを意味する。ブランチとレビューを備えたCLIツールはここに含まれる。単一のプールされた接続の代わりにリードレプリカを使用するデータベースも同様だ。この状態は、競合他社の模倣をしていないことを罰するのではなく、製品設計の知性を尊重するものとなる。

Not Applicable は、概念そのものがその種のツールには当てはまらないことを意味する。サーバーレス関数プラットフォームは、仮想マシンのような永続的なローカルストレージを必要としない。そこに無理やりFalseを当てはめるのは、カテゴリーの混同である。

Absent は、調査した結果、その機能が本当に存在しないことを意味する。回避策も、プラグインも、代替のワークフローもない。その欠落は現実である。

Unknown は、まだ検証していないことを意味する