オープンソース
→ IT入門に戻る。
プロプライエタリとオープンソース
新聞などでは、ソースコードはソフトの「設計書」とか「仕様書」などと表現されることが多いが、実際はそれ以上の意味深い存在である。ソースコードには、そのソフトに関する、すべての情報が詰まっているのだ。ソースコードさえあれば、そのソフトは完全に構築できるし、改造や改良もできてしまう。価値的な意味では、ソースコードはソフトそのものだと言っても過言ではない。
一方、バイナリコードは、ソースコードをコンパイルした結果なので、そのままでは人間に解釈できない。コンパイルの逆操作を行えば、ある程度のソースコードの復元はできるが(それを逆コンパイルという)、もとのソースコードに盛りこまれていた設計思想などに関する情報までを復元することはほとんど不可能である。
従って、ソフト開発者は、自分のソフトが無断で複製されたり流用されたりするのを妨げるために、ソースコードは厳重に手元に管理して、バイナリコードのみを配布・販売することが多い。それに加えて、多くのソフトでは、バイナリコードからソースコードを復元する操作、すなわち逆コンパイルを禁止することを、ソフト使用同意書(つまり、開発者とユーザーの間で交わされる契約書)に盛りこんでいる。
一般的に、商業的なソフトウェア(つまりある程度の代価でもって販売されるソフト)のことを、プロプライエタリソフトという。プロプライエタリソフトのほとんどは、上記の理由によって、ソースコードを公開せずにバイナリコードのみを配布している。しかしながら、ソースコードが秘匿されると、ユーザーは自分の計算機がそのソフトで何をどのようにやっているのかわからなくなってしまうことが多い。つまり、ソフトがブラックボックスになってしまう。無論、多くのユーザーは、プログラムを読んで理解する能力も時間的余裕も持っていないので、そんなことは気にしない。しかし、個人で使うレベルではなく、数1000人とかが関わるような事業で使うレベルでは、技術者が、ソフトの内容の検討や改良を行いたいというケースも出てくる。何よりも、ソフトには開発者の設計ミスなどによる誤動作(これをバグという)がつきものだが、それを直すために、いちいち開発者に連絡して依頼して、ということを繰り返すのは非効率的である。
そこで、「多くの人が使うソフトウェアは、できる限り、全ての情報を公開し、共有しようじゃないか」という考え方というか、運動が発生し、今日に続いている。ソフトウェアに関して言えば、「全ての情報」とはすなわちソースコードのことである。つまり、この運動では、ソフトを配布するにあたり、ソースコードも公開する、という方針をとっている。この運動はオープンソース運動とよばれ、それによって公開されるソフトのことを、「オープンソースソフト(OSS)」または「フリー・オープンソースソフト(FOSS)」という。オープンソースソフトは、ソースコードが完全に一般公開されるので、ユーザーはそのソースコードをもとに、勝手にコンパイルして勝手に使うことができる。オープンソースの再配布・改造にはほとんど制限がない。数少ないが重要な制限は、
- 開発者の著作権を尊重すること。
- オープンソースをベースにして改良・統合などを加えて作成したソフトは、オープンソースとすること。
などである。
オープンソース運動を最も強力に展開してきたのは、Free Software Foundationという団体であり、その活動の中でも、GNUという活動は顕著な功績を挙げてきた。
代表的なオープンソースソフト
GNUによって開発・配布されたオープンソースは、知らないところで我々の役に立っている。たとえば筑波大学生物資源学類のホームページは、オープンソースのOS(Linux)の上で、オープンソースのウェブサーバー(apache)によって提供されている。
以下に、いくつかのソフトのカテゴリにおける、代表的なオープンソースとプロプライエタリソフトを示す:
カテゴリ オープンソース プロプライエタリ ------------------------------------------------------------------------------------------- OS Linux, FreeBSD Windows, Mac OSX ワープロ LibreOffice Writer MS-Office Word, 一太郎 表計算 LibreOffice Calc MS-Office Excel プレゼン LibreOffice Impress MS-Office PowerPoint 統計解析 R SPSS, SPLUS 数理解析 octave MATLAB, IDL 数式処理 Maxima Mathematica, Maple 地図描画 GMT グラフ描画 gnuplot 各種 グラフィックエディタ GIMP Adobe Photoshop ウェブサーバ apache Microsoft IIS 地理情報システム(GIS) GRASS ArcGIS プログラム言語(コンパイラ) gcc Visual C++, Visual Basicなど プログラム言語(インタプリタ) perl, awk, ruby, python データベース PostgreSQL, MySQL Oracle, MS-Office Access
→ IT入門に戻る!
Keyword(s):
References:[2018_実用解析] [IT入門] [なぜプログラミングを学ぶのか]