2012年12月24日月曜日

オープンソースに関する依然とした誤解

以前にも書きましたが、ゲーム業界に限らず、依然として蔓延しています。

オープンソースをチョロチョロっとイジれば出来るよね?

そういう輩の頭の中は明白で

エクセルでチョチョっとやれば出きるよね?

みたいな調子で言ってるの違いない。
もちろん、エクセルを熟知しているエクセル好きならそんなことは寧ろ言いません。

言うのは、札束で顔を叩く気満々のオジサマ達です。彼らにとっては、エクセルであろうが、業務システムであろうが、ゲームであろうが、同じく「魔法」に見えることでしょう。「魔法」に「難易度」があると言っても通じません。

そもそもこんな事を言う人は、支払いを渋ることは明白なので、交渉決裂したほうが、総合的にみて「赤字が抑えられる」という話もあります。


話が逸れました。オープンソースに戻します。

前述のオジサマが、上司であれば、リスクの話をしたほうが早い。

技術的には、オープンソースを使うということは自分が作るはずだった箇所を、オープンソースで代替する、ということです。故に、それが出来るかどうかが先決なのです。

その判断をせずに強引に始めることは可能でしょう。ただしバグった時が困ります。それがオープンソースフレームワークの奥で起こっていた日にゃあ、フレームワークの中身までデバッグしなければなりません。自分で作ったものではないから、勝手が違います。場合によっては、作り直した方が早い、ということもあり得ます。

それを理解してもらうのは困難ですが、バイトを30人雇った感じを想像してもらえればいいでしょうか。見掛け上の期間は削減できますね。しかし品質には問題があるかもしれない。大層なバイト君も居ない訳ではないでしょうが、その判断は出来ません。してたら30人も探すのは大変です。

オープンソースにも同じ事が言えます。実力者が作ったものかどうか、まずその判断基準がないわけです。

すなわち、オープンソースを使うということは、オープンソースの中身にも責任を持たなければならない。必然、オープンソースの中身を熟読&熟知するべき。

オープンソースを使う、ということはそういうことです。

もちろん、オープンソース自体の品質は概ね高く、基本的には期待通りに動くでしょう。しかし、エクステンションやドライバ類のものは、フェイルセーフが甘く、条件に合わないとメモリリークを起こしたりするものも、稀にあります。大抵はエクステンション類はC/++だったりするので、改造すれば何とかは成ります。

クラウド向けプロダクトにはclojureやらerlangを使ってるものも増えてきました。流石にメモリリークってことは無いでしょうが、潜在したバグを見つけたとしても、大抵の人には困難でしょう。ナチュラルに難読化。