アンチパターンってなに?

2009年5月11日(月)
細川 努

アンチパターンとは

 JUAS(日本情報システム・ユーザー会)の発表では、大規模システム(500人月規模以上)の開発では、過半数が工期が遅れ、半数ほどが予定予算を超過しているそうです。それくらい、ソフトウエア開発は、失敗が日常化し、その結果として、開発に携わる技術者は大変な苦労を重ねています。

 アンチパターンは、こうした、ソフトウエア開発が失敗に陥る際に多く見られる、間違ったソリューション(解決策)をパターンとして整理し、さらには失敗を避けるにはどうしたらいいのかを示してくれます。

 もともとアンチパターンは、AT&Tの技術者であるアンドリュー・コーエンが1995年に提唱した概念です。この概念に基づいて、1998年に「アンチパターン」という書籍が刊行され、数多くのアンチパターンが広く用いられるようになりました。

デザインパターンとの比較

 デザインパターンは、オブジェクト指向によるソフトウエア設計を行う際に、お手本となる「良い設計」を集めたパターン集です。

 ソフトウエアの開発では、達人レベルのプログラマーと初心者レベルのプログラマーとでは、プログラムの生産性や保守性に大きな違いが生じます。そこで、達人レベルのプログラマーは、数多くのプロジェクト経験を積み重ねた結果、プログラミングに関する問題に対して、同じようなソリューション(解決策)を用いており、こうしたプログラミングにおける良いソリューションをパターンにしたのが、デザインパターンなのです。

 ところが、アンチパターンでは、以下のように、失敗と成功に至る2つのソリューションを示します。

1.アンチパターンのソリューション
 ソフトウエア開発を失敗させる、間違ったソリューション。こうした悪いやり方は、ソフトウエア開発の現場で多く見かけられるもので、深刻な結果をもたらしかねないのです。

2.リファクタリングされたソリューション
 間違ったソリューションの見直し(リファクタリング)を行い、良い結果に導くための解決策。アンチパターンによって、悪い結果が生じるのに対して、やり方を見直すことによって、良い結果を出せるように変えていくにはどうすれば良いのかを示します。

 それでは、次のページから、代表的なアンチパターンを紹介していきたいと思います(*1)。

株式会社アーキテクタス
(株)アーキテクタス 代表取締役 技術士(情報工学)大手シンクタンクで金融系システム構築等を経験。現在、総務省CIO補佐官として、総務省内のシステム構築への助言等を担当している。要求開発アライアンス理事 日本Javaユーザー会(JJUG)監事

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています