アークランプさんのブログオープンであれば技術力は(そんなに)いらないをみていて、表題のように思いました。ちなみに、表題の言葉は、女王の教室の真矢先生の言葉「特権階級の人があなたたちに望んでいるのは、ずっと愚かでいてくれること」から、インスパイアされて、思いました。
今日は、そんなわけで、オープンソフトを使わない理由を、アーキ(方式部隊)と、共通部隊の立場から。。。
なお、はじめにお断りしておきます。この内容は、アークランプさんの意見、主張とは関係ありません。そのブログに対して反論しているものではありません。ただ、インスパイアされて思いついたというだけの話です(そのため、トラックバックなどもしてないです)。たんに、話のはじまりだけがその話を受けているという世間話なのです。
まあ、プロジェクトのフレームワークは、方式がきめ、一部のプロジェクトでは、共通も参加するってな感じになるんじゃないかと思います。で、そこで問題なんですけど、
アークランプさんの上記のブログでは、どーも話の流れが、
・オープンソースを使うか
・商用製品を使うか
の2つに1つのような印象を受けます。でも、ある程度の開発規模のものになると、もうひとつ、「自分でつくっちゃえば!!」という話がでてきて、そこに落ち着くケースも多い気がします(ウィリアムのいたずらの経験だけなので、ほかのプロジェクトでもそうというわけではないけど)。
さあ、みなさん、冷静になって考えてくださいね!
Javaをはじめたとします。どこのサイトみますか?
たぶん、JavaでHello Worldのサイトですよね。
つーことは、そんなに上級者ではないひと、ちょっとアークランプさんのプログラマレベルは、perlくわしくないんで、理解できないんだけど、たぶんレベル4くらいの人がみるサイトですよね。じゃあ、このサイトの知識しかなかったとしましょう。そこで、
クライアントサーバーを実現したいので、クライアントとサーバーでつうしんできるようにしてくれ。ただし、オープンソフトをつかってはいかん!
といわれたらどうしますか?
たぶん、全部読むと、Socketが使えそう!ということで、Socketのところを参考にやりますよね。で、あとはHTTPプロトコルがわかれば、Webサーバーの動きをするものはできますよね。
そして、その受け取ったデータをもとに、プログラムを動かすところは、リフレクション編をみればやりかたはわかる。つーことで、Tomcatもどきまで、つくれたりします。
(あ、あと、クライアントサーバー間のデータ受け渡しには、シリアライズの知識も要るけど)
つまりですねえ、オープンソフトを使わない気になれば、Javaの上記のような基本的な知識で、考えれば、できちゃうんですよ。ところが、オープンソースになると、いろーんな知識が必要になってくるわけです。
で、そこで、ワーカーさんに流す場合、全員が、そのオープンソースの知識を身につけてもらって、さらに、場合によっては、自分たちで解析し、そのうえ、さらに、最悪の場合は、できないかもしれない。。。その状態を選んでまで、オープンソースを使うか、それとも、自分たちで1からつくるか?というとねえ。。。
つくりましょっか(^^)vって話で、落ち着いちゃったりする。
そうすると、オープンソースは、みんながテストしているので、品質が安定し。。。とか言う話を言う若手がいるけど、これは、いわないほうがいい。
品質が安定しって、言い切れるのか?証明してみろって言われたら、どうします。。。
実は、オープンシステムは、ここが問題で、まんべんなくテストしたことを保障してるわけではないのよ。つまり、自分たちの使うところはみんなチェックしてるだろうけど、使わないところまでチェックしてるかどうかわからないのよ。
パッケージソフト会社に勤めていて、ベータでお客さんに流している人なんか、わかってくれると思うけど、客から上がってくる報告は、自分の使うところかつ、使えるところだけなのよ。
バグがあると、客は使わない。で、それは、報告しないわけ(そんな報告してる暇はない)
てなことで、オープンソースも、特定の箇所にバグが偏在し、今回、そのプログラムを使ってしまう危険性がある。これが、せめられる1点。
でも、こんなことは、ちいさなことなのよ。
いまの、オープンソースには、致命的な欠点があるのよ。
余計な機能がありすぎる。。。
オープンソースも、バージョンアップを重ね、広い人たちに使ってもらうようになった。それにつれて、機能があがった。しかし、それにつれて、ソースも大きくなっていくのが普通。
でも、自分のプロジェクトで全機能をつかうのは、まれ。普通、一部しか使わない。
つーことはだよ。。。。たとえば、自分たちの機能を実現するのに1000ステップで十分だったとする。でも、オープンなソフトを使うと、そのソフトは、何十万ステップもあるとしたら。。。どっちのほうが、バグが多い??
一概には言えないのよ。。。1000ステップのほうが、たいていは、少ないけどね。
さらに、解析するにも、どっから手をつけていいかわかんない。。。。
解析するより、1から作ったほうが、普通、早いし、
解析して手をいれるより1から作ったほうが、品質も、安定したりする。。
つまり、オープンソースは、みんなに使ってもらおうとすると、巨大化し、理論も複雑になる。その複雑な理論で遊ぶのが楽しい人たちは、それはそれでいいんだけど、こと、大きな開発になると、うーん、その複雑なもの、お守りするくらいなら、いっそのこと、つくっちゃえば!っていうことになる。
で、実際、作るとなった場合、これは、発想力の問題(apacheをみて、あ、ソケット通信をHTTPプロトコルでやってる、っていうことは、ソケット通信部分をJavaでくめばいいだけね!と発想できるか)であって、技術的には、レベルは、さほどたかくなくていいのよ。
(JavaでHello Worldを読んで理解できるレベル)。
でも、なんーか、いまの世の中をみると、ウィリアムのいたずらたちが、まるでばかで、オープンソフトなんか、まったく作れるレベルにない!ということを、ハッカーさんたちがきめつけて、それに周りの付き人たちが、難しい言葉を並べて、神学論争してるように見えるのよねー
え、オブジェクト指向の資格の合格証書が免罪符に見えてきたって(^^)
やっぱ、ハッカーさんたちや研究者、本を書く人たちから見ると、自分たちは天才で、
「ハッカーの人があなたたちに望んでいるのは、ずっと愚かでいてくれること」、
オープンソースのプログラムなんて、絶対作れないし、作っても、非効率的だと思ってくれること。。。
のようにみえちゃうんだけどなあ。。。
でもさあ、大きなプロジェクトのアーキも、共通も、そこまでおばかじゃないから、「自分たちのプロジェクトに必要なものに限定すれば」その程度のものは、作れることは、ぐるっとおみとおし!だよ(^^)v