学習

「同じゴールを認識するために、ちゃんと学習してくれ。」
ここのところ、オブジェクト指向から離れた仕事が続いている。かつてはそれっぽい本が出る度に買いあさっていたと云うのに…。錆付いてしまうのではないかとか、時代から取り残されるのではないかと、やや焦燥感があったりするのだが…。

そんな私の横で、「オブジェクト指向をすることが目的になってしまっては本末転倒ですからね。」ともっともらしい雑談が交わされている。「SQL を隠蔽することなんてまったく考えなくていいです。」と、頭を抱えてしまう会話も聞こえてくる。「もしかして、俺、邪魔?」と頭をよぎるのは、被害妄想だろうか?

まあ、SQL 隠蔽不要の話は、思想的には反対だけど、現実的には賛成だ。システム開発を受注した以上、顧客要件を満たすシステムを納期までに納めることが大切だ。そのためにはオブジェクト指向言語が持っている機能を使うよりも、SQL をこねくり回して開発する方が、チームに適していると考えられるからだ*1

少し話はそれるけれども、何かの判断をする時、基準となる物差しを意識することが大切なことだ。先の例で、物差しに相当するのは、「思想的」「現実的」の部分だけれども、ここをすっとばして会話をすると噛み合わない虞がある。一方が理想論で、もう一方が現実解と云うパターンはありがちな齟齬のパターンだ。会話が噛み合わないと思ったら、物差しチェックだ。

では、続き。「オブジェクト指向をすること*2は目的ではない。」は、もっともな話だ。だけどちょっと待って欲しい。目的はオブジェクト指向ではないにしても、一度はオブジェクト指向を頭の中に取り込んでみて欲しいと思うのだ。いや、本当は別にオブジェクト指向でなくても、他の方法でもいいのだ。オブジェクト指向だけぢゃなく、他の方法もちゃんと学習してないでしょ?

例えば ERD。世の中で ER 図が描ける人はたくさんいるのだろうけれども、それは表記法を知っていると云うことであって、モデリングができると云うことと同じではないはずだ。そもそも、ERD がモデル表現であり、RDBMS のテーブル定義とは別物として区別している人がどれだけいるだろうか? 「えんてぃてぃ・りれーしょんしっぷ・もでる」を表現する手段が「えんてぃてぃ・りれーしょんしっぷ・だいあぐらむ」なのだ。

正規化も重要。î•ñ‚̐³‹K‰»‚ɂ‚¢‚ĉðà‚µ‚Ü‚·。正規化をうまくできないのと、非正規化するのとは訳が違う。それに加えて、サロゲートキーも抑えておきたいキーワードだ。http://sonic64.hp.infoseek.co.jp/2005-01-07.html。ま、これは実装段階の話だけれども。

別に旧来の方法を採用するのはかまわないのだけれど、UML ほど表記方法の定義が広まっているものはないと思うのだ。フローチャートにしても、ERD にしても、ほとんどの人は我流かツール任せでしょ? 業務フローを書くにせよ、ERM を書くにせよ、基準となるものがかなり希薄だし。方法論もウォーターフォールと云うキーワードはあるけれど、ちゃんと学習した人はほとんどいないはずで、なんとなくの経験則で進めていることがほとんどだろうと思う。だけど、今やオブジェクト指向UML は、本屋でもインターネットでも資料はいくらでも手に入る。それを考えれば、他の方法するよりも学習は容易なはずだ。身に付くかどうかは別問題だけれども…。

まあ、ちゃんと開発できるならなんでもいい。もうちょっとちゃんと仕事しようよ。プロなんだから。

*1:開発言語は C# なんだけどね

*2:なんと云うか、微妙な表現だなぁ…。でも、訂正しない。