とある記事のお仕事でオープンソース・プロダクトを現場に導入するためにはどうしたらよいか(そもそもはDIコンテナを採用してもらうには)という内容を書こうとしたのですが筆が止まってしまいました。
友人とも議論したのですが、この話を突き詰めると「責任の所在」という根本論になってしまい、なかなか書きにくいからです。
責任論でオープンソースを語るのは間違い
オープンソースには様々な利点があります。
メリット1 コモディティ化の原理で、共有されているからこそ品質が良い
メリット2 コードが見れるので、問題が生じてもなんとかできる可能性がある
それでもなおオープンソースを採用しないのは「責任が取れない」という理由からではないでしょうか。自分で責任を取らない(責任は誰かに取ってもらう)ことで安心な人は商用製品を買って製品ベンダーに責任を押し付けるのです。
まずもって責任を議論の軸にする事が間違っています。
プロジェクトにおいて、参加している以上は責任がない人なんて1人もいません。というか、自分にどんな責任があるか考える人で構成されていないとプロジェクトが成功する訳ないんです。どんなに他人の責任に思える事でも「あ、あのタイミングで救ってあげられたかもな」という反省が重要です。
これはクライアントもSIerも、です。クライアントは「あんたが責任とれるならオープンソースでいいよ」と言い、SIerは「あんたが承認する(責任取る)ならオープンソースを導入するよ」と言う。あー、なんて実りのない会話でしょう。そして半年後には、全員が不幸になっているのです。
責任を取るとか取らないとか、そういう議論は非常にくだらないのです。
リスクを議論の軸に
議論の軸にすべきなのは「リスク」です。
オープンソースは、
- 消えてしまうかもしれない
- 修正できる人を見つけられないかもしれない
商用製品は
- 会社がつぶれるかもしれない
- ライセンスがかわって保守費が異常に高くなるかもしれない
こうしたリスクと、コスト・性能のバランスを議論する事が重要です(オープンソースの場合は、それを扱える人を雇うコストが含まれる)。こうするとオープンソースと商用は並列な選択肢に過ぎません。
そしてクライアントとSIerが*共に*、どういったリスクがあるか共有して管理する手法を考えるのです。
例えばオープンソースのメリット2というのは、問題が生じても自分でリスクを管理できることが非常に大きな安心材料なわけです。僕は、商用製品によほどの性能/TCOメリットがない限り、これを覆す事はなかなかできないと感じます。
価格を理由にする人がいるから有償サポートビジネスが育たない
もう1つ、価格を理由にするのも間違っています。無料だからオープンソースという風潮は大きすぎるリスクを抱える事が多い。とくに技術力がともなわない現場では危険です(同時に売上があるから商用というのも同じかも)。
この風潮がいけないのは、オープンソースの有償サポートというビジネスが育たない事です。リスクという観点からすれば、コードがオープンであり、さらに有償でサポートしてくれるというのは大きなプラス材料です。
ところが、責任論の人はそもそもオープンソースには向かわないし、価格論の人は有償サポートの価値がわからない。結果、マーケットが小さくなってしまいビジネスに健全性が産まれない。
リスク論は組織の話
で、こうしたリスク論というのはプロジェクトのオープンソース導入といった小さな話ではなくて、組織や社会といったレベルで議論される根源的な事です。責任論が好きな会社で、いかにオープンソースのメリットを語っても受け入れてもらえるわけがない。
そうすると個人が記事で「リスク重要」などと正論を吐いても、わかっている人ほど苦しくなるだけでオープンソースの導入が進む訳でもない。特に若いエンジニアが「俺が責任取ります(取れます)!」なんて言っても通じない。
もちろん、こうした事はまっこうから議論されるべきです。だからブログに書いています。
しかし、今、現場で困っている人(log4jいれるな、DIコンテナいれるな)に役立つという意味で外れているのかもしれません。最終手段でゴリゴリ手作りすればいいというのは、結局は技術的なリスクを高くしてしまいます。どう総合的に考えてもオープンソースを採用すべきです。
そんなことを考えて筆が止まってしまいました。ふむ、どう書いたものやら...

コメント (5)
「実績論」という観点は,オープン系の技術の利用判断として適切な気がしますが,いかがでしょうか?デファクトスタンダードになった技術は,実績が当然伴うはずで,その実績の厚さはリスク回避を説明する最も説得力のある理由になると思います。
実績というキーワードであれば,オープンだろうが商用だろうが関係なく,平等な判断材料な気がします。
投稿者: よういちろう | 2005年11月04日 19:32
日時: 2005年11月04日 19:32
yusukeです。言われる通り実績は非常に重要なリスク判断要素ですね。
そして実績もまた、責任論と価格論の前では無力なんですよねぇ。それが証拠に、政治的な理由から実績がない商用のプロダクトを採用して苦労したことありますよね?僕はあります(w
投稿者: yusuke | 2005年11月04日 19:59
日時: 2005年11月04日 19:59
えぇ,腐るほど(w
政治的な理由で「ベンダー責任」を主張されて仕方なく現場が採用した商用プロダクト,ベンダー自体が責任放棄で最悪パターンという事例も多いですよね。
やっぱり「責任論者」が言う「責任の所在」は,選ぶ当人なんですよね。となると,同じ鉄は踏みたくない気持ちから,自然と実績を判断基準にするのかなぁ,と。そして近年ではオープン系の実績は十分信頼できるレベルになっているので,って感じですかねー。
投稿者: よういちろう | 2005年11月04日 20:13
日時: 2005年11月04日 20:13
こんにちわbyechuです。
数年前、Struts導入をめぐって散々議論しました。結局は開発サイドが楽になるとの理由で、無理やりねじこんだところ、その後はなし崩し的にOSS導入が進みました(良いことではないです)。
責任論は、いわゆる規約類の存在も重要なファクターになると思います。ユーザーのEAもそうだし、大手SIerの開発規約なんていうのもそう。どのツールを使うにしても、この時点で是非の議論はされているはずじゃないかと。結果「OSSはNo!」なら従うのが筋。・・結局コレさえも人任せだから、イライラするんですけどね・・
それでも最後に苦労するのは「作れる人達」なわけですから、yusukeさんには彼らの立場で情報提供していただきたいなぁ、なんて勝手ながら思います。OSSを弄り倒した若いプログラマが成長したら、絶対にこういう動きが拡がるはず。・・だ。
投稿者: byechu | 2005年11月07日 13:10
日時: 2005年11月07日 13:10
yusukeです。コメントありがとうございます。
本筋ではないんですが、
> yusukeさんには彼らの立場で情報提供していただきたいなぁ
そうですね。ただ、どうやって提供していいのかは迷っています。ある人にとってのメリットは、別の人にはデメリットになることもあります。安易な情報提供は混乱を招くのかなと(そんなわけで僕のブログは寸止め、奥歯に物が挟まったエントリになるわけですw)。
教育もそうですが"考え方"を身につけて欲しいわけで、答えを覚えてもらっても困ります。「OSSのいじり倒し方」なんて最たるものです。もっと才能を活用できる人材はいくらでもいるとおもうのですが。
なんか良い方法はないものでしょうか...
投稿者: yusuke | 2005年11月09日 12:10
日時: 2005年11月09日 12:10