スタートページWeb教材一覧ハードウェアとソフトウェア

代表的なOSS


OSSとは

OSS(Open Source Software)とは、作成者が著作権を保持しつつ、ソースプログラムを公開し、自由な利用を認めるソフトウェアです。
 OSSの提供や利用の原則として、いくつかの団体がOSSのルールを定めていますが、OSI(Open Source Initiative)のOSD(Open Source Definition)では、次の10項目をOSSの定義としています。(厳密な定義や著作権に関しては「購入ソフトウェア、オープンソースソフトウェアと著作権」で扱っています)。

  1. 再配布を自由に認めること
  2. ソースコードを無償で配布すること
  3. 派生ソフトウェアの配布を許可すること
  4. ソースコードのどの部分が、作者オリジナルのコードかわかるようにすること(作者コードの完全性)
  5. 個人やグループに対する差別をしないこと
  6. 使用分野に対する差別をしないこと
  7. プログラムに付随する権利はすべての再頒布者に平等に与えられること(ライセンスの分配)
  8. 特定の製品だけに限定したライセンスにしないこと
  9. 他のソフトウェアを制限するライセンスにしないこと
  10. ライセンスは技術的に中立であること

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

サーバソフト

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などの外部プロシージャが使える。

Webブラウザ関連

Firefox
Webブラウザ。非営利企業のMozillaが開発。
Chromium
Googleが提供するWebブラウザChromeをオープンソースで開発したものです。
JavaScriptライブラリ/フレームワーク
ライブラリは機能の提供に特化し、アプリケーションから利用される部品です。
フレームワークはアプリケーションのおおまかな枠組み(ひな形)です。
しかし、実際に提供されている多くのものは両方の要素も持っており、厳密には区分できません。ここでは、まとめてライブラリとします。
jQuery, React, Node.js, MVC など著名なライブラリがOSSとして公開されています。
jQuery
代表的なJavaScriptライブラリです。
  ・ブラウザの違いを意識せずに済む
  ・HTMLのDOM操作が簡単にできる
  ・Ajax処理が簡単に記述できる
など、上級者でないと作成できない機能を、$(セレクタ).メソッド(パラメタ) の形式の簡単な記述で実現できます。

統合開発環境

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の普及、ライブラリの公開、質問などへの支援を行っています。

オープンソースライブラリ

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