オープンソースの現実、と若干の理想(下)
はじめに
「本題は次回で」と書いたくせに一ヶ月以上も経ってしまったが、前回の 続きである。
前回は我ながら今ひとつ歯切れの悪い内容で、批判も多く頂戴したが、そ うなったのにはそれなりに理由がある。というのは、氏が問題の記事で書いて いる内容にはやはり承伏しかねる部分があるのだが、一方で別のところで氏が 吐露しているソフトウェア開発者としての氏の実感(と思われること)は十分共 感できたので、判断に迷ってしまったのだ。
しかし、いずれにせよ前回「本題」と書いた点はオープンソースの今後に とってはかなり重要なことではないかと個人的には思うので、今回はその点を 掘り下げてみたい。
オープンソースは保守が好きか
そもそも、問題の記事を読んで筆者が最初に違和を感じたのは以下の部分 である。
一般にソフトウェアのライフサイクルでは新規開発後に運用と保 守・機能拡張を何度か行った後に、再び新規開発をするという過程を繰り返す が、オープンソース手法はそのうちの保守や機能拡張において有効な手法なの であって、新規開発では足かせとなる危険性も高い。
筆者の実感では、これは全く逆だ。保守ほどオープンソース開発 者の苦手とするものはない。逆に、妄想を現実化するという意味で は新規開発はオープンソースの最も得意な分野とも言えるのである。 SourceForgeでも覗いてみれば、それこそ「新規開発」のフェーズで止まってしまったプロジェクトで死屍累々なのが分かるはずだ。
ここで言う「ソフトウェアの保守」というのは少々曖昧な概念だが、ここ では「自発的ではないハック」と定義してみたい。たとえ バグ取りであっても、自分がよく使う機能にバグがあって直さざるを得ない、 というケースは保守ではなくただのハック、というわけだ。ようするに、外部 要因によってある意味強制されるハックのことをここでは保守と呼ぶことにす る。
なぜこのような区分をするかというと、経験上ハックは楽しいが 保守はつらいからである。作業自体に大差はなくても、精神的な負 担はかなり違う。機会費用が違うと言ってしまっても良いかもしれない。
なぜ保守がつらいのかというと、ようは自分にとって無意味で、やる気が 出ないからだ。たいがい保守というのは外部からのアクションで始まる。例え ば開発者のはしくれである筆者の場合、どこかのユーザからバグ報告が飛んで きて、それを検証し、おかしいところを直すという作業になる。裏を返せば、 それまでは当人は気づいていない(あるいは不自由していない)ことが多い。 「おかしいところ」には、純然たる不具合から、アラビア語に対応しろという ような新機能のリクエストまで多種多様だが、筆者自身にとってはあまり意味 がないという点では共通している。直すだけではなく、質問に返事を書くとい うのも広義の保守に入れて良いだろう。
例を一つ挙げてみよう。多くのオープンソース開発プロジェクトでは、安 定版と開発版を分けて(典型的にはCVSのブランチを切って)管理している。で、 筆者の知る限り、Linux カーネルを始めとしてほとんどのプロジェクトでは安定版のほうが管理が遅れがち だし、安定版のリリースマネージメントは至難の業だ。なぜかといえば、「しょ せん開発者自身が使っていない」からである。しかも、自分が必要としない部 分は当然叩かれて鍛えられていないので、バグが出る可能性も高い。まさに悪 循環だ。
オープンソース開発の動機は「かゆいところを掻く」という点にある、と エリック・レイモンドは言った。実際、オープンソース開発の基本は、開発者 が使いたいものを作るということに尽きる。たまに、なぜオープンソースだと 開発者が「ただ働き」するのか分からないという人がいるが、いろいろ答え方 はあれど一つの答え(ちょっと問題はあるのだが)は、「開発者はただ働きをし ているのではなく、金の代わりに労力を出して自分の欲しいソフトウェアを神 様から買っている」というものではないだろうか。で、保守は、労力に見合っ ただけの効用をもたらさないので、ふつうは「買わない」よなあ、と筆者は思 うのである。
実のところ前回も書いたように、佐藤氏自身別のところでは以下のように書い ている。
AgentSpaceとMobileSpacesの公開を近々止める予定です。JDKのインストール方法や環境変数とは何かなどの当方が関知しない質問が非常に多く、 これ以上を公開を続けることは困難と判断しました。ながらくのご利用ありがとうございます。
すなわち、氏自身が典型的な「保守」ワークで疲れてしまい、ソフトウェ ア公開をためらうような事態となっているのである。同情を禁じ得ない。
余談だが、実際、初心者の相手をするのは大変なのだ。ここで言う初心者 とは、その分野の知識が無い人というより、「そもそも自分が何を分かってい ないか分かっていない人」のことである。こういう人の相手をするのは本当に 時間を食う。逆に、自分が何を分かっていないか分かっている人の場合は、 答える方も張り合いがあるので、不思議なことに気分的には大して負担になら ないものだが、閑話休題。
保守が得意と思われると困る
さて、なぜこのような話に目くじらをたてるかと言えば、端的に言えば、 保守にはお金が欲しいからである。筆者個人が欲しいとい うことも、まあ、否定はしないが、それより何度も言うように、オープンソー スが持続可能なプロセスとして続いていくためにはきちんと対価が得られる (可能性がある)ということが極めて重要だと思うのだ。
例えば役人や企業の人と話していると、こういったたぐいの会話になるこ とがある。
「オープンソースを導入するとTCOが削減できるんですよね」 「オープンソースを導入すればアメリカの会社に金を払わなくていいから貿易赤字が解消できる」 「オープンソースには保証がないから不安だ」
これらは、確かに一文一文をみる限りそれほど間違っているわけではない。 しかし、全部併せて考えてみるとちょっとおかしい。
なるほど一般的には、オープンソースソフトウェアはタダで手に入る。ゆ えに、ライセンス料に限って言えばタダになる。もしかするとTCOは一部削減 できるかもしれないし、ゲイツにこれ以上貢がなくても良くなるかもしれない。 大いに結構なことだ。それに、オープンソースのライセンスがNO WARRANTYを 謳っているのも確かだろう。
しかし、ソフトウェアにはどのみち保守が必要なのだ。あなたが直さない 限り、あなたの要望はいつまでたっても現実化しない。それをあなた以外の誰がやるんです か、と問うた時に、えっ、オープンソースは保守が得意じゃないんで すか?と言われる事態を筆者は恐れているのである。童話のこびとさ んじゃあるまいし、自分のならともかく、他人の要望を(利他の精神かなにか で)せっせと実現するわけがないじゃありませんか。
長期不況のせいか、特に日本で最近顕著のように思うのだが、オープンソー スのメリットとしてコスト削減ばかりが強調されているきらいがあるように思 う。確かにライセンス料の支払い総額は減るだろう。しかし、それがコストの削減 にストレートにつながるとは限らない。オープンソースには保証がないから困 るというのは、これまでは(少なくとも顧客側から見ると)ライセンス料と保守 契約の料金が込みだったということを暗に示しているように思うのだが、だっ たら保証を金を出して買えと言いたいのである。また、そういう考え方が当た り前にならない限り、良質な保守サービスを提供するきちんとしたオープンソースSI企業が育 たないだろう。オープンソースには、単にライセンス料がタダという以上のメリットがあるし、またそれを顧客側にも積極的に伝えていかなければならない。そういった意味でも、これまでたびたび批判してきた「我流オープンソース」のたぐいは 問題なのである。
逆にサービスを提供する側から見ると、ようするに、オープンソース開発者の やりたくないこと、言い換えれば相対的に不得意なことを、 商売として金を取って専門的にやればいいということになる。極言すれば、いわゆるソフトウェア産業はそういう方向でしか生き残れないと筆者は考えている。それはプロプライエタリであってもいいのだが、プロプライエタリであることは現在ではコスト高(あるいはハイリスク)の要因と見なされかねないようにも思う。いずれにせよ、今まで以上の高い技術レベルが要求されるようになるし、またそうでなければ生き残っていけない(言い換えれば、どのみち技術があれば生き残れる)時代になるだろう。
というわけで、「オープンソースはソフトウェア産業を滅ぼすか」という ようなよくある話に突入していくわけだが、それはまた稿を改めて書くことに しよう。