Development Style
第4回 読者調査結果
〜 デザインパターンはどこまで使われているか? 〜
小柴豊
アットマーク・アイティ
マーケティングサービス担当
2003/5/28
ソフトウェア開発における生産性向上のキーワードで最初に思い浮かぶのは“再利用”だろう。クラス/コンポーネントからフレームワークまで、ソフトウェア開発の各工程で再利用への取り組みが活発化している。そんな中、話題なのが、ソフトウェア設計時に起こりがちな問題とその解決策を類型化し、再利用する“デザインパターン”である。最近では書籍や雑誌でも取り上げられる機会が増えたデザインパターンだが、開発の現場ではどの程度活用が進んでいるのだろうか?
Development Styleコーナーが実施した第4回読者調査から、その状況をレポートしよう。
デザインパターン活用状況 |
はじめに、読者のかかわるプロジェクトでのデザインパターン活用状況を聞いた結果が図1だ。現時点でデザインパターンを利用しているのは、「すでに多くの案件で活用している」および「最近活用を始めたところ」を合わせて、全体の31%であった。
また現在未活用の読者の中でも、その多くが「今後活用を予定/検討中」または「プロジェクトでの活用予定はないが、個人的に興味がある」と答えているように、“設計ノウハウの再利用”というコンセプトは多くの開発者にとって魅力的なものであるようだ。
図1 デザインパターンの活用状況(N=346) |
“GoFのデザインパターン”利用状況 |
それでは次に、パターンユーザー読者の具体的な利用状況を見ていこう。今回の調査では、代表的な“GoFのデザインパターン”について、カテゴリごとに個別パターンの利用率を尋ねた。
まずは“生成に関するパターン”の利用について尋ねた結果、現在最も使われているのは「Singleton」パターンだった(図2)。Singletonは“あるクラスのインスタンスが1つだけであることを保証してグローバルアクセスを与える”パターンだが、過去に行ったJava Solution読者調査などを見ると、無駄なオブジェクト生成を抑制してシステムのパフォーマンスを向上させる場合にもよく利用されるようだ。パターンユーザー内の使用率(73%)は全項目中トップであり、GoFの中で最も使われるパターンとなっている。
またSingleton以外にも、オブジェクト生成をサブクラスに任せる「Factory Method」や、関連するオブジェクト群をクラス名を明確にせずに生成する「Abstract
Factory」の利用率が共に6割を超えており、このカテゴリに属するパターンの利用頻度の高さが分かる。
図2 GoFパターン利用状況:生成に関するパターン(複数回答) |
続いて、“構造に関するパターン”の利用状況を見てみよう(図3)。この分野では前述のSingletonほど目立つ項目はないが、オブジェクト群をツリー構造に組んで「全体−部分」を区別せずに扱う「Composite」やクライアントが求めるインターフェイスと既存インターフェイスを変換する「Adapter」、サブシステム内の複数インターフェイスに統一インターフェイスを与える「Facade」の利用が上位に挙げられている。
図3 GoFパターン利用状況:構造に関するパターン(複数回答) |
最後の“振る舞いに関するパターン”カテゴリでは、集約オブジェクトの内部表現を公開せずに要素順にアクセスする「Iterator」および、アルゴリズム構造は変えず処理はサブクラスに任せる「Template Method」が、共にパターンユーザーの過半数から利用されていることが分かった(図4)。
図4 GoFパターン利用状況:振る舞いに関するパターン(複数回答) |
今回の調査では個別パターンの適用方法までは触れられなかったが、もし、あなたがこれからデザインパターンを学ぶのであれば、目安としてこれら利用率の高いパターンから取り組むことで、実践に結び付けやすい学習ができるかもしれない。ちなみにIterator/Adapter/Template Methodなどは、この分野の入門書として定評のある結城浩氏の『Java言語で学ぶデザインパターン入門』(ソフトバンクパブリッシング)でも、分かりやすい例として序盤に紹介されている。分かりやすいパターンだからこそ、利用率が高いともいえるだろう。
デザインパターン活用上の課題と情報ニーズ |
さて、以上見てきたように普及が進むデザインパターンではあるが、その学習/活用を進めるうえで、現在どのような課題があり、それに対してどのような情報が求められているのだろうか。読者からは、「書籍や記事に掲載されている例題やサンプルソースの内容は理解できるが、実践でどう活用してよいのかが分からない」「パターンを使用することにこだわり、普通に作ればすぐできることに無駄に時間をかけて悩んだり、かえって融通が利かない設計になってしまうことがある」といったコメントが多数寄せられた。図1で見たように現在はデザインパターンの普及初期といえる時期だけに、まだ実践的な経験知/暗黙知が蓄積されていないのだろう。読者にいま知りたい情報を尋ねてみても、トップに挙げられたのは「実際の開発案件におけるパターン適用事例」だった(図5)。 デザインパターンがさらなる普及を遂げるためには、弊社を含むメディアや各種コミュニティにおける、ベストプラクティスの交換が肝要となるだろう。
図5 デザインパターンに関して知りたい情報(複数回答 N=346) |
そのほかのソフトウェアパターン利用意向 |
今回は上述したようにGoFの利用状況を中心に調査を行ったが、いまやソフトウェア開発のさまざまな局面で、パターン策定が進められている。そこで最後に、GoF以外のソフトウェアパターンに関する読者の利用意向を紹介しておこう。図6を見ると、最も読者が関心を持っているのは、J2EE設計に特化した「J2EEパターン」だった。また、それに続いてソフトウェアアーキテクチャをパターン化した「アーキテクチャパターン」や、ビジネスをモデル化する「ビジネスパターン」などへの関心も広がっているようだ。こうしたパターンへの関心が実務に普及するかどうかは、今後、ますます俊敏さが求められるソフトウェア開発において、プロジェクト成否のカギを握る要素となりそうだ。
図6 今後利用したいソフトウェアパターン(複数回答 N=346) |
■関連リンク
-
・情報処理学会ソフトウェア工学研究会 パターン・ワーキンググループ
■調査概要
-
・調査方法:Development Styleコーナーからリンクした Webアンケート
・調査期間:2003年3月24日〜4月18日
・有効回答件数:346件
IT Architect 連載記事一覧 |