OSSとは
OSS(Open Source Software)とは、作成者が著作権を保持しつつ、ソースプログラムを公開し、自由な利用を認めるソフトウェアです。
(それに対して、ソフトウェア開発者・配布者などが、仕様や技術を独占的に保持し、情報を公開していないものをプロプライエタリ(proprietary)ソフトウェアといいます、)
OSSの提供や利用の原則として、いくつかの団体がOSSのルールを定めていますが、OSI(Open Source Initiative)のOSD(Open Source Definition)では、次の10項目をOSSの定義としています。(厳密な定義や著作権に関しては「購入ソフトウェア、オープンソースソフトウェアと著作権」で扱っています)。
- 再配布を自由に認めること
- ソースコードを無償で配布すること
- 派生ソフトウェアの配布を許可すること
- ソースコードのどの部分が、作者オリジナルのコードかわかるようにすること(作者コードの完全性)
- 個人やグループに対する差別をしないこと
- 使用分野に対する差別をしないこと
- プログラムに付随する権利はすべての再頒布者に平等に与えられること(ライセンスの分配)
- 特定の製品だけに限定したライセンスにしないこと
- 他のソフトウェアを制限するライセンスにしないこと
- ライセンスは技術的に中立であること
OSSの開発・普及には非営利組織のコミュニティやユーザ会があり、バグの修正・改善、情報提供や質問回答などのサービスをしています。そのコミュニティなどのサイトやオンラインソフトウェアを紹介するウェブサイトから無料でダウンロードして利用できます。
また、有料でOSSやアプリケーションソフトウェアを組み合わせて,実用的なパッケージにして提供し、関連サービスも提供するディストリビュータ(配布者)も存在します。
OSSは一企業の商品とは異なり、企業の方針で提供期間や価格が変更されることはありません。著名なOSSは、利用者が多く、OSSを用いたサービス業者も多いので、デファクトスタンダードになっているものもあります。それで、情報システム開発では、なるべくOSSの利用を考慮すべきです。
代表的なOSS
OS
OSの中核部分と、機能追加(プロセス、ファイルシステム、コミュニケーション、システム起動など)をするための最小限の基本機能をカーネル(kernel)といいます。カーネルは開発組織から提供され、それを用いたOSSライブラリの開発・公開・共有には、多様な組織が関与しています。
- BSD系UNIX
- BSD(Berkeley Software Distribution)は、カリフォルニア大学バークレー校が開発・配布したOS(UNIX)を元に開発されたOS群の総称であり、現在はBSDライセンスのOSSになっています。
BSDカーネルによって拡張された代表的なBSDに、
FreeBSD 1980年代PC向けの実用性重視
OpenBSD 後のmacOSの元となった。
NetBSD 移植性とクリーン設計を指向
などがあります。
- Linux
- Linuxとは、狭義にはリーナス・トーバルズによって開発されたUNIX系のOSカーネルのことですが、広義にはそれをカーネルとして周辺を整備したソフトウェア全体を指します。
Linuxカーネルは軽量で、スペックの低いPCでも稼働するOSとして注目されましたが、次第に肥大化し、またカーネル以外の機能が充実し、高水準な機能を実現してきました。現在では、Linuxは、スーパーコンピュータ、サーバー、組み込みシステムなど、大小さまざまなシステムで使われています。特にWeb環境でのサーバにはLinuxをOSとするものが多いです。
- Android
- Googleが開発したOSSスマートフォンOSです(iPhoneのOSはApple社のプロプライエタリソフトウェア)
公式サイト:Android Open Source Project
Windows(MicroSoft)、iOS(Apple)などはプロプライエタリソフトウェアです。
Webブラウザ関連
- Firefox
- Webブラウザ。非営利企業のMozillaが開発。
- Chromium
- Googleが提供するWebブラウザChromeをオープンソースで開発したものです。
- JavaScriptライブラリ/フレームワーク
- ライブラリは機能の提供に特化し、アプリケーションから利用される部品です。
フレームワークはアプリケーションのおおまかな枠組み(ひな形)です。
しかし、実際に提供されている多くのものは両方の要素も持っており、厳密には区分できません。ここでは、まとめてライブラリとします。
jQuery, React, Node.js, MVC など著名なライブラリがOSSとして公開されています。
- jQuery
- 代表的なJavaScriptライブラリです。
・ブラウザの違いを意識せずに済む
・HTMLのDOM操作が簡単にできる
・Ajax処理が簡単に記述できる
など、上級者でないと作成できない機能を、$(セレクタ).メソッド(パラメタ) の形式の簡単な記述で実現できます。
サーバソフト
- Apache HTTP Server
- Webサーバソフト。大規模な商用サイトから、個人レベルの自宅サーバまで世界でもっとも広く使われている。
- BIND(Berkeley Internet Name Domain)
- DNSサーバソフト。UNIX系で最も利用されている
- Sendmail
- メールサーバソフト。多くのOSで採用されており、MTA(メール転送エージェント)の実質的標準
- Postfix
- メールサーバソフト。運用が容易であり、近年Lunix系での採用が多い。
- Tomcat
- アプリケーションサーバ。JavaサーブレットやJSPを処理する
プログラミング言語
- C言語
- 1970年代に開発された手続き型のコンパイラ言語。UNIXでの主要言語。1980年代のPCでの主要言語
- C++
- C言語を拡張してオブジェクト指向化したもの
- Perl
- C++よりも言語文法レベルでオブジェクト指向を重視した言語。インターネット環境に適する。仮想マシン(Java VM, JVM)上で動作する。
- Perl
- 広く使われるようになった最初の軽量言語。多くの開発者によるど巨大なライブラリCPANや解説サイトがあり、利用しやすい環境になっている。
- Python
- 軽量言語。オブジェクト指向言語、関数型言語。「シンプルで習得が容易」という目標に重点に言語自体の機能は最小限に押さえ、必要な機能は拡張モジュールとして追加する方針。プログラム記述ではインデント(字下げ)を重視し、「ブロックの範囲をインデントで決定する」という特徴をもっている。
- PHP
- 軽量言語。HTMLからCGIを通して呼びだされ、動的なWebページを生成する。
- Ruby
- 日本発でISO規格になった初の軽量言語。シンプルかつ強力なオブジェクト指向スクリプト言語。開発環境Ruby on Railsが優れている。
データベース
MySQL
リレーショナルデータベース。「複雑なアルゴリズムはなるべくサポートしない」設計思想であり、設定や管理が比較的簡単で速い上、信頼性が高く、基本操作に適している。
PostgreSQL
オブジェクトリレーショナルデータベース。機能が豊富で、SQL以外にもPythonなどの外部プロシージャが使える。
統合開発環境
Eclipse
分野:BMによって開発された統合開発環境。Java、C、C++、Perl、PHP などの多くの言語に対応している。
開発者:IBM
公式サイト:Eclipse.org
NetBeans
Java開発用統合開発環境であり、優れたGUIエディタなどの機能を持つ。
オフィス系ソフト
Microsoft の Word や Excel などの Officeスイートとの互換性を持つOSSです。
- Apache OpenOffice
- オフィスソフト。ワープロソフトの「Writer」、表計算ソフトの「Calc」、プレゼンソフトの「Impress」、ドローソフトの「Draw」、データベースソフトの「Base」、数式エディターの「Math」の6つのソフトで構成されている。
- LibreOffice
- OpenOffice とほぼ同じ機能をもっています。インストール時のHDD使用容量が大きいのが欠点ですが、操作性に優れています。Microsoft Office のファイルへの書き込みもできます。
- Thunderbird
- Outlookのようなクライアント側のメールソフトです。スケジュール機能はありません。ベイズ理論による学習型の迷惑メールフィルタリングやフィッシング詐欺アラームなどセキュリティ対策が強力です。
OSS関連サービス
GitHub
OSSライブラリ。OSSを主とする多数のソースコードのライブラリを収集し、コードのバージョン管理システムにより、最新コードのソースや仕様などを無料で公開しています。
オープンソースコミュニティ
OSSの開発や改善、情報交換などを主な目的とする、有志や同好の志によって組織された団体の総称です。その多くは、特定のOSSの利用者、開発者、愛好者らによって構成され、非営利目的で運営されています。内部活動では情報交換や共同開発を行い、外部活動としてOSSの普及、ライブラリの公開、質問などへの支援を行っています。
- フリーソフトウェア財団(Free Software Foundation,FSF)
「Free Software, Free Society」を標語として、コンピュータ・ソフトウェアを作成、頒布、改変する自由をユーザーに広く遍く推し進めることを狙い、コピーレフトを基本とするフリーソフトウェア運動の母体。GNUライセンスを定めた。
- TheOpenGroup
世界主要約50ヶ国の500以上の企業・団体・官公庁が参加し、ITベンダー/ユーザーに対して中立の立場からUNIXの標準化や普及を目的としている組織
- Linux Foundation
Linuxの普及促進を目的とする非営利組織。Linuxの商標管理から開発、標準化など、Linuxに関する多くの管理事業を行っている。
オープンソースライブラリ
OSSを用いたソフトウェアを多数集めて公開・共有するアーカイブ(書庫)サイトです。優れたライブラリは世界中の技術者が開発に参加し、その成果を共有しているので、バグが少なく、最新の環境や要件に対応しています。
Perl:CPAN(Comprehensive Perl Archive Network)やPHP:PEAR(PHP Extension and Application Repository)など、各言語系で多くのライブラリがあります。
OSSを用いてシステムを構築する際は、このライブラリから適したモジュールを探して加工するのが広く行われています。
LAMP、LAPPなど
データベース連動型Webアプリケーションを開発するための定番オープンソースソフトの組み合わせです。
LAMPは、OSであるLinux、WebサーバであるApache HTTP Server、データベースであるMySQL、スクリプト言語であるPerl、PHP、Pythonを総称した頭文字を組み合わせたものです。
多くのLinuxディストリビューション(配布者)は、LinuxにLAMPをセットにして配布しています。それにより、Linuxのインストール時にこれらのソフトウェアの設定・関連付けを自動的に行うことができ、サーバー管理者の手間を軽減させることができます。
LAMPのような代表的な組合せを掲げます。
LAMP LAPP FLAP WISA WAMP WIMP
OS Linux Linux Linux WinServer WinServer WinServer
Webサーバ Apache Apache Apache IIS Apache IIS
データベース MySQL PostgreSQL Firebird SQL Server MySQL MySQL
言語 PPP PPP PPP ASP.NET PPP PPP
(注)WinServer=Windows Server、PPP=Perl + PHP + Python