昨日は同世代のエンジニアと飲み会。みんな最先端/最前線の人々だったので非常に楽しい時間を過ごせた。いろんな話題、技術的なことからキャリアパスまで、かなり真面目に盛り上がった。
そんな中で話題の一つが「選択」ということ。
オープンソース・コンポーネントを使うとして、その製品チャート(マトリクス)の中で何を使うべきかというのは非常に大きな問題だ。Webアプリケーション・フレームワーク、O/Rマッピングツール、DIコンテナ、あるいはWebコンテナ。同じカテゴリにいくつかの製品がひしめいている。(ちなみに、SpringとSeasar2はどっちなのかというのが、けっこう盛り上がった)
その昔は1社のベンダーに頼っていたから、そのベンダーの製品ラインナップの中から選択する、というか、実質上決まっていたといって過言ではない。ベンダーの中では、システム規模によるバージョン違い(パーソナル版/グループ版/エンタープライズ版とか)はあるものの、基本的に1つの機能には1つの製品しか用意していない。
マルチベンダーと呼ばれる時代に入ったとしても、選択するのはベンダーであって、その先の製品は、やはり選択をするようなものではない。
別に現在においても候補に挙げられる最低限のレベルをクリアした製品数というのは、ほとんど増えていない(むしろ減っている?)と思っている。ところが選択可能な数は増えている。
これは優秀なオープンソース・コンポーネントが普及したかたということにつきる。最初は圧倒的な低価格(=無料!)というインパクトで導入が進んだ。しかし、コモディティ化の流れを価格だけでとらえてはいけない。皆で同じものを使うことによって、標準に従ったコンポーネントを選択可能になったということがよかったのだ。
実際、商用製品の価値は高い。標準に従っているなら、十分に選択肢にいれてあげるべきだ。メンテナンスコストやバグの発生コストを考えたとき、オープンソース・コンポーネントが安いかどうかは単純に判断できることではない。
「そういった選択を苦痛に感じる人もいるのでは?」という話も出た。しかし、望むか望まざるかに関わらず、選択する重要性が変化する訳でない。
選択権をベンダーにあたえて「責任を取ってもらう」ということは簡単だ。しかし、考えてほしい。そもそも良いシステムが手に入らないなら、金額的なロストがなくても、企業の価値は大きくそがれているのだ。それは、まったく意味がないことだ。だから、いやでも、自己責任において選択するしかない。
では、どうするか。変化に対応するために小さく試すという製品開発の基本を守ればよいだけである。ていうか他に方法はない。コモディティ化によって試作コストが大きく下がった。意見をくれる人も増えている。それを利用しない手はない。
こうすることで、ユーザーに選択する力、使いこなす力がついてくる以前、ベストプラクティス消失が顧客主導の証というエントリをした。「こうすれば解決」なんていうことはないのである。そしてベンダーも、こういった先端ユーザーに選ばれる努力をしなくてはいけない。
僕の課題としては、こうした選択にビジネス的な価値を見つけることだろう。DIコンテナを使うという選択はエンジニア的には、いろいろな意義を見いだせるが、ビジネス的な価値を説明することは難しい。ソリューションという言葉で製品をパッケージしていた時代と違い、コンポーネントそのものが流通してしまう時代。そこが、わかりにくさだとも感じる。
こういうことを何かの機会にいろんな方と共有して議論したいかなと。そんな企画も進行中です。
