2002.12.12

 オープンソースの利用へ進むと良いのか?

 最近、オープンソースが流行りだ。各国政府も Microsoftではなく、オープンソースOS、つまり Linuxを使おうという話が多くなっているようだ。今回は日本での話を考える。

 理由としては、コストやセキュリティや安定性等いろいろある。
 コストは計算すると複雑になるので、僕には処理しきれない。人件費とライセンス料金の兼ね合いだと思う。
 セキュリティはどうか?
 僕はセキュリティはどっちもどっちだと思う。確かに Windowsのセキュリティは取りざたされやすい。ただ、それが一般の人の目に多くはいるのは、Windowsへのアタック(ウィルス・ワームも含め)が多い事、Linuxよりも Windowsの方が一般の人に多く知られている、という事があると思う。
 Linuxの場合もセキュリティホールが報告されている。ただ、一般の人が知る機会が少ないだけだ。また、被害も報告されにくい。
 何が関係するかというと、一般人がどれだけ情報を目にするかという事である。
 一般人には、勿論政府関係者も含まれる。
 ウィルス被害以外にも、何故かセキュリティはオープンソースOSの方が安全であるという話もある。
 オープンソースOSならソースを見る事が出来るからセキュリティ上心配なところがチェック出来るというのだ。
 ここで問題。Linuxのソースを見て、セキュリティホールがあると指摘出来る人間はどのぐらいいるでしょう?

 OSの話は置いておいて、実際に使う場合のアプリケーション部分に移る。
 1つの例として、WWWサーバーを挙げてみる。代表的なもので言えば、たぶん、Windowsの場合は IISで、Linuxの場合は Apatchだろう。
 ではどちらがセキュリティ上強固であろうか?またセキュリティ上不安な部分をチェック出来るであろうか?
 IISの場合は、周知の事実としてブラックボックスになっているので、Microsoftを信頼するしか方法はない。
 では Apatchの場合は、満足出来るのか、と言えば、僕はそうは思わない。これもオープンソースアプリケーションとして配布されているが、いろんなディストリビューションからもバイナリーとしてインストールされる。せいぜいソースからコンパイルしてインストールするだけだろう。Apatchにもセキュリティホールは報告されているが、そういう事をソースからチェックしたり、テスト出来る人間が、そんなにたくさんいるか?ソースを全部読む事も必要だし、それがどういう動作をするか、コンパイルされた結果はどうなるかまで精通していないと、なかなかチェックは出来ない。
 外部に委託して専用アプリケーションを作った場合も同様だ。契約上ですべてのソースファイルも渡すようにしていても、そのソースをチェックするのは誰?
 データベースを利用する事にした場合、市販されている Oracleを使おうとするとしても、ソースファイルまで購入しないだろう。もしソースファイルも購入したとして、それをチェック出来る人間がいるのか?
 ソースファイルがあるという事は、ソースファイルがあるという事実だけになってしまう場合が多い。そのソースファイルをどうにかする、という事はそれなりのテストもしなければいけないという事にも繋がる。
 それでオープンソースの方が良いと言えるのだろうか?
 コスト?コストも、ソースをチェック出来る程の人間なら人件費も膨大だろうし、普通の企業よりもより多くの人件費を払わないと、また、それなりのメリットがないとそんな仕事はしないだろう。

 安定性に関しては上記セキュリティでも書いたが、オープンソースOS・アプリケーションの方が安定しているとは言えない。安定させるためには、使う側が不安定にならないように使うというのが大前提だからだ。
 オープンソースソフトウェアの方が多くの人間がテストしているという話もあるが、そんな事はない。Windowsだって、普及率を考えると非常に多くの人間が使っている。つまり、ある意味それだけ多くの人間がテストしていると考えてもいい。WindowsXPの場合だと、更にアプリケーションやOS関連にエラーが起こると、それを送信してチェックさせるという事もできる。1割の人が1割ぐらいの割合で送信したとしても、かなり膨大な量になると思われる。
 オープンソースの方がソースがあるからチェックしやすい、等とは考えない事だ。それは上でも書いた。
 Windowsの方が動作が不安定になりやすいというのも、ある意味正しいが、ただの偏見の場合も多い。何故かというと、不安定になりやすいアプリケーションやドライバーを使用すれば、どんなOSだろうが、不安定になるからだ。OSごと落ちてしまうかどうかはそのアプリケーションやドライバーの質による。LinuxだってOSごと落ちる事も多々あるのだ。また Windowsと同様に、一見OSごと落ちているように見えてもカーネル自身は落ちていない、という事も多々ある。
 多くの場合、Windowsだとあれやこれやすべてを1台でするためにいろいろなハードウェア・ソフトウェアをインストールする。これが落ちやすくなる理由の1つだ。Linuxでも同じような状態にした場合、Linuxの方が落ちにくいとは言えない。ドライバーの質によっては Linuxの方が落ちやすくなる場合もある。サーバー用途やオフィスアプリケーション用途、経理ソフト用途など、複数のマシンをそれぞれ単機能にした場合、Windowsも結構落ちにくい。
 Windowsマシンが落ちやすいと言われる原因の1つとして、Windows9x/MEの存在もある。業務用途では、WindowsNT/2000/XPを使うべきだ。それだけで落ちにくくなる可能性が大きい。適材適所なのだ。

 必要な資源コストに関してはちょっと違うかもしれない。Windowsの場合は、どんな用途に使おうと、GUIは切っても切れない。Linuxの場合は、unixであるがゆえに、カーネル+サーバーソフトだけでも動く。最低必要と考えられる資源の量は比較にならない。必要な設計が終わっていて、設定する人間もよくわかっている場合、Linuxの方がハードウェアに必要な値段は安く済むかもしれない。
 ただ、これもある程度以上になると差はどんどん縮まっていく。

 オープンソースの利点として、ソースを変更出来るという事もあるが、これも上記理由で一般には利点とならないと思われる。変更した場合、変更した人間もしくは企業にすべてのサポートをゆだねるということになるだけだ。この場合は勿論、セキュリティパッチやアップデートがあっても、そのまま利用するわけにはいかなくなる。変更した人間もしくは企業にアップデートを頼むしかない。
 個人がどうこうする場合は話は別だけどね。

 これらの事から考えられる結論としては、用途によってそれぞれの特長を生かした利用の仕方をするという事だ。どちらが優れているかの問題ではない。また、反 Microsoftの話でもない。勿論、反オープンソース(Linux)の話でもない。
 結局はそれぞれにある程度精通した人間がきちんと管理すれば、それなりの働きをするという事だ。
 これが嫌だあれは嫌だではなく、もっと構造を考えてから利用ソフトの選定を行って欲しい。見る事の出来る話だけでは、とても構造設計をしてから考えているとは思えないので。