アンチパターンってなに?
アンチパターンとは
JUAS(日本情報システム・ユーザー会)の発表では、大規模システム(500人月規模以上)の開発では、過半数が工期が遅れ、半数ほどが予定予算を超過しているそうです。それくらい、ソフトウエア開発は、失敗が日常化し、その結果として、開発に携わる技術者は大変な苦労を重ねています。
アンチパターンは、こうした、ソフトウエア開発が失敗に陥る際に多く見られる、間違ったソリューション(解決策)をパターンとして整理し、さらには失敗を避けるにはどうしたらいいのかを示してくれます。
もともとアンチパターンは、AT&Tの技術者であるアンドリュー・コーエンが1995年に提唱した概念です。この概念に基づいて、1998年に「アンチパターン」という書籍が刊行され、数多くのアンチパターンが広く用いられるようになりました。
デザインパターンとの比較
デザインパターンは、オブジェクト指向によるソフトウエア設計を行う際に、お手本となる「良い設計」を集めたパターン集です。
ソフトウエアの開発では、達人レベルのプログラマーと初心者レベルのプログラマーとでは、プログラムの生産性や保守性に大きな違いが生じます。そこで、達人レベルのプログラマーは、数多くのプロジェクト経験を積み重ねた結果、プログラミングに関する問題に対して、同じようなソリューション(解決策)を用いており、こうしたプログラミングにおける良いソリューションをパターンにしたのが、デザインパターンなのです。
ところが、アンチパターンでは、以下のように、失敗と成功に至る2つのソリューションを示します。
1.アンチパターンのソリューション
ソフトウエア開発を失敗させる、間違ったソリューション。こうした悪いやり方は、ソフトウエア開発の現場で多く見かけられるもので、深刻な結果をもたらしかねないのです。
2.リファクタリングされたソリューション
間違ったソリューションの見直し(リファクタリング)を行い、良い結果に導くための解決策。アンチパターンによって、悪い結果が生じるのに対して、やり方を見直すことによって、良い結果を出せるように変えていくにはどうすれば良いのかを示します。
それでは、次のページから、代表的なアンチパターンを紹介していきたいと思います(*1)。