$Date: 2005-11-15 13:11:09 +0900 (Tue, 15 Nov 2005) $ $Rev: 1137 $

WikiでLifeHack!

様々な工夫で生活を便利にしようという方法は 最近「LifeHack」と呼ばれているようです。 私はユーザインタフェースの研究を行なっているのですが、 これは計算機を使ったLifeHack技術の研究と言いかえてもよさそうです。 長年Wikiを使ってきた結果、 WikiはLifeHackに非常に有用であることを確信するに至りましたので、 Wikiを使ったLifeHack技術について紹介したいと思います。

情報整理のテクニック

情報整理に関する資料や書籍は世の中にあふれていますが、 計算機を使った情報整理術を長年いろいろ試してきた経験上、 私は以下のような方針が重要だと考えています。
単純な方法を使う
手間のかかる整理術は長続きしません。 運用が簡単でかつ効果が大きい方法を使うべきでしょう。

情報は一箇所にまとめる
情報が分散していると、捜すのが面倒ですし、 ダブルブッキングのような危険も発生しがちです。 情報は一箇所で扱うようにしておけば安全です。

各種の機器を活用する
あらゆる予定を携帯電話で管理することにすれば予定情報は一元化されますが、 入力が大変ですし一覧印刷もできません。 パソコンが使えるときはパソコンで/携帯電話しか使えないときは携帯電話で/といった具合に、 状況に応じていろいろな機器を使えるようにしておけば便利です。

汎用性を重視する
いろいろな環境で情報を利用できるようにするため、 特殊なデータベース形式は利用せず、なるべく単純なテキストファイルなどを利用します。

情報は消さない
情報を編集するとき、 古い情報は消さずに残しておいて、新しい情報だけ使うようにしておきます。 最近はふんだんにディスクを使用することができますから、 小さな古い情報はまったく消さないことにしておけば安全です。

検索技術を駆使する
検索のためにファイル名やディレクトリの名前や構造を工夫したり、 キーワードを付加しておいたりといった整理術は 面倒ですから長続きしそうもありません。 適切な検索技術を使うことによりなるべく手間がかからないようにします。
Wikiの仕組みは単純ですし、 ひとつのWebサイト上のデータをあちこちの様々なブラウザから利用できます。 また、Wikiでは基本的に単純なテキストを扱いますから、 アーキテクチャの異なる様々な機器で同じデータを利用することができます。 このように、普通のWikiは前述の要件のかなりの部分を満たしていますから、 情報整理の基本となるツールとして最適ではないかと考えています。 基本的なWikiの枠組に細かい工夫を追加することによって LifeHackに活用する方法を紹介します。

利用例の紹介

私は自前のWikiシステムを毎日頻繁に利用しています。 予定表はWikiで一元的に管理していますし、 メモ、日記、TODOなどもすべてWikiで管理していますから、 WikiをほとんどPDAのように利用していることになります。 図1は私が現在利用しているWikiシステムのリスト画面です。 日記、アイデア、システム資料など、 PDAで管理するような情報をすべてWikiページで管理しています。

図1: Wikiを使った個人情報管理

PDAは持ち歩かなければ意味がありませんが、 携帯電話からWikiにアクセスできるようにしていますし、 軽いノートパソコンをいつも持ち歩いているので、 最近はほとんどPDAを利用しなくなってしまいました。 道を歩いているときにメモやアイデアを思いついた場合、 すかさず適当なタイトルをつけて自分にメールを送ることにより、 自動的にWiki上にデータが追加されるようにしています。 同様に、検索キーワードを送ることによって Wikiページの内容をメールで受け取ることができるので、 いつでもどこでもWikiデータにアクセスすることが可能になっています。

PDA的な利用をする以外に、 調べものや学習のためにもWikiを活用しています。 何か新しいことを勉強しようとするとき、 Web上の情報を検索して集めてから整理すると効果的ですが、 こういうことをやるのにはWikiが最適です。 図2は 社会科などの勉強のために作成したWikiサイト「和歌山県」のページです。 「みかん」は和歌山県の名産なので 「みかん」のページへのリンクが登録されていますが、 同じリンクを持つ「愛媛県」や「静岡県」のページとの関連がわかるようになっています。

図2: 社会科学習ページ

最近は、 文章や資料を作成するとき、 アウトラインプロセッサのかわりにWikiを利用しています。 階層的に構成したテキストをWikiページ上で簡単に追加したり並べかえたり できるので、考えや資料を少しずつまとめていくのに便利です。

図3: アウトラインプロセッサとしての利用

各種の工夫

基本的なWikiの機能だけではLifeHackに充分とはいえないので、 様々な用途に使えるように各種の拡張を行なったものを利用しています。 使っている途中で何度も新しい機能を追加しているため 多少ゴチャゴチャしてきていますが、 それでも拡張しつつ便利に使い続けられているところが Wikiの柔軟性を示しているように思います。

フロー型データとストック型データの共存

Wikiはストック型データを蓄積するのに向いており、 メール/日記/blog記事のようなフロー型データを扱うのには向いていないという 議論があります。 確かに、書く順番や日付が意味をもつ情報を普通のWikiページ上に書こうとすると 運用に注意が必要です。 Wikiページの上で順番にデータを追加していくことによって Wikiを日記や掲示板のように使えるようにするシステムや、 メーリングリストとWikiを融合したシステムも提案されていますが、 私は以下のような単純な方法によって フロー型データとストック型データを同じWiki上で扱えるようにしています。 たとえば「SD原稿」というタイトルを持つストック型ページを編集してセーブすると、 新しいIDをもつページが生成され、古いページは表示されなくなります。 一方、「日記」というタイトルを持つフロー型ページを追加した場合は 古い日記と新しい日記は掲示板のように並べて表示されます。 ストック型ページもフロー型ページもデータ構造は同じであり、 表示方法が違うだけなのですが、 このような工夫によりうまく両者を混在させることができるようになっています。 図2, 図3はストック型の普通のWikiページですが、フロー型のページは図4のように表示されます。

図4: 「メモ2005/11」というタイトルをもつフロー型ページ

あらゆるWikiページ/日記/メモをこのような形式で管理すると 以下の点で有利です。

プラグイン

最近の多くのWikiシステムは、 書き込んだテキストに処理を加えることによって 出力を整形したり別システムを呼び出したりする「プラグイン」機能を持っています。 タグとしてよく利用される“[[”...“]]”のような記法も プラグインの一種とみなせるかもしれません。 私のWikiでもHikiなどと同様のプラグインを利用できるようにしています。
ISBN
ISBNを書店へのリンクに変換するプラグインは様々なWikiで利用されています。 以下のように記述したISBNはAmazonなどへのリンクに変換されます。
{{isbn('4756146627')}}

PDAと同期したり携帯メールでデータをやりとりする場合は テキスト形式だけ交換することになります。

地図

以下のように緯度/経度を指定すると地図を表示することができます。
秋葉原ダイビルの地図です。
{{webmap('35.41.45.76','139.46.31.26')}}

図2の「和歌山県」の地図表示もこのようなプラグインを利用しています。

写真

私は写真も時刻IDで管理しており、 以下のように指定することにより写真を挿入することができます。
剣山 2001/12/8
{{image('20011208124154',200)}}

ここでは正確な時刻を指定していますが、 {{image('2001/12/8 12:40:00')}} のように若干ずれた時刻を指定した場合でも、 最も撮影時刻が近い写真を捜して表示するようにしているため、 写真を撮影したとき同時にだいたいの時刻を記録しておくようにすれば Wikiページ上でそれを参照することができます。

カレンダ

カレンダプラグインを使うと、テーブルタグを使ってカレンダを記述できます。 リストをテーブルに変換しているだけなのですが、 カレンダはやはり見慣れた形式のものが見やすく感じられるようです。
{{calendar <<EOF
2005/10/30 18:00 宴会
2005/11/1 SD原稿締切
2005/11/7 11:00 打合せ
EOF
}}

検索

検索キーワードを指定すると、 タイトルがマッチするエントリへのリンクのリストを得ることができるので、 関連するページをまとめて表示するのに便利です。
{{query('写真')}}

各種の視覚化

頻繁にリンクを作成したり編集を行なったりしていると、 ページの間の関係がよくわからなくなったり、 作ったページのことを忘れてしまったり、 編集の履歴がよくわからなくなってしまったりすることがあります。 ページ間のリンク関係や更新時刻を視覚的に表現することによって 多数のページをうまく管理できるようにしています。
逆リンクの表示

「関係エクスプローラ」というWikiページから 「タグエクスプローラ」というページへのリンクがあるとき、 このように「関連ページ」として表示されます。

兄弟リンクの表示

「タグエクスプローラ」というページに対しては、 「関係エクスプローラ」と 「メモ2005/11」というふたつのページからリンクが張られており、 これらのページは兄弟のような関係にあるということができます。 このとき、 「関係エクスプローラ」のページ内の 「タグエクスプローラ」へのリンクの場所において、 このページには兄弟ページである「メモ2005/11」からもリンクが貼られていることを 表示しておけば、 これらのページには関連があることがはっきりしますし、 直接ジャンプすることもできるので便利です。

図2の「和歌山県」のページの「みかん」ページへのリンクの場所に 「静岡県」「愛媛県」が表示されているのは、 兄弟リンクの機能のおかげです。

ページの廃れ

Wikiページの作成日時に応じてページの背景パタンを変化させて字を読みにくくすることにより、 ページの古さを表現しています。 また、 古いWikiページを編集する場合、新しい部分と古い部分が混雑することになりますが、 「廃れプラグイン」を利用することによって古い部分は汚いまま残すことができるようになっています。 下の例では、4行目移行は作成が古いため、 明示的に作成時刻を指定しています。
weathering()で囲むのはちょっと面倒である。
テキスト作成日時を行の先頭に書いておくと廃れるようにすればどうか。
(sutare-region) するとか...

{{weathering('20040509105107',<<EOF)
[[http://pitecan.com/sutare/test/test7.html テキストをバックグラウンドにする方法]]は
悪くないとおもうが、適切なテキストを含む画像を選ぶのが面倒であろう。
バックグラウンドは大事なものだから、1日1枚その日を表現する画像を
選ぶというのは手間に値するのかもしれないとは思う。

アクセス履歴の表示

各Wikiページに対するアクセスはすべて記録しており、 図1のようにアクセス履歴を視覚化しています。 ページの名前の左側の灰色の矩形の列がアクセス状況を表現しています。 黒いほどアクセスが多かったことを示しています。 一番右側の矩形は過去1日のアクセス状況、 その左側の矩形はその前の2日間のアクセス状況、 その左側の矩形はその前の4日間のアクセス状況... という具合に指数的にアクセス状況を視覚化することにより、 約1年ぶんのアクセス状況を表現しています。 「あしか」というのは はてなにインスパイヤされて名付けたTODOリストページなのですが、 頻繁にアクセスされていることがわかります。 また数日前にHyperEstraierについて集中的に情報収集していたこともわかります。

アクセス回数によってリンクの色を変える

Wikiページに対するアクセスだけでなく、 Wikiページから他のページに対してどのようにアクセスが行なわれているかも 視覚化しています。 FireFoxの拡張機能であるGreasemonkeyを利用し、 リンクをクリックした回数のログを計算することにより、 リンクの背景色を変化させています。 何度もクリックされるとだんだん背景が黄色くなっていきますが、 時間がたつとまた薄い色に戻っていきます。

編集を楽にする工夫

標準的なWikiページの編集を行なう場合、まず 「編集」ボタンを押して編集モードにしてテキスト編集を行なった後で セーブを行なう必要があるのが普通でした。 Webページはもともと編集の対象ではなく、 Webサーバにテキストを送る手段としては CGIのフォームを利用する方法しか用意されていなかったためですが、 JavaScriptやAjaxのテクニックを利用すれば、 普通のPCアプリケーションと同じように、 直接操作インタフェースでWikiページを編集することができます。 Yomoyomo氏の言うように 将来のWikiではページの直接編集が標準的になるかもしれません。
編集モードを利用しない入力

私のシステムでは、 JavaScriptを利用してページを直接編集したり、 Ajaxを利用して動的に編集結果をセーブしたりする方法を用意しています。 下図は「並べる!技術」についての情報をWikiページ上で閲覧しているところです。

通常のWikiページの場合は編集ボタンを押して編集モードに移行した後、 テキスト編集を行なってから書込みボタンを押すことによって 書き込みを行なうようになっているのが普通です。 しかし、ちょっとした編集を行なう場合でもいちいち 編集ボタンと書込みボタンを操作するのは面倒ですので、 編集ボタンを押してテキスト編集モードに移行するかわりに、 テキストをクリックするとその行が編集可能になる機能をつけてみました。 前の図で「既存システムの問題点」の行をクリックすると 画面は下図のように変化してこの行が編集可能になります。

ここで文字を編集/追加すると、編集結果は Ajaxの手法で適宜サーバに送られセーブされます。 テキスト以外の場所をクリックすると編集枠は消え、編集後のWikiページが表示されます。 文字列をクリックするだけでWikiページの内容を編集/自動保存できるようにしたことにより、 Wikiページの編集が非常に簡単になりました。

項目の移動

選択した行及びその下の階層の行は、 シフトキーを押しながら上下矢印キーを押すことによって移動することができます。 上図の状態で「既存システムの大きな問題点」をクリックした後 シフトキーを押しながら下向き矢印キーを押すと、 下図のように 「既存システムの大きな問題点」以下の行がまとめて下に移動します。

項目の追加

シフトキーを押しながら行をクリックするか 編集中にリターンキーを押すと 新しい行が追加されます。

項目の畳み込み表示

左右の矢印キーを押すと、階層表示のレベルを切換えることができます。 上図の状態から左向き矢印キーを2回押すと、 下図のように深い階層が隠れて表示されます。

項目のフィルタリング

「Search」枠に検索文字列を入力すると、 Migemo の手法によってテキストのフィルタリングが行なわれます。 たとえば「sou」と入力すると、下図のように、 「sou」という読みを持つ単語「操作」を含む行だけがフィルタされて表示されます。

ここで左右の矢印キーを押すことにより、 LensBarと同じ方式で、 検索文字列にマッチした行に加えて浅い階層の行も表示できるようになります。 この状態で右矢印キーを押すと、 下図のように、 階層が最も浅い行も一緒に表示されるようになります。 このような手法は「Focus+Context」と呼ばれ、 注目している行と文書全体の構造を同時に眺めることができるのが特徴です。

展望

いろいろな工夫を行ないながらWikiを活用しているうちに、 私はWikiなしでは生活ができない体になってしまったようです。 私は書籍情報を交換する「本棚.org」や 位置情報を交換する「地図帳.org」 というサイトを運営しています。 これらのサイトでは誰もが自由に「本棚」や「地図帳」を作って 本や位置情報を登録したり交換したりできるようになっています。 このようなサイトの方針はいろいろ考えられますが、 私はWikiにすっかり馴染んでしまっていたため、 ユーザ登録やログインすることなく、 Wikiに似たタグを利用して情報を書き込むという方式を自然に採用してしまいました。 最近はソーシャルネットワーキングシステム(SNS)や ブックマーク共有システム、 写真共有システムなど、 Webを利用した各種の情報共有システムが非常に流行してきているようですが、 これらの多くはWiki的要素に乏しく、 自由度が若干制限されているような気もするので、 拡張性があるWiki的な情報共有システムがもっと普及してほしいところです。

今回紹介したWikiは 私のサイト で試用することができます。 また、機能の詳細については 私のWebページで公開している別の記事 でも詳しく解説しているのでご参照下さい。