汎用性という罠

ソフトウェア開発の現場で良く耳にする言葉の一つに「汎用性」なるものがある。例えば、下記のような文句を聞いたことは一度や二度では無いはずだ。

  • このソフトは他でも使えるように汎用性を持って欲しい。
  • このモジュールは次の案件でも流用出来るように汎用性を確保すること。
  • 汎用性を持ったソフト開発こそ価値がある。

確かにその場限りの状況に特化した構成よりは、何にでも使える「汎用性」を持った方が好ましいことは確かだろう。誰も同じような開発は繰り返したくないし、似たようなモノばかり作っていてはコストばかりかかって投資対効果が薄れる。だから、大きな目標として汎用性を目指すことは悪くはないと思う。

しかしながら、(これもソフトウェア開発の現場にいる人なら分かっている事なのだけど)銀の弾丸の如く何にでも万能的に使える汎用性なんて言うものは存在しない。ある場面では使いやすいとか、特定の範囲では効果的に使えると言う程度が現実であり、「何にでも使えるパーフェクトな汎用性」なんて未だかつてお目にかかったことが無い。

もう少し具体的に「○×という開発案件で2次利用出来ること」という表現なら、その方向性を見据えた上で汎用性なる手がかりを見出せるかも知れないけれど、目に見える材料が何もない段階で「将来出てくるかも知れない漠然としたナニカ」に対する汎用性なんて、何をどう考えたらよいのかまるで見当がつかない。想像力を駆使して汎用性をデッチ上げたところで、結果的にその想定が外れたことは数限りない。

厄介なことに、ソフトウェア開発の現場にいながら技術に疎い人に限って「汎用性」という言葉を連呼するのだ。だから、汎用性というキーワードを繰り返す人には、具体的な形として何をどのように考えているのか問うようにしている。その回答の中身が薄く技術的根拠や具体性が乏しいほど、「汎用性とは何なのか」理解していないことは明らかだろうと思う。