.NETで始めるデザインパターン

stateptn.jpg
楽しみにしていた 中西 さん の記事が @IT に載った。

私の偏見かも知れないが、.NET 開発者は、Java の人たちと比較して、オブジェクト指向だのデザインパターンだのに慣れていないような気がする。
だから、今回のような .NET 開発者向けの記事は、これからとても重要だ。
これから .NET 開発者の前には、テスティング フレームワークだとかリファクタリングだとかエンタープライズ パターンだとか DI (DependencyInjection) コンテナだとかアスペクト指向だとか、Java の人たちが取り組んできた様々な技術の可能性が待っている。
そしてこれらは、オブジェクト指向やパターン技術に関する知識を前提としているのだ。
ところで、中西さんは、ドットネッターでアジャイラーで TDD Player (謎) だ。
なので、デザインパターンの有用性を .NET 開発者に教えるのにもなんだかとてもアジャイルな感じだ。
これまでのデザインパターンの解説に、次のような言葉が使ってあるものがあっただろうか。

  • 「モチベーション指数」
  • 「ホワイト・ボードにクラス図」
  • 「NUnit用テスト・コードを記述してみよう」

例題も、HowMuchGreenbarLover メソッドだとか、HowHappy メソッドだとか。
福井 さん も書いてたが、とても中西さんらしい。
※ この記事は、Ichikawa さん のところでも紹介されている。
さて、今回の記事では、次のような問いに答えている。

問い:
「デザインパターン? 何それ? 何が良いの? .NET な我々にメリットあるの?」

でこれに関する有り勝ちな答え:

  1. 「デザインパターンというのは、こうこうこういうものだ」
  2. 「例えば、State パターンというのがあって、それはこういうもので・・・」
  3. 「使い方は、こんな感じ」
  4. 「VB.NET や C# でサンプル コードを書いてみると、こんな感じだよ」
  5. 「ねぇ、わかった? 良さそうでしょ。使ってみてよ」

これは、演繹的な説明だが、なんだかウォーターフォールな感じだ。
「うーん、どういうものかはなんとなく判ったけど… まあいいや、また今度改めて勉強するよ」
とか言われてしまいそうだ。
# 私経験有りますから!! 残念!!! 切腹!
で、中西 さん の答えは一味違う。少し真似してみるとこんな感じだろうか。
中西さん風の答え:

  1. 「例えば、VB.NET や C# でこんなコードがあるとするやん」
  2. 「ありがちなコードやけど、これってどうなんかなー 自分どう思う?」
  3. 「こんな風にしてみたらどうかなー」
  4. 「な? 自分知ってるやろ? ポリモーフィズム。どう、これ」
  5. 「これが State パターンや。で、今やったのがリファクタリング」
  6. 「な? 今度から State パターンやらいうたら、こういうのを指すんやで」

※ フィクションです。実在の中西さんとは関係ありません。
「デザインパターン23個覚えたぞ。さあ何かに役立てよう」でなくて、リファクタリングの結果として、使うべきところに使う分だけのデザインパターン。
こういきたいものだ。
さあ、今後の連載にも期待だ。


※ 2005/02/02 第2回が掲載。

.NET

Posted by Fujiwo