自動スナッピングを利用して大きなページをブラウズする

第29回 誤魔化す!技術

「誤魔化す」という言葉には悪いイメージがありますが、 「情報隠蔽」というと多少聞こえが良くなるかもしれません。 森の中に木を隠すという記事で、 普通の画像やテキストの中に秘密情報を隠すステガノグラフィーという技術を紹介しましたが、 これは内容を誤魔化すことにより秘密を守る技術の一例といえるでしょう。

公開情報を隠す!技術

非公開の秘密情報は、 普通に暗号化したりステガノグラフィーを利用したりして隠すことができますが、 いったん表に出てしまった情報を後から隠すのはなかなか大変です。 情報そのものを消すことは不可能ですから、 なんらかの方法によってその情報の内容を誤魔化す方法が必要になります。

正しい情報と似て非なる情報を大量に提供する狼少年メソッドを使えば、 どれが正しい情報なのか判別不能にすることができます。 たとえば、 内容に問題があるメールを間違って送ってしまった場合、 内容が少しずつ違うメールを大量に送りつければ、 どれが最初のメールなのかわからなくなってしまうかもしれません。 また、パスワードを漏洩してしまった場合は、 異なるパスワードを同じように漏洩させてしまえば、 悪用される危険が減るかもしれません。

文字を隠したいときは別の文字を上書きするのが効果的です。 左の「増井」のような文字を手っ取り早く隠したい場合、 斜線を引いたりするよりも、 右のように別の文字を上書きする方が読みにくくなります。

文具用品のプラスステーショナリー株式会社は、 葉書などに印刷された住所や名前のような個人情報を読めなくするための ケシポン というスタンプを販売しています。 ケシポンは下のようなパタンをもつスタンプです。
左のような文字の上にケシポンを押すと右のようになり、 確かに文字がかなり読みにくくなることがわかります。
一方、前述の「増井」という文字の上にケシポンを押した場合は下図のようになりますが、 この場合は目を細めると読めてしまうようです。 大きさや字体が隠したい文字に似ているものを選ぶ必要があるようです。

忘れる!技術

世に出た情報はこのような攪乱戦術で誤魔化せることもありますが、 自分の頭の中の情報を消すには忘れる!技術が必要です。 情報を整理したり記憶したりする方法に関しては沢山のライフハック技法が提案されていますし、 計算機を利用すれば無限に情報を記憶することができますが、 不要な情報を頭の中から消すにはどうすればよいのでしょうか。 私の場合、嫌な記憶を忘れるために以下のようなことを実践しています。 幸い私は忘却力にはかなり自信があり、 放っておけば大事なことでもすぐに忘れてしまいますから、 これらについて気をつけるだけで嫌な記憶に悩むことはほとんどありません。 私ほど忘却力を持たない人でも、 努力によって何かを忘れることは可能だと思います。 各種の誤魔化す!技術を活用することにより、 困った情報も嫌な記憶もクリアして、 悩みのない生活を送りたいものです。

第28回 不在問題

何かが存在することを示したり存在に気付いたりすることは簡単ですが、 存在しない事物をうまく扱うことは簡単ではありません。 シャーロックホームズの 白銀号事件(Silver Blaze)では、 事件発生時に犬が吠えなかったという事実に気付いたホームズが、 それを手掛かりに事件を解決しました。 何かが起こらなかったということに着目できたのはホームズならではということでしょう。 これは「鳴かなかった犬の推理」 (The dog that didn’t bark) と呼ばれ、 様々な場合に有効な思考法だそうですが、 我々はホームズではありませんから、 存在しないものには普段はなかなか気付きにくいものです。

利点を沢山聞かされたときは欠点に気付きにくいでしょうし、 立派な理屈を並べたてられれば隠れた問題が見えなくなってしまうでしょう。 私は先日、スペイン語では「k」という文字を使わないということを聞いて驚きました。 言われてみれば確かに「k」のつく単語を見たことが無いのですが、 そのことには全然気付いていませんでした。

不在情報の罠

何かが存在しないことに気付くのは難しいので、 不在の利点はわかりにくいものですし、 何かをわざと省略してあることに気付かないことも多いと思われます。 以前、機能を絞った簡潔なコードを公開したところ、 そのプログラムを誰かが後で「改良」し、 無駄な機能が沢山ついた巨大な汚いコードになってしまったのに絶望したことがあります。 わざわざ機能を絞ってあることに気付かず、善意で変更を加えてしまったのでしょう。

ボタンの数などを絞った簡潔なインタフェースの思想に気付かない人が、 安直に機能やボタンを追加してしまうこともあります。 機能やボタンが存在することには誰でもすぐ気付きますが、 意識的に省いてある機能は気付かれにくいものです。 誰かがシンプルさを追及したインタフェースを作った後で別の人が保守を受け継いだ場合、 最初の設計者が苦労して省いた機能がつけ加えられてしまってシンプルさが台無しになってしまう可能性があります。 無駄なものを後で追加されないようにするには、 誰でもわかる形で省略の思想を表現する必要があるのかもしれません。

私が運営している 本棚.orgQuickMLなどのサービスは、 ユーザIDもパスワードも登録せずに利用することができるようになっているのですが、 ユーザやパスワードの登録が要らないことに気付いて喜んだ人はほとんどいないようです。 ユーザの個人的な情報を扱うシステムなのに パスワードを使わずに利用できるということは大きなメリットがあると考えているので、 私は自分のサービスでは極力ユーザIDやパスワードを利用しないようにしているのですが、 「パスワードを利用しない」ということの利点はなかなか理解してもらえないようです。 以前の 貧乏な記録 という記事では自動的にファイルセーブを行なう auto-save-buffers というプログラムを紹介しました。 このシステムを使うと、 エディタで編集中のテキストがすべて自動的にセーブされるため、 ファイルのセーブを行なうという手間が不要になります。 これは非常に便利な機能なのですが、 手間をなくすことは、 出来ることを増やすことに比べると地味な機能変更であるためか、 このシステムはそれほど話題になっていないようですし、 様々なシステムでこの方法が採用されたという話も聞かないのは残念なことです。 デザインがシンプルであること・ コードが短いこと・ 操作の手間が少ないこと・ といった特徴は、 何かの機能が存在することよりも重視されるべきだと思います。

不在情報の憂鬱

関連すると思われる情報から、実際に存在する情報を引算すれば、 関連するはずなのにそこに存在しない情報(=不在情報)のリストを得ることができるはずです。 mixiにはあなたの友人かも?というサービスがあり、 友人関係情報をもとにして別の友人を発見できるようになっています。 この機能を利用することにより、登録を忘れていた友人を発見できることがあるのは確かですが、 なんらかの理由により最初から友人関係を登録していない人物や、 知らない間に登録を解消されていた人物もリストされてしまうので、 不快な気分になってしまうことがあります。 不在情報は便利ですが注意して利用しましょう。

第27回 なぞなぞ伏字

公開すると問題があるかもしれない名前などを 「」 のような「伏字」にしたいことがあります。 そもそも何も公開しなければいいのかもしれませんが、 友人などにだけわかる形で情報を公開したいこともあります。 このような場合、伏字を解読する方法を用意しておけば、 隠れたメッセージを友人などにだけ公開することができるようになります。 このような解読可能な伏字を利用すると、 以下のようなブログを書くことができます。
昨日 の酒屋で という酒を売ってるのを発見した。 とても美味い酒なのだが売ってる店が少なく、これまで でしか売ってるのを見たことがなかったのだが、 このような便利な場所にある店でも買えるようになったのはありがたい。
これでは何が何だかわかりませんが、 実は上の伏字は、4個の「■」を左から順番にクリックすると内容が表示されるようになっています。 このような秘密の解読シーケンスを登録できるようにしておくことにより、 酒を買って嬉しかったことは公開しつつ、 具体的な店や酒の名前は友人以外に秘密にしておくことができます。

店の名前を隠すのはちょっとセコい感じがしますが、 クイズ問題の答を別ページに書くかわりに伏字にしておくような使い方もできます。 以下のようなトリビアの伏字では、 一番左の「■」をクリックすると答が表示されます。

・3次方程式の解法で虚数の概念を導入したのはである。
・「東海道五十三次」で有名な歌川広重の本職はだった。
ネタバレ部分を伏字にしておいて、 クリックした人だけ読めるようにするといった使い方もできるでしょう。

なぞなぞ伏字の作成と利用

このような伏字を登録して利用することができる fuseji.com というサービスを作ってみました。 以下のような画面で 伏字のID、伏字の中身、解読シーケンスを登録しておくことにより、 wiredsample1のようなIDをもつHTMLタグを使って 前述のような伏字を利用することができます。

伏字の活用

「ソ●ー」のような無意味な伏字はネット上にあふれていますが、 伏字が有効に利用されている例は少ないようです。 しかし隠したい情報と解読方法を柔軟に制御できれば、 いろいろな認証やゲームに利用できそうです。 トランプの「神経衰弱」は一種の伏字解読ゲームですし、 私が運営する「四文字熟語クイズ」 でも伏字がうまく利用されています。 四文字熟語クイズサイトにアクセスすると、 以下のような問題が沢山出題されます。
この答は「無学文盲」ですが、 「文学」とか「文字」とかいう単語に影響され、 なかなか正答がわからないものです。 伏字の中身を想像すると 心の奥底が露呈することがありますし、 新しい発想が生まれる可能性もあるでしょう。 伏字にはまだまだ意外な応用があるかもしれません。

第26回 森の中に木を隠す

パソコンで各種のサービスを利用する場合、 パスワード、クレジットカード番号、購買履歴など 沢山の秘密情報を扱うことになりますが、 こういった情報を普通のファイルに書いておくと、 何かの機会に他人にみつかってしまう可能性がありますから、 なんらかの方法で隠しておく必要があります。

特殊な装置を接続したときだけ秘密ファイルが見えるようにする装置について 秘密情報のコントロール で解説しました。 このような装置は鍵のような感覚で利用することができるので手軽ですが、 鍵と同様の厳重な管理が必要ですし、データのバックアップなどに注意が必要です。 秘密ファイルは普段は見えないわけですから、 自動的にバックアップすることはできないでしょうし、 間違って消してしまってもしばらく気付かないかもしれません。 また、秘密データをネットワーク上に置くことができませんし、 自分が使うあらゆるマシンで正しく動くようにするのは大変でしょう。

特殊な装置を使わず、一般的な暗号化アルゴリズムを利用すれば、 データをどこに置いてもかまいませんし、バックアップ関連の問題も減ると思われますが、 この場合は暗号化されたデータが誰からも丸見えになってしまいますから、 暗号解読攻撃を受けやすくなる可能性があります。

秘密情報を手軽に安全に扱うためには、以下のような要件を満たす必要がありそうです。

ステガノグラフィー

暗号化したことがわからないように秘密データを普通のデータの中に埋め込む手法を ステガノグラフィー と呼びます。 普通の暗号と異なり、データが隠されていること自体が自明でないため、 解読の危険に晒される危険が少ないと考えられています。 もとデータに重畳する形で秘密データを書き込むため、 秘密データのサイズをあまり大きくすることはできませんが、 秘密データは大抵小さなテキストのことが多いため、 写真データのような大きなファイルに埋め込んでしまえばうまく秘密データの存在を隠すことができます。

秘密データを隠す対象としては動画、画像、音楽のような、 複雑かつどこにでもあるデータを利用するとよさそうです。 デジカメなどで標準的に使われているJPEG画像ファイルにデータを隠すことができる JPHIDE/JPSEEK および OutGuess というシステムを使って、私の写真に秘密情報を埋め込んでみました。 (1)がもとの画像です。

(1) オリジナルのJPEGデータ(5654バイト)
(2) JPHIDEで円周率の先頭40桁("3.1415...")を埋め込んだもの(5322バイト)
(3) JPHIDEで円周率の先頭200桁を埋め込んだもの(5326バイト)
(4) OutGuessで円周率の先頭200桁を埋め込んだもの(5408バイト)
(3)と(4)は同じデータを同じ画像に埋め込んだ結果ですが、 JPHIDEの方が画像の劣化が小さいようです。

パーソナルな写真や動画に秘密情報を埋め込んでおくことにすれば、 前述の条件をうまく満たすことができます。 デジカメ写真フォルダ内のデータは滅多に消すことはないでしょうし、 注意してバックアップするのが普通です。 また家族や他人に見られて困ることはありません。 秘密情報を埋め込んだことを忘れてしまう可能性はありますが、 それを忘れてしまうようならば大した秘密情報ではないでしょう。 どの写真が秘密情報を含むものかを忘れた場合は、 手持ちのすべての写真に対して復号を試みてみればよいでしょう。

ステガノグラフィーを使って秘密を隠す方法は現在のところ ほとんど使われていないようですが、潜在的ニーズは多いと思います。 JPHIDEやOutGuessはコマンドラインからしか使えないので あまり便利とはいえませんが、 インタフェースを改良した使いやすい秘密管理システムが 望まれるところです。

第25回 ユーザは使いよう

近年のユーザインタフェース開発では 「ユーザ中心設計」 (User-centered Design)を行なうことが常識になっています。 システム設計者の思い込みにもとづいて作られたシステムが ユーザにとって使いやすいものになる可能性は低いですが、 設計の初期段階からユーザの欲求についてよく検討し、 設計の途中段階においても実際にそれが使いやすいかどうか テストを行ないつつ開発を行えば、 本当にユーザにとって使いやすいシステムを開発することが可能になります。

ユーザビリティの専門家の Jakob Nielsenは 以下のような5個の要素を使いやすさの目標としてあげています。

  1. 学習しやすさ (Learnability)
  2. 効率 (Efficiency)
  3. 記憶しやすさ (Memorability)
  4. エラー (Errors)
  5. 満足度 (Satisfaction)
システム作成者としては、システムの作り易さや美しさなども指標にしてもらいたい ところですが、ユーザ中心設計ではそのような開発者の都合は関係ありません。

ユーザによる設計

ユーザ中心設計という考え方は現在深く浸透しているので、 このような方針に対して異を唱える開発者はいないと思われますが、 開発にあたって具体的にユーザをどう使うかについては誤解があることもあります。 ユーザ中心なのですから、 ユーザの望むものをそのまま作ればよさそうに思われますが、 ユーザは自分が何を望んでいるのかわからないのが普通であり、 基本的な仕様に関してユーザに意見を求めることはできません。 GUIがまだ発明されていなかった頃、 どんな入出力装置が欲しいか誰かに質問したら、 打ちやすいキーボードが欲しいといった意見が返ってくるでしょう。 キーボードを使わずにプログラムを実行する方法など皆目わからないからです。 また、Webがまだ存在しなかった頃のユーザを集め、 計算機を将来どんなことに使いたいか聞いたとしても、 ブラウザやブログが欲しいという意見が出ることはありえません。 優れたデザインで人気があった初代iMacには フロッピードライブが搭載されていませんでしたが、 フロッピードライブが必要かどうかと 当事のMacintoshユーザに質問すれば、 ほとんどのユーザがフロッピーはやっぱり欲しいと答えただろうと思われます。

ユーザが求めるものを設計して作ることは非常に重要ですが、 どういうものをどういうデザインで作るべきかについてユーザの意見を求めてはいけません。 本当に新しく便利なものを作るためには 開発者やデザイナが知恵を絞って思考錯誤する必要があり、 普通のユーザにいくらアンケートをとっても無駄です。

Steveの頭の中

Steve Jobsの考え方について書いた 「スティーブの頭の中」 (Inside Steve's Brain)という本に、 以前のApple社長だったJohn Scullyのインタビューが載っています。 Scullyによれば、Jobsは常にユーザのことについて考えているのだけれども、 「マーケティング」などと称して「ユーザの声」を聞いたり評価を行なったりすることはなく、 「グラフィック計算機を見たこともないような奴等にGUIについて聞くなんてありえないだろう」 と言っていたのだということです。 芸術家が絵を描くときにユーザグループを作ったりしないのと同じように、 Jobsは何が欲しいかユーザに聞いたりしません。 その昔、自動車王Henry Fordは 「何が欲しいか客に聞いたら、もっと速い馬が欲しいというだろうね」と言ったそうですが、 ユーザの意見をもとに新しいデザインを考えることはできません。 何かを設計する人は、 将来のユーザが満足するであろう新しいインタフェースやデザインを 発明する能力が必要なのです。

ユーザに設計させないこととユーザ中心設計を行なうことは矛盾しません。 ユーザについてよく考慮しながら専門家が設計を行ない、 それに対してユーザが意見を言ったり評価実験を行なったりして、 それにもとづいて専門家が設計を修正するというような 共同作業が本当のユーザ中心設計です。 このためにはユーザと設計者の緊密な意見交換が必要でしょうし、 相手の主張に耳を傾ける柔軟な姿勢も必要でしょう。 現在、 メーカやサービス提供者もなかなかユーザの声を取り入れる余裕が無いことが多いため、 このようなユーザを巻き込んだ開発方式がうまくいった例はまだ多くないようですが、 ネットワークのおかげで こういった情報交換が以前よりも簡単になってきているわけですから、 真のユーザ中心設計にもとづいたシステム開発が今後もっと行なわれてほしいものです。

第24回 イメージが重要

Webページは画像であふれています。 いくら優れた内容でも、 テキストだけのWebページは魅力に欠けるものです。 そもそもWebが流行したきっかけは Mosaicで画像が表示されるようになったことであり、 文字しか表示されないブラウザしかなければ これだけWebが流行ることはなかったでしょう。

人気のあるブログには必ず画像が入っています。 ニュースサイトGIGAZINEにインスパイヤされて作られた ネタサイトTerazineでは、 Diggの記事を自動翻訳したテキストに Flickrから検索してきた適当な画像を加えることにより、 翻訳や写真が多少変でもそれなりに格好良いサイトになっています。

Terazineの7/7の記事

画像は何かを記憶するためにも有用です。 以前紹介した 単語帳.orgというサイトでは、 以下のように単語の意味と画像を同時に表示することによって 単語のイメージを覚えやすくしています。 単語と意味を組にしただけの単語カードをいくら使ってもなかなか単語は 覚えられないものですが、以下のような写真を何度も見ていると、 “voracious” という単語を見るたびにこの顔を思い出してしまいます。 語学学習ソフトとして定評がある RosettaStoneというソフトでも、 単語と画像を一緒にユーザに提示することによって学習効果を高めています。

“voracious”という単語のページ

小さな画像でも有るのと無いのはかなり違います。 携帯電話のメールでは絵文字が有効に使われていますし、 Webページではサイトを簡潔に表現するfaviconを 用意しておくのが一般的になっています。 また、Edward Tufteは、様々な情報をアイコン化してテキスト中に埋め込む 「Sparkline」と呼ばれる 情報視覚化手法を提案しています。 たとえば株価が上がったとか下がったとか書くよりも のような画像をテキストに埋め込んで表現する方が はるかによくわかります。

画像を本格活用する

このように画像は非常に重要なものであるにもかかわらず、 テキストに比べると今のところ画像の取り扱いは大変で、 生成するのも検索するのも表示するのも簡単ではありません。 しかしメールやWebページで画像は今後ますます広く使われていくでしょうから、 画像を扱う方法はまだまだ進化すると思われます。 よく考えてみると、漢字の入力や検索と画像の入力や検索はそう異なるわけではありません。 現在でも「わらい」という入力から顔文字を選択することができるシステムがありますし、 そもそも検索と入力は似たようなものですから、 漢字と同様の入力システムや検索システムを使って画像を扱うことができるようになるでしょう。 また、漢字と異なり、画像は新たにいくらでも生成することができますから、 写真共有システムや、 Gyazoのような画像アップロードシステムが普及すれば、 これらを組み合わせたさらに面白い使い方が出てくるでしょう。

画像はテキストに比べるとこれまではオマケ的な扱いを受けていましたが、 新たな検索/入力/登録手法の開発によって一級市民になってほしいものだと思います。

第23回 ネットコピペ

ブラウザにはブックマーク機能がついており、 よく使うサイトのURLを登録しておくことにより、 メニューからそのサイトを選んでジャンプできるようになっています。 これはちょっと使うには便利な機能なのですが、 本格的に活用しようとするとすぐににメニューがあふれてしまうので 管理が面倒です。 また、異なるブラウザやマシンでブックマークを共有することができませんから、 ブラウザのブックマーク機能は実際にはあまり有用なものではありません。

このような問題を解決するひとつの方法として、 del.icio.usはてなブックマーク のような、Web上でブックマークを共有する ソーシャルブックマークサービスが最近よく使われています。 Web上のブックマークにはあらゆる場所からアクセスすることができますし、 ブックマーク数によってサイトの人気がわかるというメリットもあるので、 多くのユーザに活用されているようです。

情報共有という意味ではソーシャルブックマークは大変便利なものですが、 ブラウザのブックマーク機能の代替としては最適とはいえません。 こっそり閲覧したいサイトや非公開サイトは登録するわけにいきませんし、 登録ずみのサイトを表示するのに多少手間がかかります。 ソーシャルブックマークサービスでは 各ブックマークにキーワード(タグ)を登録することを推奨していますが、 よく使うサイトをいちいちキーワードで検索するのは面倒です。

3文字ブックマーク

私はURL情報を3文字で表現する「3文字ブックマーク」を作って利用しています。 任意のURLを http://tinyurl.com/6sye9a のような短い別名に変換してくれる TinyURLというサービスがありますが、 これと同様の機能を自分のサイトで実現しているわけです。

TinyURLでは6文字の英数字が識別名として利用されていますが、 ひとりで利用する場合はもっと短い名前で充分です。 たとえば 朝日新聞のサイトを利用したいとき、 このURLを私のサイト上で“ash”という3文字の名前で登録しておけば http://pitecan.com/ash というURLで朝日新聞にジャンプできます。 英文字1文字だと26個しかブックマークすることができませんが、 英数字3文字を利用すれば26×36×36個のURLを区別できますから 個人的に利用する場合は充分でしょう。 また、この機能をFirefoxの右上の検索窓に登録することにより、 Firefox上で“ash”と入力すればすぐに 朝日新聞のサイトにジャンプできるようにしています。

xxx”という名前でURLを登録したいときは http://pitecan.com/xxx にアクセスすると登録画面が表示されるようになっています。

ネットコピペ

ソーシャルブックマークに一度登録したURLを 後で消したり編集したりすることはあまりやらないものですが、 3文字ブックマークの場合は気軽に編集して使うことができます。 たとえば、 行きたい場所の地図のURLを “map”という名前で登録しておけば、 http://pitecan.com/map という名前で地図にアクセスすることができます。 どこかにでかけるときは必ずこの名前で地図URLを登録するようにしておけば、 いつでも同じ名前で必要な地図にアクセスすることができることになります。

3文字ブックマークは URLをWeb上でコピペできるようにしたものだと考えることもできます。 普通のコピペでは コピーバッファはひとつしかありませんから名前をつける必要がありませんが、 この場合は3文字の名前で区別することができます。 URLを登録するかわりに 「情報をWebでコピペ」という文字列を “inf” という名前で登録すれば、 http://pitecan.com/inf にアクセスすればこの情報を読むことができます。 異なるマシン間で文字列をコピペするのに便利です。

3文字ブックマークやコピペの機能は数年前に作ったものですが、 私は毎日かなりの頻度で利用しています。 現在は私がひとりで利用していますが、 誰でも使えるようになっていれば便利でしょう。 最近は「Web2.0」的な情報共有サービスが大流行していますが、 個人的にWebを活用する小技もまだまだありそうです。

第22回 大きなデータを眺める

下図はMacintoshの Disk Inventory Xというソフトで 私のホームディレクトリの中のファイルの大きさを視覚化したものです。 大きなファイルが大きな矩形で表現され、 ファイルをまとめたフォルダも矩形として階層的に表現されています。

一方、下図はWindowsの SequoiaViewという ソフトを使ってファイルの大きさを視覚化した例です。

後発のDisk Inventory XはおそらくSequoiaViewに触発されたと思われるので 外見がよく似ていますが、 階層的に配置した矩形の集合でファイルサイズを表現するという方法は University of MarylandのHuman-Computer Interaction Labで開発された TreeMap というシステムに端を発しています。 ディスクの中にどんな大きさのファイルがどれほどあるのかはわかりにくいものですが、 TreeMapのような方法を使うと 大きなファイルの分布を直感的に把握することができます。 このように、 大量の情報をうまく画面上に表示することによって理解を助けるテクニックを 情報視覚化(Information Visualization)と呼びます。

情報視覚化の歴史

情報視覚化の研究は1990年ごろからXerox PARCなどで盛んになり、 PARCでは様々な大量の情報を3次元空間にマッピングすることによって 情報をひとつの2次元画面上に表示する手法が主に研究されていました。 3次元空間のデータを眺める場合、遠くにあるものは小さく見えますから、 データをうまく配置すれば自然に沢山の情報を表示することができます。 たとえば古い情報は3次元空間内の遠くの方に配置し、 新しい情報は近くに配置すれば、 CGに利用される3次元表示手法を使って 近くの新しい情報は大きく/遠くの古い情報は小さく表示することが可能になります。 下図の“Perspective Wall”システムでは、 沢山のファイルを3次元空間上の「壁」に貼り付けることによって、 注目している範囲の情報だけが大きく見えるようになっています。

1990年当時は高速3次元表示が可能な計算機は高価だったので このような研究を行なえる場所は限られていました。 また、視覚化が必要なほど大規模な情報もあまり利用できませんでしたから、 そのころ提案された情報視覚化手法はほとんど実用的に利用されることはありませんでした。 一方、最近はどんなパソコンでも高速にグラフィクス表示を行なうことができますし、 Web上の大規模なデータが簡単に入手できるようになってきました。 パソコンの中にはかなりの量のファイルが入っているのが普通ですし、 Web上には何千万件単位のデータが沢山あります。 Ben Shneiderman氏の TreeMapの歴史というページ にはTreeMapの20年の歴史が解説されていますが、 情報視覚化の研究が始まって20年たってようやく本格的な応用が見えてきたようです。

情報視覚化の手法

大量の情報をまんべんなく画面に表示することはできませんから、 なんらかの方法で必要な部分だけを表示しなければなりません。 スクロールバーのような一般的なGUI部品を使って情報の一部だけ表示することも可能ですが、 巨大なデータをスクロールだけで扱うことは難しいので、 なんらかのフィルタリング手法やズーミング手法が必要になります。 特に、全体の構造を把握しつつ詳細情報も調べられるような、 “Focus + Context”を考慮した手法が重要です。

下図は大規模なネットワーク情報を円板上に配置する “HyperbolicTree” という情報視覚化手法の例です。 HyperbolicTreeも90年代にPARCで開発されたもので、 現在注目しているノードを画面の中央に置き、 その親ノードと子ノードをその周囲に配置することを繰り返すことによって すべてのノードを円板内に表示するというものです。 中心から遠くなるほどノードやリンクを小さく表示することにより、 どれほど大きなデータでも画面内におさまるようにすることができます。

HyperbolicTreeは PARCから分離したInxightというベンチャー企業で “StarTree”という名前で販売されていましたが、 現在は Business Objectsという SAPの子会社に買収されてそこで販売されているようです。

私は “Focus + Context”を考慮して大規模な階層構造を視覚化できる LensBarというシステムを開発しています。 LensBarでは、 ユーザがマウスを左右に動かすことによって リストのズーミング操作を行なうことにより、 すべてのデータを表示したり重要なデータだけ 間引いて表示したりすることができます。 また、検索キーワードを指定することにより、 キーワードにマッチするエントリのみを表示対象とすることができるので、 フィルタリングにより表示量を制御しつつ 全体と詳細を同時にブラウズすることが可能になっています。 以下の動画は Cプログラムのテキストをズーミングしたりフィルタリングしたりしているところです。 マウスを左にドラッグしてズームアウトすると 関数名など重要なところだけ表示されます。 文字を入力するとマッチする行だけフィルタリングされ、 現在表示可能な行が左のスクロールバーの背景に表示されます。 フィルタリングしている状態でズーミング操作を行なうと、 指定したパタンにマッチしている行と重要な行が両方表示されるので、 プログラム全体においてマッチした行がどのように分布しているのかがわかります。

私が運営している 本棚.orgという書籍情報共有サイトでは 情報視覚化の本棚 という「本棚」が作ってあり、 下図のように情報視覚化に関連する各種の書籍が登録されています。 情報視覚化と銘うった日本語書籍はほとんどありませんが、 “Information Visualization”をタイトルに含む洋書はすでに沢山出版されています。 ハイパーテキストの研究がWebとして世の中に浸透するには20年かかりました。 全文テキスト検索の研究がAltaVistaをはじめとする検索エンジンとして世の中に 広まるのにも20年かかりました。 いよいよ情報視覚化の研究が世の中で注目される時代が近付いているような気がします。

第21回 流れる情報と留まる情報

世の中の様々な情報は、 いつでも参照できるストック型情報と、 リアルタイムに流れてくるフロー型情報 におおまかに分類することができます。 最新のニュースや天気予報は重要ですが、古い情報はあまり役にたちませんから もっぱらフロー情報として扱うのが適切ですし、 百科事典や辞書などはストック情報として扱うのが適切です。 しかし、 新しくてかつ保存が必要な重要な情報の場合、 両タイプの取り扱いが必要になるので取り扱いが面倒になります。

ストック情報とフロー情報の変換

ストック情報とフロー情報はあらゆる場面で常に変換が行なわれています。 聞いた話をメモ帳に書くという行為は フロー情報のストック化ということになりますし、 手帳からネタを捜してブログを書いている人は ストック情報をフロー化していることになります。 人間が見たり聞いたりする情報はすべてフロー的ですが、 ストック型の情報蓄積装置である脳内情報に変換され、 フロー的な会話情報として出力されます。

ネット上には Webページ/メール/掲示板/Wiki/ブログなど様々なコミュニケーションシステムが存在しますが、 これらはフロー的かストック的かのいずれかであることが多く、 両方の特徴を備えた便利なシステムはまだ出現していないようです。 掲示板やメーリングリストはフロー型のコミュニケーション手法ですから、 重要な情報をストック的に利用したい場合は アーカイブやまとめサイトを併用しなければなりません。 またWebページはストック型ですから、 内容に変化があったことをフロー情報として通知するために RSSが最近よく利用されるようになってきました。 手作業でまとめサイトを作るのは面倒ですし、 RSSはまだまだ普及が遅れており、 ネット上で フロー情報とストック情報をうまく扱う方法は大きな課題です。

メーリングリストにおけるフローとストック

メールは普通はフロー情報を扱うのに適していますが、 メーリングリストのメンバ間で情報共有をするような場合、 ストック情報も扱いたくなることがあります。 たとえばパーティーに関するメーリングリストでは、 以下のように様々なフロー情報/ストック情報の交換/共有が必要になります。 普通のメーリングリストではこれらの情報がすべてメールで交換されますが、 開催場所のような重要情報が古いメールに埋もれてしまったり、 大量に流れる参加/不参加通知が鬱陶しかったりすることがありますから、 こういった情報をストック情報として管理できるシステムシステムが望まれます。

QuickMLのWeb拡張

私が数年前から運営している QuickMLという フリーのメーリングリストサービスを拡張し、 フロー情報とストック情報の両方をうまく扱うことができる システムを試作してみました。 QuickMLは、 “(任意の名前)@quickml.com” というアドレスにメールを出すだけでメーリングリストを作って使えるという お手軽なメーリングリストサービスですが、 今回これを拡張し、 編集可能なWebページをQuickMLの各メーリングリストに併設することによって ストック情報も扱えるようにしてみました。 メーリングリストのメンバであれば、 “http://quickml.com/(任意の名前)” というWebページに情報を書き込むことができます。

先日ヨットのセーリングに誘っていただいたのですが、 sailing-20080316@quickml.comという名前のメーリングリストを作り、 準備などの情報交換のために http://quickml.com/sailing-20080316 というWebページを活用しました。 事前の準備や食事の用意などに関してはWebページを活用し、 全員への連絡はメールを利用するという方法により、 効率的に事前の情報交換を行なうことができました。 また、撮った写真を後でアップロードして共有するのにも利用しています。 パーティーなどでは参加や準備の連絡がわずらわしいものですが、 そのようなストック情報はWeb上に書き込んでもらい、 全員に連絡する必要があるフロー情報だけメーリングリストに流すことによって 効率的に情報共有を行なうことができました。 通常であれば何十通もメールの交換が必要だったと思われますが、 今回は重要なストック情報はすべてWebに記述し、 「Webに情報を書いて下さい」とか「写真をアップしました」 といったフロー情報だけがメーリングリストに流れたので、 流れたメールは全部で10通程度でした。

セーリングに関するメーリングリストのWebページ

写真の共有

メールはSPAMなどの問題が多いため、 将来的にはフロー情報とストック情報をうまく併用できる 新しいコミュニケーション手段が欲しいところですが、 ケータイのメールが広く普及している現在、 新しいコミュニケーション手段にすぐに移行することは難しいでしょう。 現状では、広く使われているメーリングリストとWebページをうまく併用することによって ストック情報とフロー情報をうまく扱う方法が実用的かもしれません。

第20回 日本語でおk

現在ほとんどの計算機は英語で動いています。 DOS(プロンプト)でもWindowsでもUnixでも英語のコマンドラインが利用されていますし、 ほとんどの計算機プログラムやコマンドで “print”のような英単語や英語的な語順が使われています。 たとえば、ある値の平方根を計算して表示するプログラムをRubyで書くと
print sqrt(X)
のようになります。 Rubyに限らずJavaでもCでも数式や表示の指示に関しては 似たような形式が使われることが多いですが、これは
“display the square root of X”
のような英文をそのままの語順で計算機言語に変換した形式になっていますし、 “print”や“square”のような英単語が ほぼそのままプログラミング言語で利用されていますから、 この例では英語表現とプログラム表現はかなり類似しているといえます。

DOSやUnixのコマンドラインでもやはり同様の語順が利用されています。 たとえばabc.txtというテキストファイルの中身を並び替えて表示したい場合、 Unixではsortというコマンドを使って

% sort abc.txt
のようなコマンドを発行します。この表現も、
“sort (the contents of) abc.txt”
のような英文表記と似た語順と用語が使われていますから、 このコマンドは英語的思考にもとづいているといえるでしょう。

一方、このような処理を日本語で表現する場合は

“xの平方根を表示する”
“abc.txtの内容をソートする”
のように全く逆の語順になってしまうわけですが、 英語的発想にもとづいたシステム上でプログラムを作成するときはこの順番で考えず、 英語の場合と同じように、目的語より先に動詞を持ってくる思考を行なう必要があります。

連続した処理の表現

単純な計算や処理を行なう場合はこのような素直な英語的発想でプログラムを書けばいいのですが、 いくつかの処理が連続する場合は英語的な語順だとうまくいかない場合があります。 前述の式をもう少し複雑にして、平方根の逆数を計算して表示したい場合は
print inv(sqrt(x))
のような式を使うのが普通ですが、処理がさらに連続する場合、 後で実行する処理ほど前に記述しなければならない という問題が理解を困難にしてしまうことがあります。 平方根を計算してからその逆数を計算して表示するという順番なのに、 全く逆の順番でプログラムを書かなければならないというのは、 英語的かもしれませんが合理的ではありません。

一方、Unixでは 処理をする順番にコマンドを右に並べていくことによって 連続的な処理を実行させることが可能です。 たとえば、 あるテキストファイルのコメント行を削除してから並び替えたい場合、 ファイルの中身を出力する“cat”コマンド及び パタンにマッチする部分だけを抽出する“grep”コマンドを利用して

% cat abc.txt | grep -v '^#' | sort
のように、処理をひとつずつ“|”で区切って右に並べられる ようになっています。 この表現法の場合、処理の順番とコマンド並びの順番は完全に一致しているので、 実行の順番について混乱することはありません。

Rubyのようなプログラム言語でも、前述のような関数表記を利用するかわりに、 処理をピリオド記号で連結する表記を使うことによって、 Unixのコマンドラインと同様に、処理を順番に並べたプログラムを書くことができます。 たとえば前述のプログラムの場合は

X.sqrt.inv.print
のように表現することが可能です。 実行内容は全く同じですが、 このように表記する場合は処理の順番とプログラムの並びが一致するので、 print inv(sqrt(x)) のような表現よりは理解しやすいと思われます。

日本語によるプログラム表現

このように、処理の順番とプログラム要素の並びはなるべく一致していることが 望ましいと思われますが、 前述のような式は英語では簡単に表現することができません。 あえて順番通りに記述しようとすると
calculate the square root of x, calculate the reciprocal of the result, and print the result
のようになってしまいますが、これはあまり明解な文章とはいえないでしょう。 一方、日本語であれば
Xの平方根の逆数を印刷する
という具合に、 処理の流れとプログラムの形式と日本語表現を同じ順番で簡潔に記述することができます。 このように、 実は日本語は計算機処理の記述にかなり適した言語であるということができそうです。

日本語で本棚演算

第11回の記事で、 本棚.orgに投稿されたデータを利用した 「本棚演算」というデータマイニング手法について紹介しました。 記事中では例として のような演算を紹介していますが、 これは本棚や本の集合に対する演算を並べたものですから、 日本語表記をほとんどそのまま計算機表現に変換することができます。 たとえばRubyで表現すると、最初の例は
"増井".bookshelf.books
のような表記を使うことができますし、3行目まで連結したものは
"増井".shelves.books.similarbooks.shelves.books
のようなプログラムで表現できます。 このような性質を利用すると、 本棚演算のようなちょっと面倒な計算についても、 日本語文を作るのと同じ要領で計算式を作ることができるようになります。 下の例では、 「増井の本棚に内容が近い本棚に含まれる本のリストを計算する」 という作業を日本語で表現することにより、 それをダイレクトに計算機プログラムに変換して本棚演算を実行しています。 日本語表現では、計算結果を表現する名詞や計算実行を表現する動詞を 自然に文末に配置することができるので、 こういった連続処理をうまく連結して、 常に日本語として正しい計算式を作ることができます。 以下の例では、 「増井の本棚」に類似する本棚(似た本を多く含む本棚)に登録されている本を集めて登録の多いものから順に表示するというプログラムを、 日本語表現を並べることにことによって作成しています。

日本語で簡単にプログラムを作れたらいいなぁと思うのは日本人としては自然なことであり、 これまで様々な「日本語プログラミング」が提案されてきましたが、 広く使われているものはほとんど無いようです。 日本語プログラミングといっても、 “print”のようなキーワードを日本語にしただけではあまりメリットが感じられませんが、 文の構造と計算機処理の流れを一致させやすいといった日本語特有の性質を充分活用すれば、 普通の英語的なプログラミングよりも良い結果が得られる可能性があるでしょう。 汎用プログラミング言語として日本語を使うことができなくても、 本棚演算のような特定領域での利用には明らかに有用ですから、 活用法を検討する価値はありそうです。

第19回 存在の証明

ある情報がある時点で存在したことを証明したい場合があります。 契約書や遺言状などの証拠を残したい場合や、 アイデアや作品などの権利の所在をはっきりしたいような場合に、 このような証明が必要になります。

書類であれば 公証役場で 証明してもらうことができますし、 電子的なデータに関しては 電子公証制度のようなものを 利用することもできますが、 あまり気軽に利用できるものではありません。 重要な発明などが関係する場合はこのような公的システムを利用する方が安心ですが、 ちょっとしたアイデアやソフトウェアについて、 いちいちこのような方法で存在を証明しておくことは現実的ではないでしょう。

デジタルデータは後でいくらでも作成することができますから、 データそのもので古さを証明することはできません。 偽造が不可能ななんらかの別の手段を使って証明する必要があります。 たとえば、データをDNAに埋め込んだ木を育てるという方法が考えられます。 樹齢10年の木の芯の細胞内DNAにデータが入っていれば、 そのデータが10年前から存在したという主張は説得力があるでしょう。 しかしアイデアを思いつくたびに木を植えるわけにはいきませんから、 もう少し手軽で偽造が難しい方法が使えると便利です。

ソーシャルブックマークの利用

Web上で情報を共有する各種の「Web2.0」サービスが流行しています。 なかでも、Web上でブックマークを共有する様々な「ソーシャルブックマーク」システムが 多くのユーザに活用されていますが、 これを情報の存在証明に利用することができます。

存在を証明したいデータがあるとき、 MD5SHA のような一方向性関数 を利用してデータのハッシュ値を計算し、 その値をURLに変換して del.icio.usはてなブックマーク のようなソーシャルブックマークシステムに登録しておけば、 登録した時点でこのデータが存在したことを これらのサービス上で証明することができます。 たとえば

main(){ printf("hello, world!\n"); }
というプログラムが2008年2月に存在したことを証明したい場合、 このデータのSHA-1値は
d8981ce8be9cd53cbb891f75ebdbcbc5a457eaa8
という160ビットの値になるので、これをURL風に変換した
http://d8981ce8be9cd53cbb891f75ebdbcbc5a457eaa8/
のような文字列をソーシャルブックマークシステムに登録しておきます。 この情報を複数のシステムに登録しておき、それらすべての タイムスタンプが2008年2月より前であれば、 d8981ce8be9cd53cbb891f75ebdbcbc5a457eaa8 というSHA1値をもつデータが2008年2月に存在したことを信じる根拠は充分だと考えられます。 SHA1は一方向性関数なので 前述のプログラム以外のデータからこのハッシュ値が計算されることはありませんし、 ハッシュ値からこのプログラムを逆生成することもできませんから、 データの内容を明らかにすることなく、 ある時点においてある情報が存在したことを証明できたことになります。

SHA1のような関数の一方向性は絶対に確実なものではありませんし、 ソーシャルブックマークシステムの運用も絶対に確実なものではありませんから、 この手法による存在の証明は絶対的なものとはいえません。 しかし、データのハッシュ値を計算したりソーシャルブックマークに登録したりすることは 誰でも簡単にできますから、 情報が存在したことを証明するための手軽な方法として利用することはできるでしょう。

情報の重要度の計算

前述のような単純なプログラムの場合、複数の人が同じデータを登録してしまう ことが考えられます。 また、別経路で入手した同じデータを複数の人が登録することも考えられます。 ソーシャルブックマークの場合、 沢山の人に登録されたURLは重要なサイトだと判断されるのが普通ですが、 複数の人から同じハッシュ値が登録されている場合は、 誰もが持ってるデータだと判断することができるので、 そのデータは重要でないということがわかります。 多くの人が、手持ちの様々なデータについて ハッシュ値をソーシャルブックマークシステムに登録するようになれば、 あるデータが沢山の人に共有されているかどうかを ブックマーク数で判定できるようになり、 これをもとにして情報の重要度が判定できるようになります。 ファイルのバックアップを作成する場合、 自分にとって重要かどうかを基準にしてバックアップするかどうか判断するのが普通ですが、 ブックマーク数を利用できれば 世の中に沢山あるかどうかも判定基準に加えることができます。 誰もが持っているファイルであれば、 とりあえずバックアップの対象からはずしておいても大丈夫でしょう。

Web上の情報共有サービスは今後もどんどん増えてくることでしょう。 現在のところ、共有された情報自体を楽しむという単純なサービスがほとんどですが、 データの存在の証明や重要度の計算といった新しい応用が増えてくることを期待したいと思います。

第18回 発見人生

毎日楽しく暮らすことは人生の目標ですが、 贅沢をすれば楽しく暮らせるというものでもありません。 どんなに美味しい食事や酒でも繰り返し同じものを飲み食べしていたらすぐに飽きてしまいますし、 どんなに素晴らしい景色でも毎日眺めていると飽きてしまうでしょう。 美食を楽しむという行為や旅行を続けるという行為自体に飽きてしまうかもしれません、 良いものを見たり食べたりすることはもちろん重要ですが、変化や驚きも大事です。 予定通りの休みは待ち遠しいものですが、 思いがけず休みがとれたりプレゼントを貰ったりするのはさらに嬉しいものです。 喜びの量は期待に対する相対的な値として得られるものなので、 期待の量を制御することによって喜びを増大させる 期待工学も研究されています。

感覚は経験に大きく左右されます。 歳をとると時間の経過が速く感じられたり、 帰り道が行きの道より短く感じられたりするのは、 新しい経験が減るからでしょう。 繰り返しの多い圧縮可能な人生を送っていると あっという間に時間が過ぎてしまいますから注意しなければなりません。 生活に繰り返しが多くなってきたと感じたときは引っ越したり転職したりすると 時間が長く感じられるようになります。

財力があっても工夫が足りなければ満足することはできませんが、 金が無くても毎日新しい発見があれば楽しく満足した暮らしができるはずです。 新しいことが好きで好奇心が衰えない人は 歳をとってもボケたりせずに元気に生活しているように見えます。 楽しく面白い人生を送るためには財力よりも発見力が重要だと思われます。

Web上には新しい情報があふれているので、 工夫次第で毎日かなりの面白い発見をすることができます。 まったく手がかりなしに面白い情報を捜すのは難しいので、 ソーシャルブックマークシステムのような手軽な情報共有システムを利用したり、 面白いブログのRSSを講読したりして情報を捜すことがよく行なわれていますが、 このような方法で情報収集を行なうと 情報の一極集中が起こりがちです。 Webによって情報伝達の距離が消えてしまった現在、 似たような趣味や意見をもつ人達が簡単に集まることができますから、 その集団の中だけの意見が構成されてしまいがちです。 同じグループで意見がかたまってしまう現象は Groupthinkと呼ばれており、 これによって様々な不具合が生じることが知られています。 Groupthinkによって間違った結論が導かれたり イノベーションが阻害されたりすることは多いようです。 面白い情報を捜すときはこの弊害はそれほど深刻ではないかもしれませんが、 もっと面白い情報をみつけるのに失敗する可能性は高くなってしまうでしょう。

新しい情報を捜したり新しい体験に挑戦したりするのは骨が折れるものですが、 私は最近、 Wikipediaページをランダムに表示するスクリーンセーバ を利用して新しい情報を発見する実験をしています。 Wikipediaには おまかせ表示という リンクが用意されており、 これをクリックするとランダムなページが表示されるようになっています。 自動的にこれが表示されるようにしておけば、 常に自分が知らない新しい情報が身の回りに表示されていることになるため、 頭のリフレッシュにとても有効です。 自分は何もしなくても面白い情報がテレビのように勝手に表示されるという 受動的な仕組みは 不精者にも最適です。 一見矛盾する「受動的」と「発見」が楽しい人生のキーワードになるかもしれません。

第17回 検索と入力の素敵な関係

「入力システム」という言葉を聞くとキーボードやかな漢字変換システムのことを連想するでしょうし、 「検索システム」という言葉を聞くとGoogleのような検索サイトや Spotlightのような デスクトップ検索システムのことを連想するもので、 入力検索は全く別物と考えられているのが普通です。 一方、 辞書やWebで検索した単語や例文を自分の文章にコピペしたり、 面白いサイトのURLをメールに貼り付けたり、 検索結果を自分の文章作成に利用することは広く行なわれています。 実は検索と入力はほとんど一体のものであると考えると 両者の関係がすっきりします。

検索と入力の関係

検索結果を自分の文章にコピペするだけで文章を作ろうとは普通は考えないかもしれませんが、 POBoxのような予測型入力システムは、 辞書や操作履歴からの検索結果を入力テキストに貼り付けるというのが基本機能になっているので、 入力システムというよりも検索/貼付けシステムと呼んだ方が適切かもしれません。
また、ある方法で入力したテキストは同じ方法で検索ができるはずです。 「masui」という読みから「増井」という文字列を入力できるシステムの場合、 「masui」というパタンから「増井」という文字列を検索することができるはずです。 現Googleの高林哲氏が開発した Migemoというシステムでは、 「masui」という読みをもつ「麻酔」「増井」「マスイ」のような文字列を同時に検索することにより、 漢字変換を行なうことなく「masui」のような読みから漢字を検索することができます。
下図はMigemoで「活発」をインクリメンタル検索しようとしているところです。 検索キーワードとしてユーザが「k」を入力したとき、 「界」「漢」「活」などが「k」にマッチするので最初の「界」にカーソルが移動し、 「kap」まで入力すると「活発」にカーソルが移動します。


入力システムとしてPOBoxを利用しているとき、 同じ辞書をMigemo検索に利用するようにすれば、 POBoxで入力できる文字列は必ずMigemoでインクリメンタル検索できることになります。 「John F. Kennedy」という単語を「jfk」という読みで登録しておけば、 「jfk」とタイプして「John F. Kennedy」を入力することができますし、 「jfk」で「John F. Kennedy」を検索することもできます。

入力システムと検索システムの融合

入力システムと検索システムは密接に関連したものなのですが、 うまく融合されたシステムはまだ世間に多くないようです。 検索結果を入力に利用したい場合はコピペが必要になるのが普通ですし、 Migemoのような検索手法はまだ全然ポピュラーになっていません。 しかし入力システムと検索システムがうまく融合されると利点は多いはずです。 このように検索と入力の融合には多くの利点がありますが、 現在のところこれらは全く別物として扱われていますから、 すぐに融合することは難しいと思われます。 実際、ATOKはWeb検索などを日本語変換システムと融合する機能を持っていますが、 この機能を活用している人はほとんど見たことがありません。 このようなATOKの機能はすぐれたものなのですが、 検索機能と入力機能を融合する方法がまだ一般ユーザには受け入れられる状況になっていないのでしょう。 高度な検索と入力をいきなり融合するのではなく、 既存の文書を予測変換の辞書として利用するといった無難な方法から始め、 徐々に検索と入力の融合をはかっていく必要がありそうです。

Webで検索した情報をそのままコピペしてレポートにしたり、 Webで検索した文章を盗作して発表したりといった話が最近よく問題になっています。 検索したデータを自分のものとして発表するのはケシカランという意見が今のところ圧倒的ですが、 検索と入力の違いが曖昧になりつつある現状を象徴しているような気もします。 検索と入力は異なるものだと誰もが思っているのでこういうことが問題になるわけで、 検索可能な情報は再利用されるものだという認識があれば、 さほど腹もたたないかもしれません。 ネット上のデータにアクセスすることとダウンロードするのに大きな違いはありませんし、 他人のデータを公開することと他人のデータのURLを公開することの区別も大きくないかもしれません。 データを検索することとその内容を公開することも似たようなものと考えられるようになるかもしれません。 青空文庫のテキストを辞書として予測変換で小説を書いたらそれは誰の作品になるのでしょうか。 データの検索と作成の違いは今後ますます曖昧になってくることでしょう。 検索と入力が融合していくにつれ、 様々な新しい問題も出る可能性はありますが、 長い目で検索と入力の融合の工夫について考えていきたいと思います。

第16回 知識の呪い

能力が無い人には能力がある人のことを想像することはできません。 モーツアルトはどういう精神状態で作曲していたのかとか、 イチローは何を考えながら打席に立っているのかといったことを想像することは困難です。 自分に作曲や野球の才能が有るかどうかは誰でもすぐわかりますから、 こういったことが問題になることは少ないのですが、 自分に才能が無いのに有ると思って行動すると不幸なことが起こる可能性があります。

逆に、能力や知識が有る人は、それが無い人の状況を想像することができないものです。 数学がよくできる先生は、数学の苦手な生徒の頭の中を想像することはできませんから、 生徒のレベルに合った教え方を工夫することができず、 「何故この生徒はこんなことがわからないのだろう」という印象を持ちがちです。 昔はその先生も生徒と同じような心境だったことがあるかもしれないのですが、 技術や知識を一度獲得してしまうと、それ以前の状況を思い出すことは不可能です。 誰でも子供のころは字が読めなかったはずですが、 大人になってしまうと、漢字を読めない人が日本語の文章を見たときの 気持ちを想像することは難しいでしょう。 一流のプレーヤが必ずしも一流の指導者になれないのも同様の理由です。

知識を得ることによって知識が無いときの状況がわからなくなるという現象は 「Curse of Knowledge」 (知識の呪縛) と呼ばれています。 Heath兄弟によるMade to Stickという本では、 知識の呪縛の例として、 1990年ごろStanford大学のElizabeth Newtonが行なった 「Tapper and Listener」という実験が紹介されています。 ふたりの被験者のうちひとりが頭の中に何か曲を思い浮かべ、 そのリズムでもうひとりの肩を叩いて何の曲かを当てさせます。 たとえば「どんぐりころころ」を頭に思い浮かべた場合は 「タンタタタタタタ タンタタタ」というリズムで肩を叩きます。 いろいろな曲を使って実験を行なった結果、肩を叩かれた人は実際には2.5%ぐらいしか曲を当てることが できなかったにもかかわらず、 叩いた方の人間は50%ぐらい当たるだろうと予測していたことがわかりました。 曲を思い浮かべている人間にとっては リズムと曲との結び付きは自明だったわけですが、 予備知識が無い人間にはそれをほとんど理解することができなかったことになります。 知識を持つ人と持たない人の感じ方の違いは甚大です。

知人のサイエンティストがエンジニアリング的に疑問がある発言をするのを よく耳にしたことがあります。 優秀な人が何故変なことを言うのかずっと不思議だったのですが、 その人物に工学的センスが無いのが原因だということに気付くにはかなり時間がかかりました。 私の周囲には工学的センスを持つ人が多いため、それを持たない人の ことを想像することができなかったわけです。 また私はアメリカやヨーロッパで道を尋ねるのに失敗したことがよくあります。 ホテルや店の人に地図を見せて道順を聞いたとき、 いろいろ難癖をつけられて教えてもらえなかったことが何度もありました。 実は彼等は地図を読むことができず、 それを隠すために変な理屈を言っていたのですが、 それに気付くまでは相当不思議な思いをしたものです。 これらはすべて知識の呪縛にもとづく失敗だったといえるでしょう。

第4回で紹介した 画像なぞなぞ認証のような手法が流行しないのも、 知識の呪縛が影響している可能性があります。 画像なぞなぞ認証では、 自分だけが詳細を知っている写真を問題として選ぶ必要があるのですが、 自分がある写真の詳細を知っているときは 他人もそれを知っているような気がしてしまいますから、 認証問題として強度が弱いように錯覚しがちです。 逆に、自分が覚えにくい変なパスワードの場合、 他人にとっても破るのが難しいだろうと勘違いしがちです。 知識の呪縛が存在する限り、 この問題を解決するのは難しそうな気がします。

自分が作った機械を世の中に普及させたいのであれば、 自分以外の誰もが使えるようにする必要があります。 他人の嗜好や考え方を充分想像することができなければ、 自分だけしか使えないシステムしか作ることはできないでしょう。 他人の頭の中を想像するのは難しいことですが、 常に他人からのフィードバックに耳を傾けるような努力が必要だということを 充分認識していれば、 知識の呪縛のために失敗する可能性を最小限にすることは可能でしょう。 第14回に書いたように、 毎日が同じことの繰り返しだと時間が経つのが速くてつまらないものですが、 身近な他人の自分との違いに気をつけていれば、 いつも新しい発見があって人生が豊かになり、 誤解や失敗を減らすことができるかもしれません。

第15回 誰でもプログラミング

黎明期のパソコンにはBASICインタプリタが標準搭載されていたため、 画面に絵を描いたりして楽しむ日曜プログラマが大量に出現したものですが、 最近は計算機が高度化したのと同時にプログラミングの敷居まで高くなってしまい、 自分でプログラムを作って楽しむ人が昔に比べてかえって減ってしまいました。

すぐれたソフトウェアが大量に世の中に出回っているため、 わざわざ自分で何か作ってみようという気にならないのも プログラミングが流行らない理由のひとつかもしれません。 プロが作る料理の1/10のクオリティの料理を自分で作ることは可能かもしれませんが、 市販ソフトの1/10のクオリティのソフトウェアを自作することはほとんど不可能ですから、 自分でソフトウェアを作ってみようという気持ちになりにくいでしょう。

また最近は、自分で何かを作ることは流行らないようで、 楽器を演奏したりコンサートに行ったりするのは下流の人間だと 断言してるがあったりするぐらいですから、 プログラミングは下等な仕事だと思われているのかもしれません。 また、 普通のパソコンでは、ディスプレイ/キーボード/マウス以外の入出力装置を利用できませんから、 気のきいた新しい遊び方を発見することは容易ではありません。 既存のプログラムをダウンロードすれば充分なことがほとんどで、 わざわざ自分で作って実験しようという気持ちにはならないでしょう。

事情の変化

ところがこのような状況は最近になって変わりつつあります。 まず、最近のWebブラウザにはJavaScriptが標準装備されていますから、 特に開発環境をインストールしなくても ちょっとしたプログラミングを簡単に試してみることが可能になりましたし、 MITで開発されているProcessingのようなシステムを利用すれば 「line(10,10,100,100);」のようなプログラムを 入力して「再生ボタン」を押すだけで、 画面上にウィンドウが表示されて直線が描画することができます。 このようなシステムは昔のBASIC並に手軽に使えるうえに、 最新のプログラミング技術やWeb技術も使うことができます。

また、 プログラムから手軽に使えるセンサやアクチュエータが手に入るようになってきたため、 ディスプレイやキーボード以外のものをコントロールすることができるようになってきました。 カルガリ大学で開発されたPhidgetsや IAMASで開発されたGAINERのような USB接続のセンサ/アクチュエータを利用すると、 特別なハードウェアを製作することなく、 実世界の情報を取得したり実世界のものを動かしたりすることができます。 例えば、Phidgetシリーズのs体重計をパソコンのUSBポートに接続すれば、 簡単なプログラミングで 第7回で紹介した 「気合いブックマークシステム」を作ることができます。

インターネットにあらゆる計算機が接続されているため 世界中のセンサやアクチュエータを捜査するプログラムを作ることが できるようになりました。 世界中の誰もが世界中の装置を自由に操作する 全世界プログラミングが人類史上はじめて可能になったことは 歴史的な大事件だと言えるかもしれません。

全世界プログラミング

実世界中の様々なセンサを利用したプログラミングは実は 現実にいくらでも利用されています。 たとえば「7時になったらベルが鳴るように目覚まし時計をセットする」という行動は、 センサとアクチュエータを内蔵する目覚まし時計という装置のプログラミングですし、 「建物に近付くとドアが開く」という自動的ドアは、 人感センサとドア開閉機構を結びつけるハードワイヤドなプログラムで 動いていると考えることもできます。 全世界プログラミングができるようになれば、 このような処理を含むあらゆる処理を自動化できるようになるでしょう。

世の中にかなり普及している以下のようなプログラミングは 全世界プログラミングの第一歩です。 これらのシステムでは条件とアクションがはっきり決まっているので わかりやすいのが特徴です。

同じような装置を使う場合でも、条件を柔軟に指定できると プログラミング感が強まります。 また、別の場所の状態を条件として利用すると全世界感が強まります。 さらに組み合わせると、全世界プログラミングする感覚はさらに強まるでしょう。 自動ドアと全世界ピタゴラマシンではスケールがかなり違いますが、 プログラムの構造は同じようなものです。 計算機上で簡単に全世界のセンサやアクチュエータをプログラムできると 世界を支配したような感覚を持てるかもしれません。

全世界プログラミングのスタイル

世界をプログラミングするためには 現状のようなプログラミングスタイルはあまり適切ではありません。 全世界プログラミングの対象は全世界の事物ですから、 現在のようにテキストでプログラミングするよりも、 実際の事物を利用する方がわかりやすいでしょう。 たとえばブログが炎上したことを表現するのに
if 炎上('増井のブログ') then
  油を注ぐ()
end
のようにテキストでプログラムを書くのは面白くありませんが、 炎上ぶりをビジュアルに表現するプログラムを利用したり、 第9回で紹介した 例示プログラミングを使って例示で炎上ぶりを表現できると良いかもしれません。


全世界>の誰もが全世界の センサやアクチュエータをプログラミングできる 全世界プログラミング世界の面白さや恐ろしさはこれから明らかになってくることでしょう。

第14回 繰り返しの効用

計算機を使うと様々な繰り返し計算を自動化できるはずですが、 計算機に繰り返し操作を強要されることもあります。
メールテキストを引用するとき
引用記号を先頭につけるのが
慣習ですが、
手作業で引用記号をつけるのは
面倒なものです。
たとえば上のようなテキストを下のように変換する場合、 「行頭に“# ”を挿入して次の行に移動する」 という操作を5回繰り返さなければなりません。
# メールテキストを引用するとき
# 引用記号を先頭につけるのが
# 慣習ですが、
# 手作業で引用記号をつけるのは
# 面倒なものです。
5行程度なら良いのですが、 百行も千行も同じ操作を繰り返すのは我慢できないでしょう。

繰り返し操作の検出と自動実行

ユーザが同じ操作を繰り返しているとき、 システムがそれを自動的に検出して 残りの作業を自動的に実行してくれると便利でしょう。 下図はAppleにいたAllen Cypher氏が1990年ごろ開発した Eagerというシステムで、 ユーザがHyperCard上で同じような処理を繰り返したとき、 それを検出して自動実行を助けてくれるというものです。 ユーザが同じような操作を繰り返すと、 画面に「猫」が出現してユーザの次の操作を予測して表示します。 正しく予測してくれているようだと感じられれば、 ユーザは猫に頼んで残りの処理を自動実行してもらうことができます。 この例では、 “1. ”, “2. ” をユーザが入力しているので、 猫は次に “3. ” が入力されるだろうという予測を行なっています。

猫は普段は隠れているのですが、 繰り返し操作を行なったとき突然猫が出現すると驚いてしまいますし、 常に正しい予測を行なってくれるわけではないせいか、 Eagerは結局ほとんど流行しませんでした。

一方、高度な予測を行なうのはあきらめて、 完全にユーザ主導で単純な繰り返し処理を自動実行させるようにすればうまくいきます。 このような方針で Dynamic Macroというシステムを 作りました。

メールテキストを引用するとき
引用記号を先頭につけるのが
慣習ですが、
手作業で引用記号をつけるのは
面倒なものです。
このテキストに引用符をつけたいとき、 まず以下のように最初の2行だけに引用符を付加します。
# メールテキストを引用するとき
# 引用記号を先頭につけるのが
慣習ですが、
手作業で引用記号をつけるのは
面倒なものです。
ここでユーザが「繰り返しキー」を押すと、 Dynamic Macroはユーザの操作履歴を調べて繰り返しを検出し、 「行頭に“# ”を挿入して次の行に移動する」 という操作をマクロとして登録して実行します。 この結果テキストは以下のようになります。
# メールテキストを引用するとき
# 引用記号を先頭につけるのが
# 慣習ですが、
手作業で引用記号をつけるのは
面倒なものです。
繰り返しキーを連打すると、 キー入力のたびにマクロが実行され、 テキストは以下のように変化します。
# メールテキストを引用するとき
# 引用記号を先頭につけるのが
# 慣習ですが、
# 手作業で引用記号をつけるのは
# 面倒なものです。
Dynamic Macroの場合、 連打が必要ではありますが、 ユーザが驚くことはありませんし、 予測を間違う可能性は低いので、 かなり実用的に利用することができます。

Cyper氏は最近はIBMでFirefoxの操作を自動化する研究を行なっているようですが、 Webの上で様々な繰り返し操作が自動化できると嬉しいことは多そうです。

繰り返しの予測とデータ圧縮

データが片寄っている場合や、 データ中に同じ内容が繰り返し出現する場合は、 データを圧縮することが可能です。 人間が扱う大抵のデータはこのような性質を持っているので、 これをうまく抽出することにより効率的なデータ圧縮ができます。 逆に、効率的なデータ圧縮プログラムは データの片寄りや繰り返しをうまく検出するのが得意だということになります。 このようなアルゴリズムを利用すると、 ゲームで相手の手を予測できる可能性があります。

効率的なデータ圧縮を行なうアルゴリズムとして PPM (Prediction by Partial Matching)法 というものがあります。 PPM法では、データの中の文字列出現頻度を計算することによって 次の文字の予測を行ないます。 たとえば「abracadab」というデータの次にどの文字が来るか予測する場合、

  1. 「a」は4回、「b」は2回出現している
  2. 「b」の後に「r」が続いたことがある
  3. 「ab」の後に「r」が続いたことがある
  4. ...
といった情報を累積して確率を推定します。 この場合、 (3)から考えると次の文字は「r」である確率が高いと思われますが、 (1)も考慮すると「a」の確率もある、という風に計算を行ないます。

この原理を使って じゃんけんゲームを作ってみました。 長く勝負すると必ず負けてしまうので、確かに効果的な予測が行なわれていることがわかります。

人間の行動や人間が目にするものは繰り返しで満ちています。 毎日同じような行動をしていると、 今日の行動記録は「昨日と同じ」のように圧縮可能になってしまうので、 歳をとるとだんだん時間がたつのが速く感じられてしまうのでしょう。 繰り返しの少ない/圧縮しにくい人生を送るために、 無駄な繰り返しを自動化するツールを活用しましょう。

第13回 貧乏な記録

頑張って作成した文章が何かのトラブルで全部消えてしまった! という経験を持つ人は多いと思います。 昔の計算機はあらゆるリソースが不足していたため、 重要なデータを編集している場合でも、 明示的にデータを時折ファイルにセーブして使うのが普通でしたが、 現在の計算機の速度や記憶容量を考えると、 何でも常にセーブするようにしても問題無いはずです。 極端な話、 1秒に10回キーボードをタイプするという行為を 1日10時間、100年間実行し続けたとしても、 10文字× 60秒× 60分× 10時間× 365日× 100年 = 13ギガバイトしか入力できないわけですから、 人間が入力/編集できる量はたかが知れています。 計算機の操作をすべて記録しておくようにすれば、 作成したデータが消えて困ることなどなくなるでしょうし、 以前作成した情報を取り出すこともできるはずです。 不要と思って捨てたデータが後で必要になることもありますし、 少なくとも自分が編集したデータぐらいは全部記録しておくべきでしょう。 リッピングしたDVDファイルなどをディスクの肥やしにしておくよりも、 自分の操作情報をすべて記録しておいた方が有益なことは間違いありません。

しかし現実には、 あらゆる編集操作を記録しているシステムはほとんど存在しないようです。 よく使われているワープロも表計算ソフトも 自動的にファイルをセーブしてくれる気配はありませんし、 データを入力して登録したと思ったら「データが間違っています」などと言って 入力フォームをクリアしてくれるWebサービスに癒されることも日常茶飯事です。 21世紀にもなってこのような状態が続いているということは、 あらゆる操作処理を記録しておくことの重要性がまだまだ認識されておらず、 貧乏根性がしみついているのが原因なのでしょう。

あらゆるシステムが駄目だというわけではありません。 一時流行したPalmの「メモ帳」には「セーブ」機能が存在せず、 入力した文字はすぐに内蔵メモリに書き込まれるようになっていたので データのセーブ忘れというトラブルは発生しませんでしたが、 残念ながらundo機能はありませんでした。 また Windows上のメモシステムとして定評のある 紙copiのように 自働セーブやundo/redoを充分サポートしているソフトウェアもありますが、 こういう製品はまだ少数派であり、 業界に浸透した貧乏根性の完治には時間がかかりそうです。

既存のシステムでも、 工夫次第で貧乏状態を脱出できる場合があります。 Unixユーザの間で昔からよく利用されてるEmacsエディタは、 ご多分にもれずセーブ操作をしなければデータは保存されませんが、 カスタマイズを行なうことによって問題を解決することができます。 山岡克美氏と高林哲氏が作成した auto-save-buffers というプログラムを利用すると、 0.5秒操作が止まるとすぐにファイルが自動的にセーブされるようになるので、 ファイルをセーブし損うトラブルを大幅に減らすことができます。 最近の計算機の場合、よほど巨大なファイルを編集する場合以外、 頻繁にファイルをセーブしても全く気になることはありませんし、 Emacsは強力なundo機能が装備されているので 以前の状態に戻すことも簡単です。 編集を完全に終了してしまうと以前の状態に戻すことはできませんが、 CVSSubversioin のような バージョン管理システム を併用することにより、 昔の状態に戻すこともできるようになります。

最近はWeb上のWikiで情報を管理することが多くなってきましたが、 ブラウザ上の編集インタフェースは激しく貧乏度が高いので、 編集中のデータをセーブし損ってしまうこともありますし、 一度編集すると昔の状態に戻すことができないのが普通です。 こういう状態が続くのは問題なので、 前回紹介した Web単語帳システムで、 「編集した情報はすぐに書き込まれる」 「任意の状態に戻すことができる」 という機能を実装してみました。

下図はラジオで聞いた “ready to prime time” という表現を単語帳に登録したもので、 意味、用例、関連情報が登録されています。

この状態でundoキーを何回か押すと下図のような状態になります。 “ready to prime time”というフレーズは辞書に載っていなかったため、 人に聞いたり検索し直したりして編集を行なったわけですが、 単語帳システムではundoキーを押すことによって編集履歴をすべてたどることができます。 また、データの古さに応じてバックグラウンドの色が変化するので、 いつごろ編集されたデータなのかを判断しやすくなっています。

このシステムには書込みボタンが存在せず、 編集結果はすべてセーブされるようになっています。 貧乏なシステムに慣れている人にとっては、 本当にデータがセーブされているのか不安になるかもしれませんが、 undo/redoで編集状況を確認することができればこういった不安は 減ってくるでしょう。

パソコンやWeb上で貧乏性が払拭されるにはまだまだ時間がかかるのかもしれませんが、 この程度の機能であれば簡単に実装できるので、 あらゆる場所でこのような機能が常識になってほしいものだと思います。

第12回 ネット集権主義

ネットが便利になるにつれて、 様々なデータをネット上で管理する機会が増えてきました。 私はメールを IMAPで管理しているので、 サーバ上のメールはどこからでも読むことができます。 重要な文書は CVSSubversionを使って ネット上のリポジトリで集中管理しているので、 どこのマシンでもダウンロードして編集することができます。 ネット上に置いたデジカメ写真は 自分コンテンツとして 楽しんでいますし、 自宅サーバ内の映画や音楽データはiTunesなどで共有して利用しています。 私の論文/記事/プレゼン資料などはすべて 自分のサイトで公開しています。 各種の共有サービスをうまく使うことにより、 誰でも簡単に情報をネット上で管理することができるように なってきたといえるでしょう。

ネット上でデータを管理することには多くのメリットがあります。 データを一元化できるので混乱が減りますし、 どこでもデータを参照したり見せたり共有したりすることができます。 JavaScriptやFlashなどのプログラムをネット上に置いておけば どこでもシステムのデモを見せることができます。 ローカルマシンで編集/作成した情報をネット上で保存/公開するという方法は かなり普及してきたといえるでしょう。 ネットになかなかつながらない状況だとデータ保存や閲覧ができないのが問題ですが、 時々は確実にネットに接続できる状況であればこのような運用方法が良いようです。 一方、常にネットに接続している環境であれば、 ネット上で提供されているワープロや表計算ソフトなどを利用して、 データの編集や作成もすべてネット上で行なうという方法が今後有利になってくるでしょう。

小さなデータの扱い

大きな文章/プログラム/図表のように、 こまめに編集が必要で気合いが入った管理が必要なデータについては、 今のところはローカルマシンで編集する方が楽なので、 もっぱら保存と共有のためにネットを利用するという使い方が続くと思われますが、 ちょっとしたメモのような小さなデータについては最初からネット上で作成/編集する方が便利です。 パソコンにメモを書いたとき、 別のマシンからそのデータにアクセスできなくて困ったり、 そもそもどのマシンのどこに書いたのかわからなくなってしまうことがよくありますから、 小さなメモなどもネット上で一元管理したいものですが、 そのようなステムは何故かあまり普及していないようです。 私は、 ローカルマシンで書いた小さなメモは日付/時間情報をつけてネットにアップロードすることによって 一元管理するようにしているのですが、 いちいちアップロードするのは面倒ですし、アップロードを忘れてしまうこともあります。 そもそも最初から直接ネット上で編集するとかすれば 面倒なことを考える必要が無くなるでしょう。

Wikiによるメモ管理

私はここ数年ずっとWikiを使ってメモを管理しています。 Wikiは複数ユーザで情報を共有するために使うのが普通ですが、 ブラウザを使ってネット上で情報管理ができるという利点があるので、 個人的なメモとして使うのにも便利です。

下図は、私が個人的に使っているWikiと 同じ原理で動いているWeb単語帳です。 ネットで読んだ記事中に知らない単語があったとき、 ネットで単語の意味を調べ、 ネットに登録して勉強に利用するという使い方ができます。 単語から写真検索を行ない、関連した画像を登録しておけば、 その印象を使って単語を記憶しやすくなります。

一般的なWikiでは、編集モードでデータを編集してから 書込み操作を行なう必要があるので面倒ですが、 Web単語帳では クリックされた行は以下のように編集可能になり、 編集結果がすぐに書き込まれるようになっています。 メモ書きの場合はこのような手軽さが重要でしょう。

いつでもどこでもネットに確実に接続できる時代になれば、 メモもメールも文書もネット上で書き始めるようになるかもしれません。 ネット上の様々なデータを簡単に操作したり編集したりする方法は 今後ますます重要になってくるでしょう。

第11回 マイニング伝説

データが大量にあるとき、 特殊な計算を行なうことによって隠れた有用な情報を引き出せる可能性があります。 大量のデータから有益な情報を抽出する手法はデータマイニングと呼ばれています。

データマイニングの効果に関しては ビールと紙オムツの逸話が有名です。 米国の大手スーパーで商品の購入の相関を調査したところ、 週末の夜には何故かビールと紙オムツが同時に売れるということが判明したため、 両者を同じ売場に置いたところ売上が大きく増加したというもので、 スーパーでオムツを買って帰れと奥さんに言われた旦那が ついでにビールも買って帰るのだと説明されることが多いようです。

販売データから自動的にこのような関係を計算できるというのは面白い話で、 データマイニングの威力を示す好例として有名なのですが、 残念ながらこれは実話ではなく、 「あるスーパーの調査では金曜の夕方にビールと紙オムツの売上が多かった」という 結果に尾鰭がついた都市伝説だというのが 真相のようです

データマイニングの威力を示す一番有名な話が都市伝説だったというのはお寒い話ですが、 データマイニングそのものが無力だというわけではありません。 最近はネットのおかげでデータの質も量も増えていますし、 様々な新しい分析手法も提案されてきているので、 将来はデータマイニングがもっと有効に利用されるようになると思われます。

本棚演算

この連載で何度か紹介した 本棚.orgという書籍情報共有サイトでは、 ユーザが自分の作った「本棚」に自由に本を登録することができるようになっており、 どの本棚にどの本が登録されているかという情報をもとにした 「本棚演算」によって データマイニングを行なうことができます。

Amazon.comで本などを検索すると、 「この商品を買った人はこんな商品も買っています」 といって関連商品を薦められることがあります。 商品の売れるパタンをもとにしたデータマイニングによってこのような 情報が計算されているわけですが、 特定の個人の購買パタンにもとづいて計算が行なわれているわけではなく、 全ユーザの購入パタンから計算した結果としてこのようなお薦め商品が提示されるようになっています。 Amazonはユーザの数が非常に多く、 個人ごとにパタンを計算することがほぼ不可能なのでこのような手法がとられているわけですが、 本棚.orgではユーザ数は1万程度ですから、 ユーザごとに計算を行なうことも難しくありません。

本棚.orgではユーザが自由に作成した本棚ごとに複数の本が登録されています。 「増井の本棚」に 「Blue Note Cover Art」 「逆風野郎」 などの本が登録されており、 「svslabの本棚」に 「逆風野郎」 「スモールワールドネットワーク」 などの本が登録されているとき、 全本棚データは以下のような本棚行列で表現することができます。

 
増井の本棚
1
1
1
1
0
1
svslabの本棚
0
1
0
0
0
1
桐華の本棚
0
0
0
1
1
0

この表から以下のようなことがわかります。

この事実をもとに、以下のような推論を行なうことができます。 このような推論はあまりあてにならないかもしれませんが、 本棚行列の行や列データに対して様々な本棚演算を行なうことにより、 表を見ただけではすぐにわからない各種の情報を抽出することができる可能性があります。

「増井の本棚」行と「svslabの本棚」行を加算すると以下のような行列が得られます。


 
増井+svslab
1
2
1
1
0
2

この演算の結果、「逆風野郎」や「スモールワールドネットワーク」は人気があることがわかります。

また、 「増井の本棚」行から「svslabの本棚」行を減算すると以下のような行列が得られます。


 
増井-svslab
1
0
1
1
0
0

「増井の本棚」と「svslabの本棚」は似ているにもかかわらず 「アカギ」「掌の中の小鳥」は「svslabの本棚」に含まれていないため、 これらの本は「svslab」への推薦候補と考えることができます。

このような計算を本棚行列の行や列に対して行なうことにより、 様々な有用な情報を取得することができます。 たとえば、私が読むべき本を捜したい場合、 まず私の本棚と同じような本が登録されている本棚を捜し、 そこで登録されているにもかかわらず私の本棚には含まれていないような本を 捜せばよさそうです。 手順は以下のようになります。

この結果は以下のようになります。
17 4839912653 Code Reading―オープンソースから学ぶプログラミングテクニック
17 4844317210 Rubyソースコード完全解説 (青木 峰郎, まつもと ゆきひろ)
14 4314005564 利己的な遺伝子 (リチャード・ドーキンス, 日高 敏隆, 岸 由二, 羽田 節子, 垂水 雄二)
14 4797318325 Wiki Way―コラボレーションツールWiki (ボウ ルーフ, ウォード カニンガム,
14 4756136494 プログラミング作法 (ブライアン カーニハン, ロブ パイク)
14 489471163X 計算機プログラムの構造と解釈 (ジェラルド・ジェイ サスマン
13 4798102040 コモンズ (ローレンス・レッシグ, 山形 浩生)
...
確かに私が買いそうな本が並んでいますが、 計算機関連の本が多すぎますし、 自分の持ってる本が含まれているので、 という演算を追加した結果、以下のような推薦本リストを得ることができます。 確かに私が欲しいと思うような本のリストになっているようです。
10 406313248X 攻殻機動隊 (1) (士郎 正宗)
10 4140807431 新ネットワーク思考―世界のしくみを読み解く (アルバート・ラズロ・バラバシ, 青木 薫)
9 4756133126 ロボットにつけるクスリ―誤解だらけのコンピュータサイエンス (星野 力)
9 4167330083 ぼくはこんな本を読んできた―立花式読書論、読書術、書斎論 (立花 隆)
7 4063211444 げんしけん (1) (木尾 士目)
7 4061495755 動物化するポストモダン―オタクから見た日本社会 (東 浩紀)
7 410401303X 博士の愛した数式 (小川 洋子)
7 415011451X しあわせの理由 (グレッグ イーガン, Greg Egan, 山岸 真)
本棚.orgと同様の構造を持つデータはいろいろあります。 例えばSNSにおけるユーザとコミュニティの関係は、本棚と本の関係と同じ構造になっていますから、 同様の演算によるデータマイニングを行なうことが可能です。

人間情報のマイニング

社会で最も重要な情報は人間に関する情報ですから、 データマイニングの本命は人間関係のマイニングだといえるでしょう。 mixiのようなSNSの上では人間の交友関係や趣味がかなりわかりますし、 積極的に他人の評判を書けるSNSもありますから、 ネット上の情報をもとにして、かなり正確に個人の情報を得ることができると考えられます。 mixiではまだ高度なデータマイニングは行なっていないようですが、 ブログのような公開情報だけを利用してもかなり有用な情報を取得することが可能です。

Cogoloというサイトでは、 公開情報から人物情報をマイニングするサービスを提供しています。

Cogoloで「増井俊之」を検索すると、 Web上の公開情報をもとにして様々なマイニングを行ない、 以下のような結果を表示してくれます。

謎のキーワードも沢山表示されていますが、 写真や人脈を含め結構正確にデータマイニングが行なわれていることがわかります。 間違った写真などは誰でも修正できるようになっており、 自動的なデータマイニング技術と人力パワーをうまく融合して利用できるようになっています。 Cogoloの精度はまだまだ充分とはいえませんが、 新しいマイニングアルゴリズムや人力パワーを融合することにより、 Webの検索が新時代を迎えるかもしれません。

第10回 登録の時代

Web2.0的な時代になって、 誰もが情報を発信したり登録したりすることが多くなってきましたが、 発信や登録を行なう人の割合が多いほど情報の価値は高まります。 ソーシャルブックマークは便利なものですが、 URLを登録する人が多くてはじめて価値が出るものであり、 誰も登録しなければ意味はありません。

あるページが面白いと感じたとき、 そのページをソーシャルブックマークに登録する人の数は 恐らく閲覧する人の数の1/100以下だと思われます。 URLを登録するには時間と手間がかかりますし、 適切なタグをつけるためには頭も使う必要があるからです。

ソーシャルブックマークに限らず、 データを登録する作業は大抵の場合面倒ですから、 積極的にデータを登録している人は多くありません。 かな漢字変換のように日常的に利用する重要なシステムでも、 マメに単語登録してる人はかなり少数派だと思われます。 毎日のように使うシステムですから、 よく使う単語や表現を登録しておけば便利に決まってるのですが、 登録処理は面倒な気がするので、 毎日苦労して切り貼りしながら入力を行なっている人も多いと思われます。

受動的に計算機を利用する ような方法に比べると、 クリックしたり検索したりする操作は面倒なものですが、 検索対象となるデータを登録する作業は輪をかけて面倒であり、誰もが簡単に行なえるものではありません。 しかしWeb2.0的な情報共有を行なうためにはデータの登録は不可欠です。 誰でも簡単に情報の登録が行えるようにするためには、 完全に登録を自動化するか、 登録操作を非常に簡単にする必要があります。

全てを自働登録する

面白いWebページをソーシャルブックマークに登録するのは手間ですが、 自分が見たページをすべてブックマークしてしまうことにすれば登録作業を自動化することができます。 そんなことをするとブックマークの数が膨大になってしまうのが心配ですが、 実はひとりの人間が見るWebページの数は大したことはありません。 私は最近自分がアクセスしたページのURLをすべて記録しているのですが、 平均すると1日にアクセスするページは600ページ程度のものであり、 掲示板やSNSとかを除くとせいぜい100個程度だということがわかりました。 最近は自分の行動をすべて記録するライフログというものが流行しつつあるようですが、 とにかく何でも記録するという富豪的なアプローチは有効です。 どこかに登録さえされていれば後でなんとか検索できる可能性はあります。 私の場合、この記録システムのおかげで、昔見たページがみつからなくて困ることはほとんどなくなりました。

検索と同じ操作で登録する

ひと昔前は情報検索は特殊な技術でしたが、 検索エンジンの進歩のおかげで、最近は誰もが日常的に情報検索を行なうのが普通になりました。 最近は何かを人に聞くとすぐ「ググれ」と言われてしまいますし、 へたをすると「ググれカス」と罵倒される始末ですが、 最近の検索システムの発展はめざましいものがあり、 ネット上の検索が日常生活の一部となったのは確かです。 検索操作に比べると登録操作はまだ面倒だと認識されているようで、 ソーシャルブックマークにURLを登録しなくても罵倒されることは少ないようですが、 検索と同じ程度の手間で情報が登録されるようになれば状況は変わってくるかもしれません。

下図は テキストエディタEmacsで予測型入力システムPOBoxを利用しているところですが、 ここで「ソーシャルブックマーク」という単語を 「scb」という読みで登録する例を示します。

POBoxは、辞書から検索した単語を選択するという操作を繰り返すことによって テキスト入力を行なうシステムです。 Emacs版POBox上で「s」を入力すると、下図のように、 読みが「s」で始まる単語が候補として表示されます。

「ソーシャルブックマーク」という単語は登録されていませんから、 「scb」と入力すると候補は何も表示されません。

「ソーシャルブックマーク」を登録したいときは、 下図のように「ソーシャルブックマーク」という単語を選択して クリップボードにコピーしておきます。

この状態で「scb」を入力すると、すでに登録されている単語に加え、 クリップボード内の単語が候補として表示されます。

候補から「ソーシャルブックマーク」を選択して確定すると、 「ソーシャルブックマーク」という単語が「scb」という読みで辞書に登録されるので、 その後は「sc」などと入力するだけで「ソーシャルブックマーク」が候補に出るようになります。

このように、特殊な登録コマンドを利用せず、 普通の検索操作を行なうだけで自動的に登録も行なわれるようにすれば、 単語登録などを簡単に行なうことができるようになるでしょう。

登録のための手間を最小にする

上の単語登録の例では、単語や読みはちゃんと指定する必要がありますから、 まだ少し面倒な感じは残っているといえます。 ゴチャゴチャ考えずにとにかく登録してしまう方が便利なこともあるでしょう。

デスクトップ上に表示されている画面を簡単な操作で切り出してWeb上にアップロードして登録してしまう Gyazoというシステムを作ってみました。 Macintoshのgyazoプログラムを起動するとカーソルが領域選択モードに変化するので、 ドラッグして画面上の領域を指定するとそのデータがすぐにWeb上にアップロードされて ブラウザで表示されます。

Gyazoを利用すると、 現在見ている画面の一部を最小限の手間でWebにアップロードすることができますが、 その手間も省きたい場合は 気合いブックマークシステムのような手法で自動的にアップロードを行なうようにすれば 良いかもしれません。


現在は情報を検索する方法が主に注目されていますが、 Web?.0の時代には情報の登録方法も同じぐらい重要になってくるでしょう。 情報を登録しないと罵倒される時代も近いかもしれません。

第9回 なんでも自動処理

同じような操作を何度も実行しなければならないとき、 手間を省くために操作を自動化したくなります。 たとえば、 テキストファイルの行の先頭に “> ” という文字列を追加していきたいとき、何度も “> ” をタイプするのは面倒ですから、 なんらかの方法で自動化できれば便利です。 エディタに「n行にわたって行頭に文字列を追加する」のような機能があればいいのですが、 様々な自動化要求すべてに対応することは不可能ですから、 特殊な自動化処理を行ないたい場合は、 なんらかの方法でユーザが自力でプログラムを作成して計算機に与える必要があります。

ユーザが「操作マクロ」を定義できるエディタは多いですし、 本格的なプログラミングが可能なEmacsのようなエディタもありますが、 こういったプログラミングは敷居が高く難しいものですから、 たいていはあきらめてこつこつ作業するのが普通だと思います。 しかし、 手軽にちょっとした自動化処理を指示できると嬉しいでしょうから、 誰でも簡単なプログラミングを行なえるようにする エンドユーザプログラミング例示プログラミング という考え方が提唱されています。

本格的なプログラミングは難しいかもしれませんが、 料理のレシピのような手順書であれば簡単に書いたり利用したりできますし、 大抵の人はアナログ時計のアラームをセットできるわけですから、 環境さえ用意すれば誰でも簡単なプログラミングができるようになる 可能性は充分あるといえるでしょう。

エンドユーザプログラミング

操作手順のような簡単なプログラムを 誰でも手軽に作って利用できるようにしようというのが エンドユーザプログラミングの考え方です。 テキストだけ利用するよりも図を併用した方がわかりやすいことが多いので、 ビジュアルプログラミング がよく採用されています。 ビジュアルプログラミングの研究は長い歴史がありますが、 まだ本格的なプログラミングに利用されているとはいえません。 しかし、音楽家の間では Max というビジュアルプログラミングシステムが広く利用されていますし、 Lego Mindstorms のような教育システムでもビジュアルプログラミング言語を採用することによって、 プログラムの敷居を下げるのに成功しています。

MacintoshにはAutomatorという 簡単なビジュアルプログラミングシステムが搭載されており、 アプリケーション操作を自動化するプログラムを手軽に作れるようになっています。 下図は、人間を表現するアイコンへファイルをDrag&Dropすることによって その人にファイルをメールで送るというプログラムを Automatorで作成したものです。 これは 顔アイコンシステム で提案されているものですが、 Automatorを使うとこのように非常に簡単に実装することができます。

例示プログラミング

プログラミングが難しいのは、 抽象的思考が必要になるからかもしれません。 レシピを記述したり 目覚まし時計をセットしたりする操作は具体的だからわかりやすいといえるでしょう。 文字盤の「7」のところに針をあわせるという操作は 時刻が文字盤の上に具体的に表現されているのでわかりやすいのですが、 昔のビデオデッキのように「7:00」のような数字を入力する操作が必要な場合、 時刻やチャンネルの数字による表現が抽象的でわかりにくいため、 ビデオの予約は難しいという印象が定着してしまったのでしょう。 ビデオの録画予約が苦手な人でも、 チャンネルを変えたり録画ボタンを押したりすることはできるでしょうから、 このような具体的な操作だけで予約ができるようになっていれば よかったのかもしれません。

例示プログラミングの手法を使うと、 抽象的な表現を利用せず、具体的な操作だけをもとにして プログラミングを行なうことができます。 私が作成したDynamic Macroというシステムでは、 テキストエディタ上で何か同じ操作を二度繰り返すと、 繰り返した操作がプログラムとして登録され、 その操作を何度も繰り返し実行させることが可能になっています。 例えば “> ” という文字列を二度入力した後で「繰り返しキー」を押すことによって この操作がプログラムとして登録され、 このキーを押すだけで自動呼び出しすることができます。 ユーザはプログラミングを行なっている意識が無くても、 同じことを二度実行しただけでその操作がプログラムとして登録されるのが特徴です。

このように、 例示プログラミングシステムでは 具体的な操作を行なうことによってプログラムを自動生成することができます。 複雑なプログラムを作ろうとすると例を沢山与える必要がありますが、 単純なプログラムを作りたい場合は有効な手法だといえるでしょう。

自動化の展望

ユーザが簡単にプログラミングを行なうためのツールや環境は最近増えているようです。 前述のAutomatorはあらゆるMacintoshに標準装備されていますし、 Firefoxの動作を自動化する ChickenfootMozRepl のようなシステムも手軽に使えるようになりました。 ちょっと前のパソコンではプログラミング環境を用意するのが大変でしたが、 最近はあらゆるブラウザがJavaScriptのプログラミング環境を持っているので プログラミングを始めるための敷居はかなり低くなっています。 これらを活用した例示プログラミング/エンドユーザプログラミングシステムが これから増えてくることでしょう。

現在はプログラミングの対象はEmacsとかMacアプリケーションとかブラウザのような パソコン上のソフトウェア限られていますが、 将来的には全世界のセンサやアクチュエータを自在にプログラミングできるように なってほしいものです。 「近くに友達がいれば連絡する」とか、 「株価が上がったら株を売る」 といったプログラムを誰でも簡単に作って利用できると便利でしょう。 「近く」のような概念は普通のプログラム言語では簡単に表現することができませんが、 こういった漠然とした概念はビジュアルプログラミングや例示プログラミングを 利用した方が指定しやすいかもしれません。 ユビキタスコンピューティングにおける様々な自動化を支援する環境に 今後期待したいところです。

第8回 秘密情報のコントロール

他人に見られると困る情報をパソコンで扱いたいことはよくあります。 怪しげな動画の扱いには注意がいりますし、 秘密の日記や悪口/愚痴の類も同様です。 秘密の計画や帳簿、人事考課のような真面目な情報も他人に見られると困ります。

パソコン上ではこういった微妙なデータも普通のデータも ファイルとして扱うのが普通ですが、 秘密のファイルを扱うのは結構面倒なものです。 Mac OSのようなUnixベースのシステムでは、 あらゆるファイルに対してパーミッションが定義されており、 他人からの読み書きを許可したり禁止したりできるようになっていますが、 ひとりで使うノートパソコンなどでは このような保護はほとんど意味がありません。 また、 ファイルの隠し属性を設定することによって ファイルが見えないようにすることもできますが、 このような設定は簡単に解除できますから 本当に秘密のファイルを扱うのには適当ではありません。 ファイルを真剣に隠すためには、 置き場所に関して 涙ぐましい努力をしたり、 暗号化を行なったりする方法もありますが、 置き場所やパスワードを忘れてしまったりすると大変です。 最近は、鍵のような特別の装置をUSBなどでパソコンに装着したときだけ 秘密のファイルが見えるようになるシステムが販売されています。 この方法であれば、 秘密のファイルを扱うために秘密のコマンドやアプリケーションを利用する必要がなく、 装置を持ち歩くだけでよいので便利です。

秘密状態を明示する

置き場所を工夫する場合でも鍵などを利用する場合でも 秘密のファイルを扱うのには気を遣うものですが、 秘密のファイルを扱っていることが周囲の人間にわからない場合、 余計なトラブルが生じる可能性があります。 秘密のファイルを編集中の人のそばを通りかかると、 その人は驚いてバタンとパソコンを閉じてしまうかもしれませんが、 こういう事態は両者にとって気分が良いものではないでしょう。 大事な秘密ファイルを編集していることがあらかじめわかっていれば、 近付かないように注意することができるはずです。 パソコンを使って何をしているのかが遠目にわからないという特徴は、 内職には便利ですが、 このような場合はトラブルの原因になる可能性もあります。

モンゴルの人々が草原でエッチなことをするときは、 遠くから見えるようにをたてておいて他人が近付かないようにするのだと 聞いたことがあります。 日本の人々が計算機でエッチな画像を見たり秘密のファイルを編集したりするときも この作戦が利用できそうです。 傘が立ったパソコンには近付かないのが無難だと人は思うでしょうし、 傘を立てている本人も緊張感が持続するでしょう。 前回紹介した 気合いブックマークと同じような仕組みを使い、 傘や旗などを利用して秘密状態を細かく制御するようにすれば、 秘密を扱う人も周囲の人もストレスが減るでしょう。

下図は産業技術総合研究所の塚田氏が作った秘密制御システムで、 傘を立てるかわりにノートパソコンのディスプレイの傾きによって 秘密の具合を制御しています。 この状態ではディスプレイは充分開いているので、 ディスプレイには右側のような平凡な画面が表示されています。

少しディスプレイを閉じ気味にすると、 下図のように個人情報を示すアイコンも表示されるようになります。

さらに傾けると、ファイル共有ソフトや秘密動画のアイコンが表示されます。 ディスプレイの傾きによる制御は傘や旗ほど派手ではありませんが、 ディスプレイを閉じ気味に仕事をしていれば わざわざ覗きに来る人は少ないでしょう。

ファイルの暗号化システムなどは現在多くのOSに搭載されていますが、 現状の認証システムと同じような問題点を持っているためか、 まだまだポピュラーにはなっていません。 普通の生活において他人のプライバシーを気にするのと同じぐらいの感覚で 自分や他人の秘密情報を尊重できるようなシステムが普及してほしいものです。

第7回 受動的インタフェース

テレビ画面でWebを楽しむ「ウェブテレビ」というものが注目されたことがありますが、 全く流行せずに消えてしまいました。 普及しなかった理由はいろいろあるでしょうが、 そもそもパソコン上でブラウザを使うときは、 前かがみな姿勢能動的に面白い情報を捜すスタイルが普通なのに対し、 テレビというものは ソファーにのけぞったり床に寝転がったり、 余裕の体勢受動的に利用するのが普通ですから、 両者を同じ機械で扱うというのはそもそも無理があったような気がします。

パソコン上でも何もかも能動的に操作をするのが良いわけではありません。 プログラムを起動して時刻を知るよりも 画面のどこかに時計を表示しておく方が楽ちんですし、 最近は「Widget」を使って 天気やニュースなど画面に様々な情報を常に表示させている人もいます。 こういう便利系の機能だけでなく、 ぼーっと見ていても楽しめる面白系の機能があれば、 能動的に頑張らなくてもネットを活用することができるようになるでしょう。 レストランでメニューを読んで料理を注文するのは面倒ですが、 飲茶や回転寿司のように勝手に出てきた料理を食べるのは簡単です。 パソコンでややこしい操作をするのは面倒ですが、 面白い情報が自動的に出現するようであれば、 何も操作する必要が無いので楽ちんです。

このような受動的なインタフェースについて、 様々な研究が行なわれています。 たとえば、 何も操作しなくても面白い情報をみつけたり 写真を楽しんだりすることができる 眺めるインタフェースというものが提案されています。 下図のMemoriumは眺めるインタフェースの実装のひとつで、 キーワードとそのGoogle検索結果が画面上を浮遊し、 ぶつかったキーワードから新たな検索が実行されるという動作が繰り返されるうちに、 関連ある情報や思いがけない情報が自動的に表示されるようになっています。 自動的に表示される情報をぼーっと見るのは癒し系システムとしても使える かもしれません。

表示対象の選択

Memoriumでは検索結果を表示するようになっており、また 写真などを自動的に表示するスクリーンセーバもよく使われていますが、 検索結果や自分の写真はあまり面白い情報ソースとはいえません。 テレビ番組のように、次から次に新しく面白い画面が表示されて欲しいものです。 面白いWebページを自動的に表示し続けるシステムがあれば、 テレビ程度に楽しむことができるようになるかもしれません。

様々なWebページをランダムに表示しても面白いとは思えませんが、 最近は面白いブログなどの更新情報がRSSとして配信されていますし、 面白さがブックマークの数としてすぐわかるようになりましたから、 このような人力パワーを利用することによって、 新しくて面白いWebページを自動的に選んで眺めることができるようになってきました。 人力パワーを利用したサービスは今後も増えるでしょうから、 他力本願で受動的な楽しみ方がこれから期待されます。

というわけでRSSで配信されたWebページをテレビのように眺める FeedTV というサービスを試作してみました。 “masui”というIDを使う場合、 受信したいRSSを http://feed-tv.com/masuiのようなページに登録しておけば、 下図のように http://feed-tv.com/masui/playにアクセスして ページを自動的に再生することができます。 画面では Slashdotが表示されていますが、数秒ごとに異なるページが順番に表示されます。 気のきいたネットウォッチャーのブックマークを登録しておけば、 そのウォッチャーが気に入ったページをぼーっと眺められるようになります。

能動と受動の切り換え

受動的に眺めていた情報をもっと詳しく見たくなることもありますし、 つまらなければさっさと次のページに移ってほしい場合もあります。 FeedTVでは、再生/停止ボタンの他に 「保存」「捨てる」「あとで読む」「これはひどい」というボタンで ページを評価できるようになっています。 普段は順番にページを表示し続けますが、 これらのボタンが押されると以下のような判定を行ない、 ブックマークしたり再表示を制御したりします。 こういう情報を人力で追加したものが沢山集まれば 人力パワーをさらに有効利用できるはずです。
 重要度再表示の必要性
保存
捨てる × ×
あとで読む
これはひどい ×
(操作なし) ?
いちいちボタンを押すのは面倒なので、 センサを活用してこういう意図を簡単に伝えられるようにしておくことも考えられます。 下の写真はパソコンの下に体重計を置くことで実装した 気合いブックマークシステムです。 面白いページを見たとき「おおっ」と身をのり出して体重計に4Kg以上の重みがかかると、 現在見ているページがブックマークされるようになっています。 このような自然な行動で「これはひどい」などを表現できるセンサを用意すればいいでしょう。

Calm Technology

ユビキタスコンピューティングの提唱者であるMark Weiserは、 計算機が自己主張することなく人間をサポートする Calm Technologyがこれから重要であると 主張していました。 身の回りの機械は人間が能動的に操作しなければ使えないものがほとんどですが、 何も考えなくても便利に使える自働ドアのようなシステムもあるわけですから、 「使いやすい機械」について考える前に、 「人間がぼーっとしててもちゃんと役にたつ機械」の可能性を考えることが重要かもしれません。

第6回 なんでもフラクタル

写真の「ロマネスコ」というカリフラワーのように、 全体と一部分がどこでも同じような形をしているものを フラクタル構造といいます。 フラクタル構造は様々な面白い性質を持っており、 比較的簡単に美しいCGを生成するといった応用も多いので、 一時かなり話題になりました。

単純なフラクタル構造として、 上図のように直線を三分割して折り曲げることを無限に繰り返してできる コッホ曲線というものが知られています。 縮尺を大きくするたびに折り曲げを行なうことにすると、 縮尺を3倍にすると長さは4倍、 縮尺を9倍にすると長さは16倍... という具合に縮尺と長さは変化しますが、 長さと縮尺の対数をとると、その比は常にlog(4)/log(3)=1.2618という一定の値になり、 この値はフラクタル次元と呼ばれます。

両対数グラフ上にプロットしたグラフが直線になるような関係があるとき、 これらはべき乗則(冪乗則/Power Low)に従うといいます。 フラクタル構造をもつ図形のパラメタはべき乗則に従いますが、 一見フラクタル構造と関係無いところでもべき乗則が成立することがよくあります。 たとえば、文章中でk番目に多く出現する単語の出現頻度は1/kに比例するという Zipfの法則 と呼ばれる経験則がありますが、 この関係は下図のようにべき乗則に従います。

また、富豪の収入もべき乗則に従うと言われています。 世界の長者番付データを もとにしてグラフを書くと下図のようになり、 確かにべき乗則が成立していることがわかります。

また最近は インターネットやSNSの様々なパラメタがべき乗則に従うことが発見されており、 これらのフラクタル的な「スケールフリー」構造に関する研究が 注目されています。 べき乗則が観測される場合に必ず厳密なフラクタル構造が存在するとは限りませんが、 何らかのフラクタル的な性質が存在するということは可能です。

ご近所のべき分布

世の中の多くのものは 釣鐘状の正規分布 に従うと一般に信じられている気がしますが、 実際は正規分布をとる現象は世の中では小数派です。 単語の出現頻度も富豪の収入も正規分布にならず、 べき乗則に従うべき分布に従うわけですが、 このような分布は実は全く珍しいものではなく、あらゆる場所で観測することができます。

下の図は、私のホームディレクトリに入っているファイルを 大きさでソートして両対数グラフ上にプロットしたものですが、 単語の出現頻度と同じように、かなり奇麗なべき分布になっていることがわかります。

また下図は、私がメモに使っているWikiサイトのページアクセス回数を 回数でソートして並べたものですが、 やはり奇麗なべき分布になっています。

私のWikiページではアクセス時刻もすべて記憶しているのですが、 アクセスの時間間隔をプロットすると下図のようになり、 やはりべき分布に従っていることがわかります。

このように、私の個人的なファイルについて調べてみると、 あらゆるパラメタがべき分布していることが判明してしまいました。 私は大きなテキストファイルも小さなテキストファイルも持っていますし、 大きな画像ファイルも小さな画像ファイルも持っています。 私の計算機にはこれらの雑多なファイルがまとめて入っているという点が フラクタル的性質の元になっているのでしょう。

メーリングリストのトラフィック、交通渋滞、ネットワークトラフィックなど、 様々な複雑な事象においてべき分布が報告されており、 その発生する理由について様々な解析が行なわれていますが、 どうやら、強い制約が存在しない場合、ほとんどあらゆる状況において 複雑/大規模な事象はべき分布に従う と断言してしまって大丈夫な気がします。 80:20の法則として有名な パレートの法則や、 最近流行の ロングテール現象も すべてべき分布にもとづく性質の表現であり、 このような性質はあたりまえのものなのかもしれません。 ネットワークのような複雑なシステムにおいてはフラクタル的なべき分布が出現するのは当然であり、 その現象が最近発見されて注目されたという点の方が不思議な気がします。

フラクタル性の応用

複雑なシステムにおいてべき乗則が出現する理由を説明するための 様々なモデルが提案されています。 しかし、あるモデルによって計算した結果が実際と一致していたとしても、 全く異なる方法でも同じような結果が得られる可能性も高いので、 本当にそのモデルが成立しているのかを証明することは難しそうです。 一方、 べき乗則の出現理由についてはわからなくても、 べき乗則を効果的に利用する方法を工夫することは可能です。 世の中のものはほとんどがフラクタル的であることを理解したうえで、 それを考慮したシステムを設計して利用することを考えるとよさそうです。

電話やネットワークのような大規模システムは最初から統計的性質を充分考慮して作成されており、 フラクタル的性質に充分対応できる仕様になっています。 しかし個人で使うパソコンのような小さなシステムでは、 フラクタル的性質は全く考慮されずに設計されています。 ファイルの構造がフラクタル的、メールの届き方もフラクタル的、メニューの使い方もフラクタル的... だという性質がわかっているのであれば、 それに対応したシステムを設計するべきですが、 現在このような性質はほとんど考慮されていません。 よく使うメニュー項目はロングテールな機能とは別に扱う方が良いでしょうし、 大きなファイルと小さなファイルは別のディスクに格納する方が良いかもしれません。 フラクタル性/べき乗則について充分配慮したシステムの設計について 考えてみると面白そうです。

第5回 気分の問題

何かのよしあしを判断する場合、 実際の価値よりも気分の方が問題になることが多いものです。 買おうとする自動車が安全かどうか判断しようとする場合、 安全度を示す各種の数値も大事ですが、 なんとなく感じられる車体の安全感の方が重視されるでしょう。 飛行機事故に逢う確率よりも自動車事故に逢う確率の方がはるかに高くても、 地上の方が安心感があるので飛行機の方が怖がられるものです。 何かを買う場合、実際の値段よりも割安感が重視されることが多いようです。 1杯1000円のコーヒーは高すぎると感じるでしょうが、 パソコンが1万円ならば安いと感じられます。 このように、 実際の数値よりも気分の方が重要に感じられることは多いといえるでしょう。

セキュリティシステムの場合も安心感が重要です。 ギザギザの多い鍵はいかにも安全そうに見えますし、 記号を羅列した長いパスワードはいかにも破られにくそうな感じがするものですが、 ギザギザな鍵でもピッキングで簡単に開いてしまうことがありますし、 複雑なパスワードでも管理が悪ければ意味がありません。 本当に安全かどうかは関係なく、 なんとなく安全感が感じられるシステムならばユーザは喜んで使うものです。 強力な暗号も弱い暗号も複雑感は同じようなものに見えるので、 強い暗号の利用をいくら推奨してもなかなか使ってもらえません。

計算機の使いやすさを判断するときは、 実際の作業効率よりもユーザの満足感の方が重要です。 多くのアプリケーションにおいて、 メニュー項目として用意されている機能は大抵 キーボードショートカットとしても用意してあり、 マウスを使って呼び出すことも 特定のキーを叩いて呼び出すこともできるようになっているのが普通です。 メニュー操作は遅いけれども初心者でも使えるのに対し、 熟練ユーザが効率良く使うためにキーボードショートカットが用意されているのだと 一般に信じられていますが、 Macintoshのインタフェースを開発したことで有名なBruce Tognazzini氏 (Tog)が 昔Appleで沢山の実験を行なった結果、 常にキーボードショートカットはマウス利用よりも遅い ということが判明したそうです。 「そんな馬鹿な! 複雑なマウス操作がキーボード操作より速いわけがない!」と思う人は多いでしょうし、 実験に参加したユーザ自身もキーボード操作の方が速かったと感じていたそうですが、 計測結果を見ると常にマウス操作の方が速く、 いくら実験してもこの結果は変わらなかったということです。 Togの考察によれば、 ショートカットキーの利用には高次レベルの思考が必要になっており、 そのときユーザは一時的に記憶喪失になっているため、 短い時間で操作できたように錯覚してしまうのだろうということでした。

Togの実験結果がいつでも成り立つのかは不明ですが、 このような結果がいくら示されても、 熟練ユーザがショートカットキーを好むという傾向は変わらないでしょう。 実際の操作時間がどうであれ、 ショートカットキーの方が効率良く仕事してる感がありますし、 使いこなしてる感のようなジマンパワーも得られるからです。 ユーザにとっては結局このような気分が最も大事なので、 操作時間などを客観的に評価した結果にもとづくよりも、 好きか嫌いかといった主観を重視してインタフェースを設計する方が 望ましいかもしれません。

気分商法

うっかり勧誘について行くと、会場の雰囲気に飲まれて 激しく儲かる感私にもできる感を植えつけられることがあります。 この気分を持続するために定期的に会合を開いて 達成感を盛り上げる努力がされていることもあります。 困った商法に限らず、 普通の小売店も常に割安感を表現する広告を出しているわけで、 多かれ少なかれ気分はいろいろな商売で有効に活用されています。

私は昨年米国で新車を買ったのですが、 買い手の気分を手玉に取るディーラーの手腕に 思う存分翻弄されました。 値段の相場は充分調べてあったので本体価格の交渉はスムーズに進行したのですが、 価格交渉が終わったという安心感につけこんで、 妙な割安感のある保険を勧めてきたり、 事故や故障に対する不安感につけこんだサービスプランを執拗に勧めてきたり、 気分を操るテクニックの良い勉強になりました。 常に正しい論理で判断を行なうことは難しいものです。 状況や勘違いにもとづいた、理屈を越えた気分は 商売でも詐偽でも大事なようです。

勘違いの分類

様々な勘違いによって間違った気分を感じてしまうことには注意が必要ですし、 逆にこれを利用する可能性を考えるのは意味があるでしょう。 人間はどのような勘違いをするものなのでしょうか。

錯覚

視覚や聴覚の錯覚は勘違いの基本です。 錯覚については広く知られているので、単純な勘違いには比較的気付きやすいと思われますが、 コリジョンコースのような 高度な錯覚もありますから油断はできません。

統計/確率計算

確率や統計に関する直感はあてになりません。 モンティ・ホール問題 のように、一見簡単に見えるのに誰もが間違いやすい問題もありますし、 滅多に起こらないことに対しては正確に確率を見積もらないと 間違った判断をしてしまいがちです。

偶然と必然を混同する勘違いもよくあります。 たとえば交通事故のほとんどは偶然に起こるものですが、 運転者の心がけに問題があったのだろうとつい思ってしまうことがあるので 注意が必要です。 東南アジアの某国では 電気製品が壊れるのは家の人間に問題があるからだと思われやすいので、 電気修理屋さんは客の家の前に車を駐めてはいけないのだそうです。

時間経過

現在見えている状況については注意深く調べることができる人でも、 以前の状況や途中の状況も含めた判断をすることは難しいものです。 アハ体験ゲームはこれを利用したゲームですし、 エスカレータの右側を空けて歩かせた方が効率が良いと思っている人が多いのも こういう勘違いが原因だと思われます。

雰囲気

インドの学生が発明したという触れ込みの インチキ圧縮ネタが 話題になったことがあります。 少し考えるとそんな圧縮率が不可能であることは明白なのですが、 インドの不思議感インドといえば数学だ感などによって、 多くの人がインドの学生ならありえるかもしれないと思って騙されてしまったようです。

因果関係と相関関係

相関関係と因果関係を混同するのは詭弁や勘違いの基本です。 Googleの業績と私の体重には相関関係がありますが、 これを因果関係だと勘違いすれば、 「Googleが調子良いのは私の体重の増加のおかげである」と 思ってしまうかもしれません。 ここまで極端なものは間違いだということは誰でもわかりますが、 微妙に関係がありそうに見える属性に相関関係があるときは、 因果関係があるのか偶然なのかの判断に困ることがあります。

ここにあげたものは人間の勘違いのほんの一部です。 人間はあまりに多くの間違いをしますから、 すべての勘違いを網羅するのは簡単ではありません。 kanchigai.com のようなサイトを作って事例を集めてみたいと思っています。

勘違いの活用

人間の勘違いのパタンは人類の進化を通じて醸成されてきたものですから、 何か勘違いしている人に対してそれを指摘して気付かせることは困難です。 勘違いが起こると困る場合はそれを避ける工夫が重要でしょうし、 役にたつ勘違いの場合はこれを活用すればよいでしょう。 たとえば、 時間を忘れて議論したがる人がいる場合は、 目立つ場所に時計を置いておけば長話を聞かずにすむかもしれません。 また、 エレベータを待つ時間にイライラする人がいる場合は、 エレベータホールに鏡を置いたりすることによって、 長い間待ってる感を軽減することができるでしょう。 このような勘違い工学をいろいろな場面で活用したいものです。

一番大きな勘違いは「自分は勘違いなんかしない」と思うことかもしれません。 勘違いや気分の問題について充分理解したうえで、 日頃からこれらに注意したり 積極的に楽しんだりする余裕を持つと良いでしょう。

第4回 自己流認証

自分を証明するために鍵やカードやハンコなどが広く使われていますが、 計算機の上ではパスワードがよく利用されています。 指紋や光彩を利用する生体認証も最近注目されていますが、 特殊な装置が必要になりますし、偽造も可能な場合が多いので、 どこでも使える強力な認証手法としてパスワードの地位に揺るぎは無いようです。

パスワードを用いる認証方式は長年利用されているので、運用に関する多くの知見が存在します。 システムを作成するときの注意点はよくわかっていますし、 破られにくいパスワードの選び方や、 他人に見られることなくパスワードを送る方法などについても深く研究されており、 正しい使い方をする限り安全な認証手法であることは証明されています。

歴史が長いため、パスワードを破るためのノウハウも蓄積されており、 普通に思いつく固有名詞を単純に利用するだけでは強度が不充分であることがわかっているため、 単純なパスワードは登録できないような運用が行なわれていることもあります。 私の以前の職場のシステムは、 私が思いつくあらゆるパスワード文字列について安全性が不充分だといって拒否するので、 頭にきて QWERTYキーボードを鍵盤楽器に見たててメロディを弾くという 楽器手癖方式でパスワードを設定していました。

システムを安全に利用するために 複雑なパスワードを考えかつ記憶する必要があるというのは、 パスワードを用いる認証システムの本質的な問題ですが、 システムの都合のために人間が難しいことを覚えなければならないという状況は 天動説的並に間違っています。 安全であるとシステムに認めてもらうためにはランダムに近いパスワードを利用しなければなりませんが、 そのようなものは記憶することが不可能ですから どこかにパスワードを書いておく必要があり、 システム全体の危険はかえって増大してしまうことになります。 よほど頭がサエた人がシラフの時しか安全に運用できないシステムというものは人間に優しくありませんし、 パスワードを忘れてしまったユーザへの対応に追われるサービス提供者の頭痛も相当なものでしょう。

画像認証

ランダムなパスワード文字列を覚えるのは無理なので、 人間が認識しやすい画像を利用した画像認証の手法がいろいろ提案されています。 たとえば下図のDéjàVu というシステムでは、 ランダムに生成された数千のパタンの中から自分が好きなパタンをあらかじめ5個選んでおき、 ログイン画面でそれを選択することによって認証を行なうようになっています。

幾何的パタンを覚えるのが苦手な人のために、人の写真を利用する画像認証システムも提案されています。 下図のPassFaceシステムでは、パタンのかわりに人の顔を覚えて認証に利用することができます。

その他、 画像の中の特定の点を指定することにより認証を行なう手法など、 様々な画像認証システムが提案されていますが、 どの場合も 何かを無理矢理覚えなければならないということは共通しており、 覚えるのが大変でかつ忘れる可能性があるという欠点はパスワードと同様です。

自己主張を利用した認証

個人認証は基本的に 「自分だけが◯◯できる××」とか 「自分だけ△△したことがある▲▲」といった脳内情報を利用するのが適当であり、 偽造や盗難の可能性がある手法は安全ではありません。 特殊技能の持ち主ならば、自分だけの技を認証に利用することができます。 私の場合は「聞いたメロディを即座に鼻歌と口笛の二重奏で再現する」といった 特技を利用した認証を利用したいところですが、 こういう認証システムは私しか使えませんから商品化は期待できません。 やはり 自分だけが思い出せる情報や自分だけが知ってる情報を利用するのが 正しいアプローチでしょう。

人間の記憶はいくつかに分類できると言われています。 パスワードのような無機質な情報や 数学公式のような意味記憶は忘れてしまう可能性が高いものですが、 思い出のようなエピソード記憶はなかなか忘れません。 特に、 自分が書いた文章/自分が描いた絵/自分が撮影した写真のように、 自分を主張するためにジマンパワーを発揮したものの記憶はなかなか忘れるものではありません。 工夫して撮影した写真や、思い出の人や場所などの写真についても同様です。 自分だけが行ったことがある場所の写真や、 自分だけが覚えている小さなエピソードに関連する写真など、 ジマンパワーを内包する写真に写っているものは忘れることがありませんし、 他人にはそのエピソードについての詳しいことはわからないのが普通ですから、 そのような写真に関連する話をクイズとして認証に利用すれば、 安全かつ忘れることがない理想的な認証システムを作ることができると思われます。

下図は、写真に関連するクイズを解くことによってmixiにログインするシステムの例です。 ハリーポッターのキャンペーン期間中と思われるログイン画面の上に、 自動的にクイズが表示されるようになっており、 「この美女とデートしたのはどこか?」のような 5択問題を正しく選ぶと正しいパスワードが入力されるようになっています。 こういう美女とデートしたときの場所を本人は忘れるはずはありませんが他人にはわかりません。 クイズをいくつか用意しておけば、 安全かつ絶対忘れることのない認証システムとして利用することができることになります。

認証システムの展望

サービス提供者がパスワードより有望な認証システムを思いついたとしても、 それを採用したことが原因となってクラッキングが発生する危険を考えると、 迂闊に採用する気にはならないと思われます。 パスワードを利用するシステムはいくらでも現存するので、 それを利用している限りサービス提供者やシステム開発者に 責任問題が発生することはありません。 パスワードの不便さに誰もが憤死しようとも、 別の方式に取って変わられる日は遠そうです。

パスワードを根絶するのは難しいかもしれませんが、 前述の画像クイズの方式のように、 既存のシステムの上に別の認証方法を重ねて利用することによって パスワードの欠点を軽減することは可能でしょう。 写真以外のものを使う認証方法も無限に考えられますが、 パスワード認証というインフラの上に、 自己流の認証手法をパスワードに変換して使う手法が これから有望だろう思います。

第3回 ジマンパワー

多くの趣味は、 自己満足したい気持ちや 自慢したい気持ちが原動力となって成立しているように思われます。 山に登るのが楽しい理由はいろいろあるでしょうが、 美しい景色を見ることができるという嬉しさに加え、 苦労して登りきることに自己満足したり、 大変な山に登ったという自慢話ができるのも理由のひとつだと思います。 写真を趣味にしている人は沢山いますが、 自分が撮った美しい写真を見て自己満足できることや、 それを他人に見せて自慢できるということが大きな理由になっています。 このように、 自己満足したいという気持ちと 他人に自慢したいという気持ちの両方が満たされるような趣味は 流行しやすいといえるでしょう。

自己満足と自慢の両方が満たされない場合は一方だけでもかまいません。 自己満足が難しい分野の趣味の場合、他人に自慢することによって 楽しみを増やすことができます。 ピアノや華道のような稽古ごとでは「発表会」が行なわれるのが普通です。 自分の技を発表会で他人に見てもらうことによって批評をあおぐという意味も あるでしょうが、 もっぱら自慢大会という意味が大きいと思われます。 ひとりでピアノを弾くだけで誰もが充分自己満足できるのであれば、 自分が弾く曲を他人に聞かせる必要はありませんから ピアノ発表会の必要性は少ないでしょう。 実際は、 先生に指定された練習曲がつまらなくて自己満足することができないから、 発表会のような機会で腕を自慢する必要があるのでしょう。 このように、自己満足(自満)や自慢を支援する ジマンパワーは趣味にとって非常に重要だといえるでしょう。

ネット上のジマンパワー

良質のソフトウェアを無償で共有するというオープンソース運動は、 昔は理解されないことが多かったようですが、 最近は世間で広く受け入れられるようになり、 ビジネスとしてもすっかり定着しています。 他人のために親切な行動をとることはなかなかできることではありませんが、 その行動によって自分のジマンパワーが発揮できるのであれば話は違います。 自分が書いたソフトウェアが世界中で愛用され名声が高まるのであれば、 良いソフトウェアを書いたという自己満足感も得られますし、 密かに自慢することもできます。 ソフトウェアを無償で配付するという行為によって 多くの金を儲けることはできないかもしれませんが、 オープンソース活動は ジマンパワーの発揮には最高だということが 成功の大きな理由のひとつだと考えられます。

ユーザ間で情報を共有したり ユーザの力をあわせて情報を構築したりするという、 いわゆるWeb2.0的サービスが最近すごい勢いで増えていますが、 人気のあるサービスはジマンパワーを充分に発揮できるようになっているようです。 自分にメリットがない場合、 手間をかけて不特定多数に対して有用な情報を提供する親切な人は多くありませんから、 情報共有サービスを流行らせるためには、 情報提供することによって ユーザのジマンパワーを発揮できることが非常に重要だと考えられます。 実際、多くのサービスにおいてジマンパワーは有効に活用されています。

上記はジマンパワーがうまく発揮できているサービスの例ですが、 発揮できないサービスは失敗しやすいように思われます。 本棚.orgと似た地図帳.orgというサイトを以前作って、 位置情報や店情報を共有しようと思ったことがあります。 レストランや観光地のような情報の共有は非常に有用なのですが、 このような情報を投稿してもあまりジマンパワーを発揮できないため 投稿が集まらず、このサービスはあまり流行りませんでした。 Webサービスで情報を共有しようという場合、 便利で面白くなければならないのは当然ですが、これだけでは不充分であり、 ジマンパワーを発揮できるような仕組みがなければ駄目だということを痛感しました。

Web2.0的サービスを流行らせるためには ジマンパワーの活用が最も重要なのかもしれません。 サービスが有用かどうかよりも、 ジマンパワーを発揮できるかどうかをまず考えるべきなのでしょう。 ジマンパワーについてはまだまだわかっていないことが多いので、 今後さらなる研究を期待したいところです。

第2回 自分コンテンツの楽しみ

Webブラウジングとかネットサーフィンとかいうのは 他人のコンテンツを見るから楽しいものであって、 よほどのナルシストでもないかぎり、 自分の書いた文章や自分が撮った写真だけ見て楽しんでいる人はあまりいないと思われます。 一方、自分が撮った写真でも、昔の写真を久しぶりに見るのは楽しいものですし、 書いたことを忘れてしまったメールを何かの拍子に見つけてなつかしく思うこともあります。 忘れかけた様々な思い出を拾い出してまとめて表示したり、 コメントをつけて編集したりできるようにすると、 自分コンテンツを意外なほど楽しむことができるようになります。

写真の整理

自分の写真を整理するとき、 マメな人なら内容や時間をもとにして 「2002/5/3 BBQ」とか「白駒池ハイキング」とかいう名前で管理している人は多いでしょう。 「2002/5/3 BBQ」を書いてある写真は確かに2002年5月3日のバーベキューの写真でしょうし、 「白駒池ハイキング」と書いてある写真は確かに白駒池でのハイキングの写真に違いありませんが、 これだと当たり前すぎて面白くありませんし、 このようなキーワードだけでは検索に役立つとはいえません。

バーベキューをした場所やメンバについては忘れにくいものですが、 バーベキューの日付や年度をずっと覚えているものではありません。 あらゆる写真に対して完璧に日付/人間/場所などのタグをつけておけば大丈夫ですから、 写真をタグで管理するシステムがいろいろ提案されていますが、 毎日沢山撮る写真に対してそんな面倒なことを行なうのはほとんど不可能です。 FlickrPicasa Webのような 写真共有サービスでは アップロードした写真にタグや位置などを登録できるようになっていますが、 毎日撮る写真をこまめにアップロードしてタグをつけたり位置を登録したりするのは 大変な手間ですし、それですごく便利なことがあるわけではありませんから、 長続きするとは思われません。

自分写真ナビゲーション

私は数万枚のデジカメ写真を持っていますが、 システムを工夫することにより、 少ない手間でこれらを自分コンテンツとして楽しむことができるようになりました。 下の図は、10年分のデジカメ写真のうち「自転車」というタグがついているものを並べたものです。 意図したわけではないのですが、子供の自転車の上達過程を見て楽しむことができました。

右上の写真は夕方の海岸のようですが、 日付をクリックしてみると下図のようにこの日付の写真を見ることができます。

この中に「夕日」というタグがついた写真があるので これをクリックすると、 今度は下図のように「夕日」というタグがついた写真をリストすることができます。

あちこちで夕日の写真を撮影しているようですが、 富士山が写っているものがあるので 「富士山」をクリックすると、 富士山の写真をリストすることができます。

鎌倉方面から撮った写真が多いようですが、 それ以外の場所で撮った写真も含まれています。 この写真をクリックすると下図のような編集画面になりますが、 どうやら東名高速のサービスエリアで撮った富士山の写真だということがわかります。

写真編集画面では、タグと一緒に地図が表示されるようになっており、 地図をドラッグするとすぐにその位置が登録されるようになっています。 並んで表示された写真と地図が一致しないととても気持ちが悪いため手間をかけても修正したいという気持ちになりますし、 ドラッグするだけで修正できるようになっているので、あまり意気込むことなく正しい位置を写真に登録することができます。 あらゆる写真について地図を登録するのは大変ですが、 位置が登録されてない写真については直前に撮った写真と同じ場所だと判断するようになっているので、 同じ場所で撮った写真については位置登録は一度だけですむようになっています。
こうして登録された緯度経度をクリックすると、 下図のように、この位置に近い写真が表示されるので、 箱根などで撮ったいろいろな写真を楽しむことができます。

このように、写真に位置やタグを登録することによって、 沢山の写真のリンクをたどりながら思い出を楽しむことができることがわかります。 自転車が写っているあらゆる写真に「自転車」というタグがついているわけではありませんし、 自転車というタグをつけることによって成長記録を楽しもうと意図したわけでもないのに、 結果的に楽しく自分の写真をブラウジングできることが面白いといえるでしょう。 写真のタグづけといえば面倒な割に検索の役にたたないという印象があるかもしれませんが、 リンクをたどってブラウジングするにはとても有益です。

自転車が写っているすべての写真に「自転車」というタグがついていると、 これで検索したときあまりにも沢山の写真がマッチしてしまうのでかえって困ったことになります。 かえってマメにタグをつけない方が、今回の例のようにうまくいくことが多いようです。

自分コンテンツのナビゲーション

自分コンテンツは写真だけには限りません。 文書でもメールでも、自分に関係したあらゆるデータは、リンクを ナビゲーションして楽しむためのコンテンツになり得ます。 怒りのメモやメールすべてに「激怒」というタグがついてたら激怒の歴史をふりかえることができるでしょうし、 もっと有益なリンクを楽しむこともできるでしょう。

タグなどを利用したリンクは、ブラウジングするのが楽しくなるだけでなく、 もちろん実際の検索にも有益です。 たとえばイギリスの学会で会った誰かの情報を思い出したいときは、 イギリスの緯度経度をもとにしてイギリスの写真を捜せば 日付が判明しますから、 その付近のメモやメールなどから簡単に情報をみつけることができるでしょう。 こういう情報はいくらググっても出ないことは確実ですが、 自分のリンクを活用すれば簡単にみつけることができます。

タグやリンクはいくらでも増やしていくことができますし、 増やせば増やすほどリンクをたどる楽しみも増えますから、 自分コンテンツの整備は老後の楽しみにぴったりといえるかもしれません。 また自分コンテンツは、自分で楽しむだけでなく、人に自慢するのにも便利です。 世間で流行している趣味の多くは自慢力が重要です。 たとえば楽器の演奏はそれ自体楽しいものですが、人前で披露できればさらに楽しいでしょう。 車の運転はそれ自体楽しいものですが、ウデを披露できればさらに楽しいでしょう。 ひとりで上手に楽器を演奏するのは大変ですが、良い素材を使えばかなり楽をすることができます。 生け花や写真やカラオケのような趣味は、 既存のすぐれた素材に少しだけ自前の工夫を加えて作品にすることができるので 万人向けの趣味となっているのだと思われます。 写真はそれだけで自慢の対象になりますが、 ちょっとした手間を加えて格好良いスライドショーにして公開すると さらに自慢力が満たされますから、 これからの趣味として非常に期待できると思われます。 自分コンテンツの公開で自慢力が発揮できるのであれば、 自分コンテンツの楽しみはますます増えていくことでしょう。 自慢力の活用については次回考えてみたいと思います。

第1回 人力計算のチカラ

はじめまして。 ユーザインタフェースやユビキタスコンピューティングに関連する システムの研究や開発をやってる増井俊之です。 このブログでは、 計算機やネットワークが進化して世の中がみるみる便利になっていく 今日このごろのインタフェースのトレンドを紹介していきたいと思っています。


ブログや2ちゃんねるの炎上を見るにつけ 「この元気な力を発電か何かに使えないか?」と思うことがよくあります。 地球に現存する技術では2ちゃんねるパワーを発電に使うのは難しいでしょうが、 人力パワーを有効活用する方法はいろいろ考えられそうです。 インターネットで全世界の計算機が接続されたことによって 無限の計算パワーが利用できるようになりつつあるのは間違いありませんが、 ネットによって接続された全人類の力も同時に利用できるように なったことはそれ以上に革命的なことかもしれません。

機械でもできることに人力パワーを使うのは勿体ないので 人力パワーは人間にしかできないことに使うべきでしょう。 パターン認識や自然言語処理のように、 機械よりも人間の方が得意な仕事は沢山ありますし、 創造的活動はまだまだ計算機にはできません。 書評を書いたりレストランの評判を投稿したりすることは いつまでたっても計算機には無理でしょう。 このような人間の情報処理能力をネットを使って有効利用する 様々な手法が最近増えています。
例えば、人間には読めるけれども計算機には読むのが難しいような 文字画像を使って人間かどうかを判別する CAPTCHA というシステムが最近広く使われるようになってきました。 下のような画像の文字を人間は簡単に読むことができますが、 計算機で認識することは難しいので、 読めた人間にだけ投稿を許すことによって 自働SPAM投稿の拒否などに利用されています。

CAPTCHAは人力パワーの消極的な応用といえるでしょうが、 人力パワーを積極的に使うreCAPTCHA というシステムも提案されています。 計算機でうまく文字認識できない文字画像をなんとか読みたいとき、 その画像および計算機が生成した普通のCAPTCHA画像のふたつを 認証システムのユーザに提示して両方の文字列を入力させます。 計算機が生成したCAPTCHA画像を読むことができたユーザならば、 計算機が読めなかった画像もちゃんと読めた可能性が高いですから、 人力パワーで画像認識をさせることに成功したことになります。 認証作業1回につき1単語しか人力認識できませんが、 世界中の人間がこの作業を行なえばかなりの効率になるはずです。

計算機は 書評を書いたりレストランの評判を投稿することはできませんが、 そのような結果をまとめて計算することは得意ですから、 他人の評価をもとにして自分が欲しい情報を取得する 協調フィルタリングシステムが 広く使われるようになってきました。 例えばAmazon.comで本を検索すると 「この商品を買った人はこんな商品も買っています」という情報が表示されます。 これはAmazon.comで本を買った人の購入行動(人力パワー)をうまく情報として利用していることになります。 私が運営している本棚.orgというサイトでは ユーザが自分の作った「本棚」に自由に本を登録することができるようになっており、 登録情報を利用した「本棚演算」によって 本や本棚の関係を計算することができます。 Googleが採用している ページランクは、 他ページを評価するという人力パワーが最も有効に利用されている例かもしれません。 書籍やWebページの中身を解析するだけでなく、人力による付帯情報を重視すると効果的な検索ができるという事実は 人力パワーの有効性の証明になっているといえるでしょう。 本を買ったりリンクを貼ったりするといった 単純なユーザ行動を沢山集めることによって重要な情報が出現するわけですから、 もっと広範な人間の行動データを集めることができれば応用はさらに広がるはずです。 あらゆる行動が自動的に収集されて解析されるのは誰でも嫌ですが、 明示的に発信した情報が共有して有効活用されるのであれば大丈夫でしょう。 写真や動画にタグをつけたりソーシャルブックマークを利用したりする積極的な行為 や「炎上」「祭り」でさえもじゃんじゃん人力パワーとして利用したいものです。 Googleが発見したような隠れた応用はまだまだ有るに違いありません。

人力パワーをもっと積極的に使う方法もいろいろ考えられます。 例えば何かのシステムのテストを行ないたい場合、 それをWebで公開して多数の人間に使わせることにより、 大量のテストを効率的に実行することができます。 最近はリリース済なのかユーザテスト中なのかわからないシステムすらあるようです。 mixiは 「β」と書いてあるところを見るとまだテスト中のようですが、 1000万を越える人間の人力パワーをフル活用してユーザテストを行なっているというのは なかなか壮大な話だと思います。 頻繁にアップデートが要求されるOSも永遠にテスト中なのかもしれません。
ネット上の暇人に有益な仕事をしてもらう方法も考えられます。 私は変な日本語を見ると直したくなることがあるのですが、 変な英語を見ると直したくなるお節介なアメリカ人もいるかもしれませんから、 こういう人間の衝動を利用した英文自働校正システムができる可能性があります。 作りかけのプログラムやアイデアを置いておくと 自動的に完成するシステムすらできるかもしれません。 そんな都合の良い話は一見ありそうに思えませんが、 間違いが書かれたWikiページは「こびとさん」が勝手に直してくれる ものだと言われていますし、人力パワーはあなどれないものです。 全人類を巻き込んだ人力計算力はまだまだ未知数です。 これまで考えられかったような人力パワーの炸裂に期待したいと思います。 足りなくなれば犬力パワーとかも...