ソフト開発のLifeHack

生活や仕事を便利にするための様々な工夫がLifeHackと呼ばれて注目されるようになってきました。 いまやソフトウェア開発において必須といえるネットを活用した LifeHackの工夫を紹介します。


最近は、 何かを始めようとするときはとりあえずググるのが鉄則ですし、 マニュアルもコードサンプルもネット上のものを使うのが普通です。 作成したコードやドキュメントの保存、情報交換などもすべてネット上で行なわれていますし、 プログラムの編集もコンパイルもネット上で行なうようになるのかもしれません。 このような現状ですから、情報の編集や共有のようなLifeHackもすべてネット上で 行なうのが理にかなっているでしょう。 各種のサービスやAjax手法により、簡単に様々なLifeHackを工夫することができます。

サーバとブラウザの用意

ネットを最大限に活用するにはサーバを自前で持ちたいものです。 自由な設定が可能なサーバを用意したうえで様々な細工をしましょう。 Webサーバ, メールサーバ, データベース, Railsなどを用意して、 メールやWikiを自由に利用できるようにします。
サーバには主にブラウザでアクセスするのが便利です。 Javascriptが利用できれば特殊なブラウザは必要ありませんが、 各種のOSで利用が可能で、Greasemonkeyが使えるFirefoxの利用が便利です。

RSSリーダ

ソフト開発に関する新しい情報は個人ブログに書かれることが多いですし、 ITMediaのような情報サイトもRSSを配信していますから、 RSSリーダは最大限に活用するべきです。 ネット上の各種のRSSリーダサービスを利用することもできますが、 自前のサーバ上に設置しておくと便利です。 私はfreshreader(*1)というRSSリーダをサーバに設置しています。
(*1) http://www.freshreader.com

情報の記録

ネットで発見した有用な情報は、ローカルファイルやブラウザのブックマークなどに保存するのではなく、 ネット上に保存しておくと便利です。 最近はソーシャルブックマークシステムがよく使われますが、 Plaggerを使って情報をGMailに転送し、GMail上で検索や整理を行なうという大技(*2)も あるようです。
(*2) http://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=000870

見たページを記録するためにはブックマークレットを利用するのが簡単ですが、 登録をつい忘れてしまうこともありますから、 見たページはとりあえず全て記録しておくとよいでしょう。 全部のページを記録するとデータが大量になるのが心配ですが、 実際には1日に1000ページ以上アクセスすることはまずありえないので 気にせず全部記録してしまいましょう。

Firefoxの場合、以下のようなGreasemonkeyスクリプトを登録しておけば 新しいページを開くたびに記録することができますし、IEの場合は ブラウザで眺めてるURLを記録し続けるアプリ(*3) を利用するとよいでしょう。
(*3) http://www.hirax.net/diaryweb/2005/11/05.html#200511051

GM_xmlhttpRequest({
 method: 'GET',
 url: 'http://example.com/urllog.cgi' +
  '?url=' + encodeURIComponent(location.href) +
  '&title=' + encodeURIComponent(document.title)
}); 

情報の共有

重要な技術であっても、何故かなかなかネット情報がみつからないこともあります。 このような場合、苦労して集めた情報をきちんと編集して公開するのが最も親切だといえますが、 タグをつけてソーシャルブックマークに登録するだけでも充分意義はあります。 誰か別の人が情報をまとめてくれるかもしれません。

記録した情報へのアクセス

タグの利用などにより、記録した情報に再度簡単にアクセスすることができますが、 よく利用する情報に関してはショートカット的なものを定義すると便利です。 ショートカットもネット上に登録したいので、 長いURLを短いURLに変換してくれるシステムを利用するとよいでしょう(*4)。 私の場合、 http://pitecan.com/wdbのような短いURLを指定して WEB+DB PRESSのページに飛べるようにしています。
(*4) http://pitecan.com/UnixMagazine/PDF/if0406.pdf

情報の編集

URLやメモなどの情報が集まってくると、リンク集のような編集を行ないたくなります。 Web上の情報編集にはWikiがよく利用されていますが、 普通のWikiは編集機能が貧弱なので不便です。 私は、編集モードに移行せずに情報を編集したり、 直接アウトライン編集を行なったりできるWiki を作って利用しています(*5)。

(*5) http://pitecan.com/UnixMagazine/PDF/if0510.pdf

関連情報のリンクの利用

情報にタグが定義されていれば、「タグつながり」で関連情報をたどって検索することが可能になります。 AというシステムがLというライブラリを利用しており、 BというシステムもLを利用している場合、 「L」というタグを介してAとBの関連を知ることができます。 普通のWikiやソーシャルブックマークシステムでは Aを参照したときBの情報を直接見ることができませんが、 もうひとつ先の情報まで表示するようなWikiを利用すれば 兄弟的な関係をもつ情報にすぐアクセスすることができるようになります。

下図は「PlotKit」というJavaScriptの描画ライブラリに関する情報を Wikiで編集しているところです。 PlotKitはSVGやJavaScriptに直接関係しているためこれらをタグとして登録していますが、 SVGやJavaScriptに関係した別のページが下部に表示されています。 このようにリンク先のリンク先も常に表示するようにしておくと、 関連情報をたどって検索する手間を省くことができます。

オフライン情報のマージ

オンラインでネット上の情報編集を行なうことができない場合や、 各種のマシンから情報追加を行ないたい場合、 ローカルマシン上で独自に編集/作成した情報をサーバ上に適宜転送して サーバ上でマージするようにすれば情報の一貫性を保つことができます。 たとえばいろいろな場所で日記を書く場合、 作成時刻をファイル名としてデータを作成し、 ネットワークに接続されたときにcvsやSubversionでcommitするようにすれば、 すべての日記をまとめて管理することが可能になります。 バージョン管理システムが使えないPDAなどを利用する場合でも、 毎回異なる名前のファイルを作って サーバ上でデータを統合するようにしておけば同様の処理が可能です。

実世界情報の利用

紙に書いたメモや実世界の情報は、 スキャナやデジカメで画像化したうえで Wikiページに貼り付けておくと便利です。 Wikiページのタグを利用して、 情報を整理したり検索したりすることができます。


問題を解決するのに最も効率が良い方法は「人に聞く」ことです。 現在のソーシャルネットワークやメーリングリストシステムは情報の検索や共有に最適とはいえませんし、 現在流行しているソーシャルブックマークシステムは人の交流を充分サポートしているとはいえません。 様々なLifeHackを駆使しつつ、 人間の交流と情報の交換を両方うまくサポートする優れたシステムの出現を期待したいものです。