2006年7月27日木曜日

DEVONthinkを使った情報管理

うちでは, 外部の公開されている情報 (調査やなんかで見た Web ページや PDF ファイルや画像やそんなもの) はすべて DEVONthink Pro という知識ベースに突っ込んである.


何が便利かといって, まぁ何も考えずに突っ込んでも後でいくらでも検索や分類ができるところか. MacOSX では Spotlight というデスクトップ検索ツールが頑張ってはいるんだけど, こういう特定の使い方に関してはなかなか適わないと思う.


とは言っても, DEVONthink を使うのもなかなか大変であった. 何しろ高機能だし, 汎用性が高いし. で, 今ではこうなっている.



  1. まず DVD サイズのディスク・イメージを作る. MacOSX ではこのディスク・イメージという奴は情報蓄積に大変便利なのである. このイメージいっぱいにデータが溜まったらDVD-Rとかに焼けばよい.


  2. で, このディスク・イメージに YYYY/yymm/yymmdd という形のフォルダを掘って, その日に get した情報はみんなそこにどんどん突っ込む. ただしソース・コードやソフトウェアは入れていない (これは別の場所). 圧縮されたものは解凍する. 特定のアプリケーションのドキュメント (.ppt とか) はできれば PDF 化しておく. これは MacOSX では簡単なんで...


    1. なんでとりあえず日付というメタ・データでインデキシングするかというと, これがいちばん自明なインデックスであることと, NoteTaker に書かれたジャーナルと突き合わせると「前にこんなことを調べたはずだけどその時はどうだったっけ」ということがすぐに分かるのである.




  3. DEVONthink からはこのディスク・イメージに対して, File | Index... するとファイルの実体はここに置いたまま, インデックスだけ DEVONthink 上に作ってくれる. 実体も DEVONthink に抱えさせてもいいんだけど, そうするとデータ量が増えたとき起動にものすごく時間がかかるのだ. 容量も際限なくなっちゃうし.


  4. いったん索引を作ってし まったら, ディスク・イメージの yymmdd にデータを追加するたびに, DEVONthink からその yymmdd に対して, File | Synchronize すればインデックスは更新される. yymmdd の下にあるデータ量は大したことないからインデキシングはすぐに終わる.


  5. DEVONthink では, いつでも簡単に全文検索ができる. PDF ファイルも最近はテキスト付きが多いし, MacOSX で簡単に作れる. それから簡単にフォルダ風の分類ができる. しかもファイル・システムとは違って, ひとつのファイルを複数の分類に入れることができる. だから何かの目的で get したものはその目的でグループ化しておけば, 後で使い回せる.


というわけで, 今の時点で約 3 年分, 4000 ファイルくらいがここに溜まっているわけだ.



2006年7月18日火曜日

見える化?

「見える化」「見える化」つったって, 今の「見える化」は「見せる化」というか, モノやプロセスの側がヒトによく見えるように工夫しようというもののわけで, ヒトの方がモノやプロセスをよく見えるようにならなくちゃという「見える化」じゃないんだよね.


ヒトの (動体) 視力を上げるのは簡単なことじゃない, と気付いたところから「見せる化」は始まっているんだけど, 「(ヒトの) 見える化」がいつかは必要になるはず.


じゃあどうしたら (動体) 視力を上げることができるか.



  1. 「見えちゃった化」. 気づき. 本当は誰かいいコーチがいるといいんだろう. 本人の感度をあげる訓練も必要.


  2. 「見たい化」. 欲望. あぁ, あれをもう一度見てみたい, という欲求が重要.


  3. 「見える化」. 一度見えるようになるとそれ以外のいろんなモノも自然と見えてくる.


  4. 「見ない化」. 一度見え始めるときりがなくなったり, 見ること自体の喜びで終わってしまう. これは見なくていいんだ, とか, 見たらどうすればいいかということが分かってくると本当の「見える化」.


  5. 「見えない化」. もう見なくてもいい, というか, 最初からみんな見えているというか:-) 不射の射ですな.



2006年7月11日火曜日

VoodooPad 3

新しい本の原稿を VoodooPad で書こうと思って, 2 から 3 にアップグレード. ところが, だめなんだな, リモートのファイル・システムにおいたドキュメントを開けないのだ.


実は最近の MacOS X は CoreData と いうデータ (アプリケーションの操作対象) を扱うフレームワークを持っていて, バッキング・ストレージとして XML, SQLite, Binary を使うことができる. Binary は今までどおりオブジェクト・ネットワークをシリアライズしたもの. SQLite はオンメモリ / スタンドアロンの RDB にオブジェクト (クラス) をテーブル化して入れてしまおうということだ.


VoodooPad は多分 2 から 3 にアップデートするときに CoreData フレームワークに移行して, バッキング・ストレージを SQLite にしたんだろう. SQLite は速いし, 大量のデータを扱える. その代わりにちゃんとしたロック・プロトコルを持たないファイル・システム上に置くことはできない.


ほとんどのファイルをサーバに置いて, ノートブックを持ち歩いていろんなところで仕事をする僕には大変困った事態なのである.


格言: 「あちらをたてればこちらがたたず」


でもさ, クライアント=サーバの SQL エンジンならともかく, 普通のアプリケーションのデータ・ファイルをリモート・ファイル・システムに置けないってのは「ダメ」じゃないか.


ちなみに VoodooPad はデスクトップ Wiki システム. なんと言っても Wiki ワードを自動的にハイパーリンクにしてくれる. なかなか優れたアプリケーションではあるのだが.



2006年7月7日金曜日

キヌガサタケ

みごとなキヌガサタケ. 食べられるらしいんだけど... 迷う...

kinugasatake.jpeg

2006年7月6日木曜日

ソフトウェア開発は何ものにも似ている

ソフトウェア開発をあたかも建築のように考えてみる, とか庭仕事のように考えてみる, とか絵を描くことのように考えてみる. それによってソフトウェア開発のある側面に新鮮なアイデアをもたらす, というのはよくある手だが, その一方で, いや, ソフトウェア開発はソフトウェア開発なんだから, 他の仕事の比喩ではなく, ソフトウェア開発そのものとして語られるべき, という考え方 (「ソフトウェア開発は何ものにも似ていない」) もある.


ま, そりゃそうなんだが.


でも.


むしろ逆にソフトウェア開発とは建築でもあり, 庭仕事でもあり, 絵を描くことでもあり, ... ってこともあるんじゃないか. ソフトウェアが何ものでもあり得るのと同じように.



プロジェクトの尺度

ソフトウェア・プロジェクトの尺度 (生産性とかコード行数とか欠陥密度) をプロセス改善に使うときの問題点はいろいろあるんだけど, その一つに次のようなものがある. あるひとつの尺度をプロセス改善の目安にすると, その尺度を向上させることはできるのだけれど, 必ずしもプロジェクト全体は良くならない.


例えば, 個人の生産性を尺度にするとひとりひとりの生産性の平均は上がってもプロジェクト全体の生産性は落ちてしまうとか, 生産性を尺度にすると隠れた品質も含めた全体の品質は落ちてしまうとか.


それに対処する方法もいくつかある. その一つは尺度をひとつではなく, 複数にして多面性を持たせる. うまくいくこともあるけど, 結局は尺度が際限なく増えて, ソフトウェアを作っているんだか, 測るのが目的なのか分からなくなることもある.


別 のやり方として, ひとつひとつの尺度ではなく, それらを総合した全体的な尺度を使えばいいという考え方もある. そんな尺度はあるのか? すべての尺度と互換性を持ち, すべての尺度を総合した結果を表すような尺度が. 現代社会ではそれは「貨幣」と呼ばれている. 要するにそのソフトウェアがどれだけ稼げるかを問題にすれば, 「見えざる神の手」がすべての尺度のバランスをとってくれるのではないか, というわけだ.


しかし同時に貨幣という尺度はある規模を超えると非常に不安定で,  それ自身が自律した絶対的な価値になってしまうらしいことも分かっている.  例えば歌には売れた CD の枚数 (= 貨幣価値) とは違う尺度が必要なのだ (本来は).


NoteTakerを使った作業管理

NoteTaker は元は NeXT 向けの Notebook というソフトウェアで, もう10 年以上前からあるわけだが, 今でも他に類を見ない (実は同じく Notebook から分岐した似たソフトウェアもある:-) 画期的なキッチン・シンク・ソフトウェアだ. 2006 年 7 月現在での NoteTaker の使い方をメモとして記録しておく.


さて, ToDo/ジャーナル管理ツールとしての NoteTaker はこうやって使っている.



  • 年に 1 冊の NoteTaker ドキュメントを作る. 例えば "2006".


  • "2006" というセクションを作る. NoteTaker はマルチページ・アウトライナで, セクション, ページという階層で管理できるのだ.



    • このセクションの "2006" ページにはその年のビジョンを書く. ビジョンなので ToDo の形でなくてよい.




    • このセクションの "01" ~ "12" ページには "2006" を実現するための, あるいは実務的な各月の ToDo を書く. たいていは前の月から持ち越したものに, 何かが付け加わる感じだ.




  • "01" ~ "12" セクションを作る.



    • 各セクションは "2006.04.03" というような日ごとのページと, 月曜日のページの前には "n-th week" という週ごとのページからなる.


    • 週ごとのページは, その週にやる予定のこと. かなり具体的で細かいはず. 週の頭に書く. 毎日チェックする. NoteTaker はアウトラインの各項目にチェックボックスが付くので, 終わったものはチェックを入れ, 新たに発生した項目は追加する.




    • 日ごとのページはその日にやる予定のこと. 多分週のをさらにブレークダウンしたものになる.


    • さらに日ごとのページにはその日にしたことをほぼすべて, するつど, 片端から書き残していく. 特定のプロジェクトに属さないアイデアや調査事項など成果物もすべて.




  • NoteTaker を使わないもの



    • NoteTaker は日常作業, プロジェクト化されていない作業の管理に使う.


    • 特定のプロジェクトに関する成果物はすべて NoteTaker ではなく, ファイル・サーバ上の Working/プロジェクト名の下に置く. その一部として, 別の NoteTaker ドキュメントを使うことはもちろんあり得るが.


    • 自分一人だったり, もの作りでないプロジェクトの管理には BaseCamp を, ソフトウェア開発のプロジェクト管理には自分ちのサーバ上の XPlanner を使う.




ポイントは"連続性" (continuous-ness) だろうか. ある作業が (半自動的に) 次の作業を生むような仕組み.



2006年7月5日水曜日

"Getting Real"を読む

"Getting Real" は Ruby on Rails の開発者 37 signals による, 彼らなりのアジャイル. 本屋には売っていない. 彼らから直接 PDF で買う. なかなかいいビジネスだ. 要旨を日本語にしてみた.



仕事の作法 2006年版

メモ代わりに2006 年 7 月現在の仕事のスタイルを記録しておこうと思う.


毎日, 朝, MacOSX の Dock を上から順に (NeXTStep 時代からの習慣でうちでは Dock は右端に縦に並んでいる)



  • Mail.app


    • メイルのチェック, 返事.


    • その場で返事を書けないものはフラグを立てておくと, ToDo というスマート・メイルボックスに入るようにしているから, ときどきこのメイルボックスを見ればよい.




  • Safari (Web ブラウザ), NetNewsWire (RSS リーダ), gnus on Emacs (NetNews リーダ)



    • いつも見ている外部情報を巡回.




  • iCal (カレンダ)



    • 今日しなければならないことをチェック.





  • NoteTaker (ノートブック)



    • 昨日の ToDo, 今週/今月の ToDo から今日の ToDo を作る.


    • 後は, ToDo を消化しつつ, やったことを NoteTaker にジャーナリングしていくことの連続.





  • DEVONthink Pro (知識ベース)



    • いろんな公開されている外部情報はすべて DEVONthink でインデキシングする.




  • NoteTaker, CalendarMemo (ノートブック), OmniOutliner (アウトライナ), OmniGraffle (作画), NovaMind (マインドマップ), MagicDraw (UML), Eclipse (プログラミング)


    • が主な作業ツール.


    • いわゆるオフィス・スーツはほとんど使わないな.




  • FireFox+Plone


    • で, その作業成果の中から, 公開できるものは FireFox を使って Plone に公開していく.


    • Safari じゃなく, FireFox を使うのは Kupu というビジュアル・エディタを使うため. 外部エディタとして, JeditX や Nvu を使うこともたまにあるけど.





  • BaseCamp, XPlanner


    • 以上は個人の日常的な作業管理だけど, 複数人数でのソフトウェア開発プロジェクトは自分ちのサーバ上の XPlanner で, それ以外のプロジェクトは BaseCamp で管理する.




メイルや Web, NetNews など決まった外部情報にアクセスするのは基本的に朝と夕方, 深夜の一日 3 回だけ.


Dock を上から順にクリックしていくのを, 一日 3 回繰り返すというのはミソなんである. これを Windows 上でやれ, と言われたら...... 廃業します.