汎用性がめちゃくちゃ高いアプリケーション

高い汎用性が求められるアプリケーションって、結局はOSとかプログラム言語、DBMSとかフレームワークに任せるべきで、SI屋が開発するモノに対して汎用性を求めすぎると、下手に抽象化した、イメージしにくいモノが出来上がるのが世の常。

汎用性を高めようとしたと思われる、とあるパッケージ製品でデータベースのカラム名が「value01」〜「value99」って並んでてぼっくりしたことがあった*1し、それは設計がクソですむけど、その要件で正規化しても「設定項目」だらけになったりして、全コードのうち半分が「設定項目の保守と整合性チェック」に使われていたり。直接的ではないコードはメンテナンスでも想像力を浪費する。

ユーザは欲しい機能が欲しいわけで、要らない機能はどっちでもよく、どっちでもいいものは簡単に「(できれば)作ってください」と言われるかも知れない。でもそのとき、それは将来必要になるのか、それはどんな場面か、そのときに機能拡張する方が効率的ではないかを含めて検討し、または検討材料を与えて検討を促してみるのも一手。

まぁ、大抵は「既に決まっている期間と予算に機能を詰め込まれる」場面が多いんだけどね。

*1:value??項目に対して特定の区分の場合にどう解釈するかのテーブルがあって、そこでは名前とか取り得る値の範囲とか、さらには「オレオレデータ型」まで指定できるようになってたり。そこまで保守できる人ならなら、むしろソースを修正した方が…、と思ったのが正直なところ。あぁ、だからオープンソースって重要なんだな。