Rubellum fly light

ほぼPHP日記

データ構造を着飾るアプリケーション

最近、文章を書いてないのでリハビリがてら。

Google の"検索"

Google 検索のすごいところは、「検索」でなく「ソート」なのだとどこかで見た。
検索結果を"どのような順"で表示するかが、むしろ重要なのだと。

例えば、検索キーワードがページ内に多く含まれているWebサイトが検索結果のより上位に表示される、と考えてみる。
そうすれば、望まない検索結果が出てくるのは明らかだと直感的にわかるはずである。

つまり、Google 検索は、検索結果をユーザーが望む(であろう)順番にソートしている、といえる。

何を当たり前なことをと思うかもしれないが、
そのときは「検索」と「ソート」で受ける印象がだいぶ違う!と感じたのである。(アハ体験1)

Excel の"表"とTrelloの”リストのリスト”

話は変わるが、ジョエルオンソフトウェアで有名なジョエル先生が、Trelloについてのエントリを書いている。

matope.hatenablog.com

ここにExcelが広まった理由について考察が書かれている。

Excelを実際に「計算」と呼べるもののために使っている人間はどこにもいなかった。

ほとんどの人々がExcelをリストを作るために使ってたということだ。突如として私たちは、Excelを時代遅れにせんとした、上等な未来的スプレッドシートであるLotus Improvがなぜ完全に失敗したのかを完全に理解した。あれは計算が大得意だったが、表の作成はひどく下手で、そしてみんなはExcelを計算ではなく表のために使っていたからだ。

大部分のExcelユーザーが”表計算”でなく、ただの"表作成"に使っているのだという。
自分も思い返してみると、確かにただのそのような使い方をしていることが多いように思える。

どれだけ優秀な表計算シートも、表作成ソフトにはかなわなかったのである。
表計算のユーザーは少なく、表作成のユーザーは多かった。

ところでジョエル先生はこのエントリの中で、

素晴らしい水平的キラーアプリケーションとは、実際には着飾ったデータ構造に過ぎないのだ。

とおっしゃっている。つまり、Excelは”表”というデータ構造を着飾ってたアプリケーションなのだと。
そして、Trelloは「リストのリスト」を着飾っている。(アハ体験2)

表やリスト(またはリストのリスト)といったデータ構造は、多くの人が業務等で普通に使っているものである。
必然的にそれらの”データ構造”が(おそらく無意識的にだが)必要とされる機会も多くなる。

したがって、それらを着飾ったアプリケーションは広く使われる資質を持っているのである。
(もちろん多くの人に実際に使ってもらうのは大変だと思うけど。)

先程のGoogle 検索の例に戻って考えてみると、
Google 検索はソートというアルゴリズムを着飾っているといえる。

「データ構造とアルゴリズム」を着飾ったアプリケーション(Webサービス)

多くの人に使われるWebサービスを作りたいならば、
データ構造やアルゴリズムといった観点からサービスをみてみると何かヒントを得られるかもしれない。