デザインパターンは、モアレやうねりのようなものだと思った。
パターンとパターンが、近くて似ているが、ちょっとだけ違うと、もとのパターンより大きなパターンがでてくることがある。
もちろん、なんとなく似てるかな、と思っただけ。

デザインパターンというと、ちょっと漠然としてしまうので、デザインパターンといえばここではGoFのやつということで。
デザインパターンは、20以上ある。たとえばO/Rマッパーに使われたりするActiveRecordなんかは、リレーショナルモデルとオブジェクト指向の干渉縞のようなものだと思う。てことは、オブジェクト指向というパターン自体が使われなくなったら、ActiveRecordパターンの存在意義もおそらくなくなるだろう。もちろん、急にぱったりとオブジェクト指向がなくなることはないだろうから、覚えておくことの価値の減少は相対的なものだろうけど。たとえば、COBOL特有のテクニックとか、一般的に見れば覚えておく価値は減っただろうから、学生がとりあえず勉強しておこう、とは今は思わないはずだ。
だけど、当然だけど、技術的なことの価値っていうのは、状況に依存して大きく変わる。今もCOBOLのシステムはたくさんあって。。。。zzz
ということで、もしJavaのプログラミングが重要な職場にいたり、べつにJavaじゃなくてもRubyとかでO/Rマッパーを使ったり作ったりする立場にいるなら、AcriveRecordっていうパターンがあることを知ってたら、それは知らないよりいいだろう。
ていうか、知らないよりは知ってたほうがいいに決まってる。知っててかえって損することなんてあんまり想像できない。
だけど、もしこれから新しく勉強しようとするなら、それにはすくなくとも時間というコストを投資することになる。常に知っていた方がいいことはたくさんあって、プログラミングに関係した技術に限っても、アルゴリズムの話とか関数型言語だとか、いろいろな言語とかOSのこととかプロトコルのこととか計算量の理論とかラムダ計算とか圏論とか集合論とか論理学とかルータのこととかセキュリティのこととかもうたくさんありすぎる。
そんなにたくさんあるなかで、能動的に勉強するに値する状況は、そんなにないだろう、と。スレッドセーフなシングルトンの書き方を暗記するより、オブジェクト指向そのものについてと、並行・並列プログラミングモデルの話とかきちんと知ってる方が応用が利くだろうと。あぁ、もうなんかやだ。なんか感じ悪いことになってしまった。何が重要か重要じゃないかなんてことはごく主観的で個人的なもので、一般論の皮をかぶせて話すのがそもそものまちがいだ。
寝言だ。寝て言え。