【オープンソース(OSS)とは】特徴や使用の注意点、オープンソースの一覧を初心者向けに分かりやすく解説
何かソフトウェアを探している時やプログラミング言語を調べている時など『オープンソース』という言葉を見かけたことがある方も多いのではないでしょうか?
今回はその『オープンソース』について、初心者向けに下記の疑問を解決できるよう解説していきます。
- オープンソースとはなにか?
- オープンソースのメリットやデメリットは?
- オープンソースの使い方や気を付けるべき点は?
- オープンソースには何があるのか?
目次
オープンソースとは?
そもそも『オープンソース』とは何か?についてまずは説明します。
オープンソースとはその名の通り、プログラミング言語によって書かれている『ソースコード』が『公開(オープン)』されているものを指します。
つまり誰にでもソースコードが入手できる状態にあります。
そして基本このオープンソースのソースコードは無償で提供されており、自由に利用やカスタマイズ、再配布をすることが出来ます。
ソースコードとは?
オープンソースについて知るためには、ソースコードについてもある程度理解する必要はありますので簡単に説明します。
結論ソースコードとは、プログラミング言語によって書かれている文章です。
何かのプログラムを実行させるときに、コンピューターがそのプログラムの内容を理解し実行していますが、その際コンピューターは、日本語など人が使う言葉ではなく、『機械語』を理解し実行しています。
しかしこの機械語は、人には理解しづらい言葉です。
そこでエンジニアの方達は、プログラミング言語によって人でもコンピューターでも理解できる言葉で文章を書き、コンピューターはそのプログラミング言語の記述を機械語に変換し、プログラムを実行しているのです。
人の言葉でもなく機械語でもない、人とコンピューターが互いに理解できる、プログラミング言語によって書かれた文章が先ほども言った通り『ソースコード』というわけです。
つまりオープンソースは、このソースコードが公開されており、基本無償で提供されているのです。
オープンソースとは反対のプロプライエタリソフトウェアとは?
ソースコードが公開されており、自由に利用やカスタマイズが出来るオープンソースに対し、ソースコードへのアクセスや利用・カスタマイズが制限されている『プロプライエタリソフトウェア』というものがあります。
通常ソースコードは、それを作った人や企業の財産になりますので、利用するには購入する必要があります。
そういったソフトウェアを『プロプライエタリソフトウェア』と呼んでいます。
オープンソースとフリーソフトウェアの違い
オープンソースと混同されがちなものとして『フリーソフトウェア』というものがあります。
フリーソフトウェアには、2つの意味がありまして、自由を意味する『自由なソフトウェア』と無料を意味する『無料のソフトウェア』があります。無料のソフトウェアは、フリーウェアやフリーソフトとも呼ばれることがあります。
ここでは後者である『無料のソフトウェア』を意味するフリーソフトウェアとオープンソースとの違いを説明します。
結論この2つは全くの別物です。
オープンソースは、無償か有償に関わらずソースコードが公開されており、自由に利用やカスタマイズ、再配布が出来るソフトウェアのことを差しており、フリーソフトウェアは、ソースコードは公開されておらず、無料で提供されているソフトウェアを指します。
中には無料で提供されており、ソースコードも公開されているソフトウェアもありますが、それはオープンソースのソフトウェアに分類されます。
そのため2つは全く異なるソフトウェアとして認識しておく必要があります。
ちなみに前者である『自由なソフトウェア』を意味するフリーソフトウェアとは、ソースコードの入手や利用、カスタマイズ、再配布が自由に出来るソフトウェアです。
一見オープンソースとの違いはないように見えますが、オープンソースとフリーソフトウェアでは概念や思想に違いがあるようです。
前者のフリーソフトウェアは『自由』であるということが強調されているため企業側に採用されにくい側面がありましたが、それに対し、ソースコードを公開するという点に注目し、ビジネス上の戦略としてオープンソースという言葉が出てきました。
その他にも詳しくは違いがあるようですが、今回は初心者向けということで割愛します。もっと詳しく知りたい方は、調べてみてください。
参考までに参考となりそうな記事を載せておきます。https://www.yamdas.org/column/technique/fsffj.html
オープンソースのメリット
オープンソースのメリットには下記が挙げられます。
- カスタマイズできる
- 使用できなくなるリスクがない
- コストの削減
- 自身でバグの発見や修正ができる
- 優秀なソフトウェアもある
カスタマイズできる
オープンソースには自由にカスタマイズができる柔軟性にあります。
自身でソースコードを改変できますので、自社の用途に合わせて修正することが出来ます。
様々な業界や業務、市場の変化に対して対応できる柔軟性はオープンソースの大きなメリットです。
使用できなくなるリスクがない
ソースコードが公開されていないソフトウェアを開発・提供している会社が倒産すると、そのソフトウェア自体が使用できなくなってしまう可能性があります。
しかしソースコードが公開されているオープンソースにはそのリスクがありません。
継続的にソフトウェアを使用できる安定性があります。
コストの削減
一般的にソフトウェアを利用する場合、ライセンス費用が掛かります。
その点オープンソースのソフトウェアを使用する場合は、ライセンス費用は発生しません。
またサポートの打ち切りなどによる更新(リプレース)費用やそれに掛かる工数も発生しないので、費用面以外でもコストを削減することが出来ます。
自身でバグの発見や修正ができる
オープンソースはソースコードが公開されており、自由にカスタマイズできますので、何かバグなどの問題があった時、自身でソースコードを修正することが出来ます。
しかしソースコードが公開されていないソフトウェアの場合、どのようにプログラムされているのか確認が出来ない為、バグが発生した時には、それを開発・提供している会社に依頼する必要があります。
迅速に対応してくれるのであれば、まだ良いですがそうでなければスピード感が損なわれてしまいます。
その点都度必要なタイミングで、修正ができるオープンソースは素早く対応することが出来ます。
優秀なソフトウェアもある
一見オープンソースではないソフトウェアの方が、ライセンス費用が発生するため優秀な印象を持ってしまいますが、オープンソースのソフトウェアでも優秀なものあります。
例えば、ホームページやサイトの構築によく使用される『Wordpress』もその一つですし、OSで有名な『Linux』も代表的なオープンソースのソフトウェアで、有償のソフトウェアよりも高い品質として評価されています。
ソースコードが公開されているため、世界中の優れたエンジニア達が問題の改修に取り組んでくれ、その内容がアップデート時に反映されることで、結果的に高品質なソフトウェアへと変わっていっているのです。
オープンソースのソフトウェアだからこそより良いソフトウェアに発展していくものもあります。
オープンソースのデメリット
オープンソースのデメリットはこちらです。
- マニュアルやサポートの不足
- バグが残っているリスク
マニュアルやサポートの不足
ライセンス費用が掛かるソフトウェアの場合、マニュアルが準備されており、当然ユーザーはそれを利用することが出来ます。また何かバグなど問題が発生した場合には、ソフトウェアの開発・提供元である会社が、責任をもって改善してくれます。
しかし、オープンソースの場合は、その環境が十分に整っている訳ではありません。
その為、自身でソースコードを読み解いて、使い方を学んでいく必要があります。
ただ多くの人が利用するオープンソースのソフトウェアであれば、使い方をまとめてくれるサイトもありますので、それらを参考にするのも良いでしょう。
バグが残っているリスク
ライセンス費用が掛かるソフトウェアの場合、バグなどの問題はそのソフトウェアを提供・開発している企業しか修正出来ない分、それらは義務として責任があります。
しかしオープンソースのソフトウェアの場合、そのような義務や責任はありません。
その為、中にはバグが残っている状態のものもあるということを十分理解しておかなければならないでしょう。
ただ有名なオープンソースのソフトウェアであれば、開発・提供元が修正してくれているケースもあります。
オープンソース利用時の注意点
コストが削減でき使い勝手の良さそうなオープンソースですが、利用時には注意するべき点がいくつかあります。
- ライセンス
- マニュアルとサポート
- バグの可能性
注意点①:ライセンス
オープンソースのソフトウェアを使用するにあたって、一番注意しなければならないのがライセンスです。
オープンソースのソフトウェアごとにライセンスは違い、それに違反すると訴訟問題に発展する場合もありますので十分注意が必要です。
無償だからと安易に利用する前に、必ずチェックしましょう。
オープンソースのライセンスの種類は後述で紹介します。
注意点②:マニュアルとサポート
デメリットでも紹介してはいますが、オープンソースのソフトウェアの中にはマニュアルやサポートが不足しているものも多くあります。
もし不安な場合は、事前に対象のソフトウェアのマニュアルが載っているサイトの有無やオープンソースによっては有償でサポートしてくれる企業があるのでその辺りもチェックしておく方が良いでしょう。
注意点③:バグの可能性
こちらもデメリットで紹介した通り、オープンソースのソフトウェアにはバグが残っているものがある可能性があります。
全てが完璧な状態ではないので、十分頭に入れておく必要があります。
オープンソースのライセンス
前述の注意点でも紹介した通り、オープンソースのソフトウェアにはライセンスがあり、ソフトウェアの種類によって適用されているライセンスが異なります。
利用時にはどのライセンスなのか?内容も含めてチェックする必要があります。
ライセンスの種類は大きく3つあります。
- GPL
- MPL
- BSD License
これらの中にバージョンがあったりと様々な種類があります。
GPL
GPLは、オープンソースのソフトウェアとして有名なWordpressやLinuxに採用されているライセンスです。
GPLの特徴はこちらです。
- カスタマイズして再配布する時には著作権表示が必要
- GPLを使用した場合、その制作物や派性物に対してもGPLを適用しなければならない
- 自由に利用、カスタマイズ、再配布できる
- 保証はなし
このようなルールがGPLにはあります。
MPL
MPLは、デスクトップ系のオープンソースにあたるFirefoxやThunderbirdなどに使用されているライセンスです。
MPLの特徴はこちらです。
- カスタマイズして再配布する時には著作権表示が必要
- ソースコードを改変して再配布する時、その部分はMPLで公開しなければならない
- 保証はなし
このようなルールがMPLにはあります。
BSD License
BSD Licenseは、プログラミング言語であるPHPやPythonなどに使用されているライセンスです。
BSD Licenseの特徴はこちらです。
- カスタマイズして再配布する時には著作権表示が必要
- 保証はなし
このようなルールがBSD Licenseにはあります。
ざっとそれぞれ説明しましたが、自身でもきちんと確認して利用するようにしましょう。
オープンソース一覧
オープンソースのソフトウェアは、プログラミング言語やフレームワーク、OSなどかなり多く存在します。
そこでそれぞれのカテゴリーで代表的なものをいくつか紹介していきます。
本記事で紹介するのは代表的なものになりますので、もっとたくさんオープンソースの一覧を知りたい方には下記を参考にしてもらえると良いと思います。https://itconsultant-dictionary.com/oss-list/
オープンソースプログラミング言語
オープンソースであるプログラミング言語の代表的なものを紹介します。
- Go(Golang/Go言語)
- PHP
- Python
- Ruby
- Scala
- TypeScript
- Perl
Go(Golang/Go言語)
Goは、GolangやGo言語などと呼ばれるGoogle社によって開発されたプログラミング言語です。
比較的他言語と比べ歴史は浅く、日本ではまだまだニーズの高い言語とは言えません。ただGoは処理能力が高く、複雑なシステム開発に対応できる能力があり、徐々にニーズが高まっている状況です。
大規模なWebサービスの開発やIoT、ビッグデータなどの開発に使用されるプログラミング言語です。
PHP
PHPは、サーバーサイド開発に使用れる言語で、サーバーサイド開発においてPHPのシェア率はかなり高いです。
同じオープンソースのWordpressにもこのPHPが使用されています。
小規模なホームページやWebサイトの開発から、大規模なWebサービスの開発まで幅広くPHPが使用されています。
Python
Pythonは、現在トレンドのプログラミング言語の一つです。
コードがシンプルであり、豊富な専門的なライブラリがあることに加え、AIやIoTと言ったトレンドのテクノロジー領域で活躍できる言語ですので、日本でもニースが高まっています。
機械学習やディープラーニングといったAI開発に使用される言語としては有名で、その他にもビッグデータやIoTの開発、Webサービスのサーバーサイドの言語としてPythonが使用されています。
Ruby
Rubyは、日本産のプログラミング言語として有名です。
国産ということで、日本人には習得しやすく、人気の高い言語です。もちろん世界的に見てもRubyの需要は高いです。
大小問わずWebサービスの開発に使用されるプログラミング言語です。
Scala
Scalaは、Javaの後継言語として開発されたプログラミング言語で、Javaとの関係性が深いです。
ほとんどのJavaのライブラリを簡単に使用できるため、多くのWebサービスに使用される人気の高い言語です。
Webサービスの開発やソーシャルゲームの開発、クラウドサービスの開発など様々な分野で活躍できる言語です。
TypeScript
TypeScriptは、JavaScriptの後継言語として、Microsoft社によって開発されたプログラミング言語です。
JavaScriptの進化版とも言われており、Google関連のサービス開発に使用されるなど人気も高く勢いのある言語です。
大規模なWebサービスの開発に向いており、フロントエンドエンジニアにおすすめな言語です。
Perl
Perlは、UNIX/LinuxやWindows、Macなど多くのプラットフォーム上で動作できるプログラミング言語です。
他言語と比べニーズ自体はかなり高い訳ではないですが、一定数需要はあるようです。
WebサービスやWebアプリ、ソーシャルゲーム開発などに使用される言語です。
オープンソース開発フレームワーク
オープンソースである開発フレームワークの代表的なものを紹介します。
- Angular
- Django
- jQuery
- Node.js
- Ruby on Rails
- Spring
- Vue.js
Angular
Angularは、Google社等によって開発されたTypeScriptベースのフロントエンドのフレームワークです。
同じような名前でAngularJSがありますが、このAngularJSはJavaScriptベースのフレームワークで、似たような特徴を持ちますがフレームワークとしては別物です。
TypeScriptという人気の高い言語のフレームワークで、フロントエンド開発には多く使用されているフレームワークです。
Django
Djangoは、PythonベースのWebフレームワークです。
トレンド言語であるPythonのフレームワークとして人気が高く、開発速度が速いなどと言った特徴があります。
Webフレームワークですので、AIなどの開発ではなく、Pythonを使ったWebサービスの開発に使用されるフレームワークです。
jQuery
jQueryは、JavaScriptベースのフレームワークです。
JavaScriptで出来ることをより簡単な記述で実行できる特徴があり、HTMLやCSSとの関係性も深いです。
フロントエンドエンジニアやWebデザイナーに人気の高いフレームワークです。
Node.js
Node.jsは、JavaScriptベースのフレームワークです。
本来JavaScriptは、フロントエンド開発をメインに使用される言語ですが、Node.jsによりサーバーサイド開発でもJavaScriptを使用して開発できるようになります。
JavaScriptの活躍の場を広げることのできるフレームワークです。
Ruby on Rails
Ruby on Railsは、Rubyをベースとしたフレームワークで、Railsなどと省略されて呼ばれることが多いです。
Rubyで開発するには欠かせないフレームワークで、RubyエンジニアにとってはこのRuby on Railsは必要不可欠なスキルです。
Rubyを使用している開発現場では、ほぼ必ずと言って良いほどこのフレームワークが使用されています。
Spring
Springは、Javaベースのフレームワークで、Spring Frameworkを省略してSpringと呼ばれています。
Springには細かく種類があり、その中で代表的なものにSpring Bootなどがあります。
高速な開発が実現でき、汎用性も高いのでJavaエンジニアに人気の高いフレームワークです。
Vue.js
Vue.jsは、JavaScriptベースのフレームワークです。
Vue.jsと言えば、SPA(Single Page Application)開発に適したフレームワークとして人気が高いです。
WebサービスにおいてUI/UXは非常に重要になってきており、SPAにより、動作性の向上や高度なWeb表現が出来るようになります。
そのためVue.jsのニーズも高まっています。
オープンソースのバージョン管理
オープンソースであるバージョン管理の代表的なものを紹介します。
- Git
Git
Gitは、ソースコードなど変更した履歴の記録や確認ができるバージョン管理システムです。
多くの企業はこのGitを導入しており、エンジニアにとっては必要不可欠なものになっています。
似た名前として、GitHubというものがありますが、GitHubはソースコードの公開などができる、謂わば共有サービスですのでGitとGitHubは別物です。
オープンソースOS/仮想化
オープンソースであるOSの代表的なものを紹介します。
- Linux
- Android
- CentOS
- Docker
Linux
Linuxは、Unixをベースに開発されたOSです。
シェア率ではWindowsやMacに次いで3番目に位置するOS(デスクトップOS)です。
またサーバーOSとしてもLinuxは、多くの企業で使用されています。
Android
Androidは、Google社が提供するスマートフォン向けのOSです。
スマートフォンOSと言えば、iPhoneに搭載されているiOSがありますが、世界的に見れば圧倒的にAndroidのシェア率が高いです。
CentOS
CentOSは、Red Hat Enterprise Linuxをベースに開発されたLinuxディストリビューションです。要はLinuxの一種と考えて問題ないです。
サーバー側に使用されるOSとして人気の高いものです。
Docker
Dockerは、コンテナ仮想化によりアプリケーションの開発や実行をするためのソフトウェアです。
仮想化技術としてDockerは注目されています。
オープンソースサーバー/データベース
オープンソースであるサーバーやデータベースの代表的なものを紹介します。
- nginx
- MariaDB
- MySQL
- PostgreSQL
- SQLite
- MongoDB
DBのランキングを知りたい方はこちらを参考にしてみてください。https://db-engines.com/en/
nginx
nginxは、今勢いのあるWebサーバーです。
Webサーバーと言えば、Apacheで最もシェア率が高いのですが、それに次いで2番目に位置しているのがnginxで、年々このシェア率を伸ばしてきています。
高速かつ軽量なWebサーバーですので、多くのレンタルサーバーにも使用されています。
MySQL
MySQLは、多くの企業が採用している関係データベース管理システムです。
DBの中でもOracleについで2番目にシェア率が高く、人気の高いDBです。
同じオープンソースであるWordpressにも使用されており、その他レンタルサーバーや検索エンジンにも使用されています。
MariaDB
MariaDBは、MySQLの派生として開発された関係データベース管理システムです。
処理能力や品質が高く評価され、Google社にも使用されています。
また主要なLinuxディストリビューションに採用されるなど、シェアを拡大しています。
PostgreSQL
PostgreSQLは、主要なUnix系のOSに対応できる関係データベース管理システムです。
豊富な機能と高い拡張性に評価があり、多くの企業に採用されています。シェア率でも4番目に位置しており、非常に高いです。
SQLite
SQLiteは、DBの中でも非常に軽量な関係データベース管理システムです。
軽くて速いという特徴がありますが、比較的小規模のWebサービスに使用されることがメインで、大規模なWebサービスには向いてはいないDBです。
MongoDB
MongoDBは、NoSQLに分類されるデータベースシステムです。
DBのシェア率としては5番目に位置しており、NoSQLの部類の中でも多くの企業に利用されているDBです。
NoSQLとして高い機能をもっており、関係データベース管理システムと近い検索性も持っています。
オープンソースデスクトップ
オープンソースであるデスクトップソフトウェアの代表的なものを紹介します。
- Firefox
- Thunderbird
Firefox
Firefoxは、デスクトップブラウザとしてはchromeの次によく利用されているウェブブラウザです。
マルチプラットフォームに対応しており、デスクトップではWindows、macOS、Linuxで動作させることができ、スマートフォンではFirefox for Mobileが利用可能です。
Thunderbird
Thunderbirdは、高機能な電子メールクライアントソフトウェアです。
今ではWebメールであるGmailが出てきてメーラーとしてのシェアは下がっていますが、豊富な拡張機能があり人気はあります。
またFirefoxユーザーにとっては、同じ開発元ですので特に人気があります。
オープンソースサイト構築
オープンソースであるサイト構築の代表的なものを紹介します。
- WordPress
- EC-CUBE
WordPress
WordPressは、ホームページやサイト作成に使われるCMSです。
HTMLが分からなくてもサイトを作成できるので、多くの人に活用されています。
またCMSの中でも圧倒的なシェア率を誇っています。
EC-CUBE
EC-CUBEは、ECサイト構築に特化した国産のCMSです。
国内ではかなりの人気があり、比較的豊富な機能を備えています。
日本産ということで、非常に使い勝手は良いです。
最後に
オープンソースは、ソースコードが公開されており、無償で利用やカスタマイズ、再配布ができるソフトウェアです。
コストを削減し自社のニーズに合わせてカスタマイズできるので、非常に使い勝手のよいソフトウェアと言えます。
ただ、ライセンスであったりマニュアル・サポートの不足などデメリットや注意すべき点があるので利用時には注意が必要です。
それらを踏まえてオープンソースを活用していきましょう。