“フリーソフトがソフトウェア産業を滅ぼす”?(その3)

 「その1」ではフリーソフトウェアに「共産主義的」とレッテルを貼ることの勘違いぶりを、「その2」ではフリーソフトウェアを「ゼニの見返りが返ってこないから悪いシステムだ」と言うことの守銭奴ぶりを観察してきた。さて今回は、フリーソフトウェアと市販ソフトは共存共栄できるかどうかについて考えてみる。


 LightCone氏によるフリーソフトがソフトウェア産業を滅ぼすによると、フリーソフトの氾濫は、質の悪いソフトの氾濫を助長し、良質の商用ソフトが出来る可能性を奪うという。商用ソフトと同じようなソフトが無料で出回ると、多くの人がそっちの方に流れてしまい、たとえ商用ソフトが良質のソフトであっても、売れなくなってしまう。対してシェアを伸ばしたフリーソフトは個人で作っているため質が悪い、というのだ。

 なるほど一理ある、と思うかもしれない。しかしこの意見には引っ掛けがある。「商用ソフト=人数と時間をかけて作っているので品質が良く、フリーソフト=個人で短期間で作っているので品質が悪い」と最初から決めつけてしまい、そこから自説に有利な方向へと展開しているのだ。しかし、果たして本当にそうだろうか。

 一概にはそう言い切れない。品質の良いフリーソフトもあれば、品質の悪い商用ソフトもある。なぜだろうか。実は、ソフトの品質を左右する原因について、商用ソフトとフリーソフトで、共通する部分と違う部分とがあるのである。

フリーソフト 商用ソフト
品質向上の要因
  • 納期がないことゆえの余裕と丁寧な作業
  • 自分の好きな事ゆえの知識欲と情熱
  • ユーザに愛用してもらっていることを知る喜びと励み
  • 職人魂
  • ユーザの声のフィードバック
  • ユーザと開発者の距離が近いこと
  • 自分のソースコードが公になることの緊張感
  • ベータ版として公開されたプログラムをテストを兼ねて使ってくれるユーザの存在
  • 予算の制約を受けないゆえに、時間さえ許せばプログラムの大きな作り直し(大改造)が自由であること
  • 迅速な対応
  • ソース公開ゆえに、ユーザ側もプログラムのどこが悪いのか調査できること
  • などなど……

  • 贅沢な開発環境(機器、ソフト等)
  • 豊富な開発・サポートスタッフ
  • ユーザに愛用してもらっていることを知る喜びと励み
  • ちゃんとゲンナマが得られること
  • 職人魂
  • プログラムの仕様書を作成する設計スタッフの存在
  • 出荷前に動作チェックするテスターの存在
  • ユーザの声のフィードバック
  • ユーザと開発者との間を仲介して意見や要望をまとめるまとめ役としてのサポートスタッフの存在
  • コーディング規約を定めることによるコード記述法の統一とコードメンテナンス性の向上
  • プロ故の豊富な知識と経験
  • 迅速な対応
  • などなど……
品質悪化の要因
  • マチュア故の知識不足と未熟さ
  • 本業が忙しく趣味のプログラミングにあまり時間を費やせないこと
  • 開発環境の限界により様々な環境で十分なテストができないこと
  • 開発・サポート人数の少なさ
  • プログラムの仕様書がないこと
  • 開発者とは別のテスターがいないことによる動作チェック不足
  • 少々未完成でもとりあえず動けばいい、デバッグはユーザにやってもらおうというお気楽根性と甘え
  • ユーザと開発者との間を仲介して意見や要望をまとめるまとめ役の不在
  • コード記述法の不統一や汚いソースコードゆえのメンテナンス性悪化
  • 遅い対応
  • などなど……

  • 納期の短さゆえの突貫工事とテスト不足
  • 人材不足
  • 以前の開発者の退職
  • 必ずしも自分の興味を持つ分野でないことによる退屈さ
  • ノルマをこなして金さえもらえれば良いというサラリーマンプログラマ根性
  • 予算が最初から付いていることや、今現在ユーザに支持されている事実などに対する甘え
  • 開発者同士の意思疏通不足
  • ソースコード非公開ゆえに汚いソースでも公にならないことに対する甘え
  • コード記述法の不統一や汚いソースコードゆえのメンテナンス性悪化
  • ユーザと開発者の距離が遠いこと。まるで伝言ゲームのように、ユーザは要望がなかなか開発者に伝わらず、開発者はユーザの業務実態を理解しないまま、ただ仕様通りに作るといったこと。
  • 予算に限界があるゆえに、本来は必要であっても大改造がままならず、間に合わせのコードのつぎはぎで対応しなければならないこと
  • 遅い対応
  • などなど……

※注意 「必ず当てはまる法則」でも「100%近く見られる傾向」でもなく、あくまでも一部のフリーソフトウェアや商用ソフトにだけ見られる傾向も、この表には含めています。


 フリーソフトには資金と人材の制約があるが、商用ソフトにも納期と予算という別の制約がある。しばしば見落とされがちだが、フリーソフトにはフリーソフトとしての、品質向上をもたらす要因もあり、商用ソフトには商用ソフトとしての、品質悪化をもたらす要因もあるフリーソフトは品質が悪化しやすく、商用ソフトは品質が向上しやすいと最初から決めつけるのは偏見である。それに大体、コード品質が良い悪いは、ソフトが無料かどうかにはそれほど関係ない。規律とモラル向上による品質向上は、どちらにも共通して言える事である。

 コード品質を守ることについて言うなら、フリーソフトも市販ソフトも、守るべきところは大体共通している。プログラムの処理の流れやデータベース設計、プログラム間のインターフェイス等をしっかり設計し、良いコーディング規約を定めてそれに従い、スパゲッティプログラムにならないよう、コードをサブルーチンやクラスに分けて綺麗にまとめ、テストは想定外の動作も含め念入りに行う、等である。フリーソフトでもちゃんとした開発者はそれを守っているし、商用ソフトでもそれが必ずしも厳密に守られているとは限らない。


 フリーソフトと商用ソフトは、たとえて言うなら、野外劇場の無料の演劇や大道芸と、オペラハウスや寄席で行われる演劇や演芸のようなものである。後者の支配人が「無料で質の悪い出し物をされると、我々の劇場に人が集まらなくなるから、野外劇場での芝居や演芸は止めてくれないか」と言うとしたら、どこかおかしいと感じるのではないだろうか。

 大体、そんなことを言うのは、自分が客に最良の物を提供しているという自信が欠けていることの証拠である。決して安くはないチケットを買うだけの価値はあったと客に十分思わせるだけの最良のものを提供していたのだろうか、それとも、自分たちにはなじみの客も多いし、どうせ高いチケットを買ってくれた客は、少々まずい演芸でも我慢して最後まで見てくれるさ、と、現在の人気にあぐらをかいた殿様商売をしていたのだろうか。もし後者であるとしたら、自分たちが“無料で質の悪い”とけなしている物ごときに客を奪われたとしても自業自得である。

 逆に、野外劇場の演劇や大道芸をやる側も、決して気を抜くことはできない。高いチケットを買った客は、少々まずい演芸でも最後まで我慢して見てくれるだろうが、こちらは無料である。あんまりにもつまらないと、すぐ客は去ってしまう。客の注意を惹き付けるためにも、一幕一幕がまさに真剣勝負だ。「無料」というだけですぐ人気者になれると思ったら大間違いである。

 そして、現代社会で無料の演芸と有料の演芸が共存共栄しているのと同じく、フリーソフトウェアと商用ソフトも共存共栄し得るものであると私は考える。無料だろうが有料だろうが、優秀な演芸は客の人気を呼ぶだろうし、大根役者はすぐ人気を失う。同じ事で、無料だろうが有料だろうが、本当に便利なソフトはユーザの人気を呼ぶだろうし、不便なソフトはすぐ人気を失う。


 ここで、無料のLinux 対 有料のWindowsを比較してみるが、それぞれ長所と短所を持っている。WindowsはほとんどがGUI化されているために、コンピュータの知識があまりなくとも簡単に扱え、ソフトのインストールも楽であるし、ほとんど日本語化されている。そして何よりも、ソフトが多い。対してLinuxは、無料である割には良くできたソフトであり、特にウェブサーバ等ネットワークのサーバとして用いるにはかなり安定した動作を見せるが、ちょっと設定をいじったりソフトをインストールするにも、コンピュータの知識をかなり要する。日本語化も遅れている。「Linuxはソフトが多い」というのは、ユーティリティソフトの分野であり、ビジネスアプリケーションはまだ少ない。

 私が思うに、クライアントOSとしてLinuxWindowsのシェアにとうてい太刀打ちできないのは、それはWindowsの使い勝手が優良だからであり、有料無料はあまり関係ない。何かと叩かれがちなマイクロソフトだが、WindowsLinuxより使いやすいから、高い金を出してでもみんな使っていることは、決して否定できない。もしマイクロソフトが未だにMS-DOSしか出荷してないとしたら、むしろ形勢は逆転してLinuxがクライアントOSとしてシェアを伸ばしていたかもしれないし、もし将来、LinuxのクライアントOSとしての使い勝手がWindowsより優れたものになった時、形勢が変わる可能性は十分考えられるだろう。