思索

拡張の技法・その1

今回は、ものごとの、特に情報や意味概念などの整理整頓の考え方について書いてみようと思います。

いろいろとものがあふれている時代で、PCやスマートフォンやそれらの周辺機器、そのスペックの情報やバージョンの情報、それらが作り出したデータなどの管理、大変ではありませんか?ワードといわずテキストエディタに書き溜めてみたり、普通に紙のノートにメモをまとめたり、マインドマップを書く方もいらっしゃるでしょう。僕はマインドマップを使いこなせないのです。なぜか。

複式簿記をがんばって習得なさった方は少なくないと思います。複式簿記をつけることができれば、損益計算書と貸借対照表の税制上大事な二つの書類をまとめあげることができます。僕はあの損益計算書のフォーマットが大好きなのです。どのような費用がどんな意味合いを持つのかが実によくわかるからです。あれを二次元平面に無秩序にバラバラッと線で繋いだだけで描いたのがマインドマップ。せっかく階層的にまとめていたのにその規則を取り除いてよくわからなくなってしまったのがマインドマップ。僕にはそのように映るのです。

情報の記載についての規則が強い書類には情報を足すのも参照するのも容易です。記載についての規則そのものがその書類の世界を色濃く作っているからです。逆に記載についての規則の弱い書類はそこに情報を加えるのは一見容易いですが参照するのは容易ではありません。日記を想像してみてください。日付をつけてその日にあったことを描いていくのは容易いです。ところが書き溜めた日記の中から「あれ。iPhoneの2年縛りが解ける月は何月になるんだっけ」とか思っても答えを出すには日記より契約書を探すか窓口に電話する方が早いです。

つまり何か情報を記して、後の参照を便利にしようと思うとき、記載についての規則は強い方がいいのです。そして工夫した方がいいのは「拡張できる規則」で蓄積を始めるということだと思うのです。では問題です。「拡張」とはどのようなことでしょう。延長とは違うのでしょうか。この問題の大きなヒントを「オブジェクト指向」が僕に教えてくれました。

オブジェクト指向。結構前からちらほら聞かれる言葉です。C++や(かつてのSUN)Javaあたりから徐々に強くなって最近ではもうその次がなんかあるらしいですが僕はまだオブジェクト指向を身につけて使いこなしたいという、発見の喜びからこの記事を書いています。Rubyを勉強し始めたのです。このサイトのコンテンツを増やしていったり、ちょっと動的なものにしようとcgiを勉強しようと思ってどの言語がいいかなとネット上を探していたら、150ページ以上のRubyの解説書の無料のPDF書類を見つけたのです。それまではphpで頑張っていましたが、phpではなかなかコードをエレガントに描くのが難しいのです。エレガントというと「カッコつけちゃって」と思うかもしれませんが、エレガントに描かれたコードは後で自分が読んで理解しやすいのです。オブジェクト指向のRubyは、Cなど関数型言語の次の世代だけあって、とっかかりが最も障壁は高かったのですが、分かってくると少しずつ理解が早く進むようになるし、何しろエレガントなコードを描くことができます。

Rubyは、大雑把にいうとオブジェクトとメソッドだけですべての作業を記述するようになっています。また「クラス」という概念があって、これで階層構造が表現できます。あるクラスを定義したら、ほかのクラスの定義と関連させてそれらを含みつつ超える上位概念のクラスを定義したり、逆に具体的な事柄を加えて下位概念のクラスを定義していくことができます。長くなりますので今回はこの辺りにします。つづく。