OSS(オープンソースソフトウェア)とは?
OSS(オープンソースソフトウェア)とは、原則として無償で利用できるソフトウェアのことです。原則として無償ですが、OSSによってはライセンス上の制約がある場合があります。
OSSの大きな特徴の一つは、ソースコードが公開されていることです。ソースコードを公開することで、ユーザー自身が機能を修正、変更、拡張することができます。
OSSの要件・定義
OSS(オープンソースソフトウェア)の定義は、オープンソースを推進するために設立された団体であるOSI(Open Source Initiative)によって定義されています。最も重要な要件である「ソースコードが公開されていること」に限らず、OSIでは以下の10項目を定義しています。
- 再頒布の自由
- ソースコード
- 派生ソフトウェア
- 作者のソースコードの完全性
- 個人やグループに対する差別の禁止
- 利用する分野に対する差別の禁止
- ライセンスの分配
- 特定製品でのみ有効なライセンスの禁止
- 他のソフトウェアを制限するライセンスの禁止
- ライセンスは技術中立的でなければならない
OSSとフリーソフトの違い
OSS(オープンソースソフトウェア)は、ソースコードが公開されており、機能の改変や拡張が可能なソフトウェアのことです。一方、フリーソフトあるいはフリーソフトウェアといわれているものの場合は、ソースコードが公開されておらず、ユーザーが機能を改変したり拡張したりすることができないのが一般的です。そのため、ソースコードが公開されているか否かでOSSとフリーソフトを区別するのが一般的です。
OSSの大きな利点は、すべてのソースコードが公開されており、再配布や拡張が可能であること、コミュニティが機能やセキュリティパッチを更新することが一般的であるため、タイムリーなソフトウェアが無償で利用できることです。これはフリーソフトとの大きな違いです。
しかし最近では、フリーソフトとして提供されていたものが、後にソースコードを公開され、OSSとして提供されるケースが増えています。
OSSが普及した理由
OSS(オープンソースソフトウェア)が広く利用されるようになったのは、上記のように、ソフトウェアの開発者以外でも無償で利用でき、改変や拡張、再配布が比較的自由に行えるというOSS自体の特性によるものです。
また、世界中のユーザーがコミュニティに参加できるため、脆弱性への対応やセキュリティパッチが作成され、品質の向上が期待できることから、普及が進んでいます。
OSSを利用するメリット
OSS(オープンソースソフトウェア)を利用する主なメリットを5つ解説します。
1.設計の簡素化
システム開発などでは、必要な機能をすべてゼロから設計し、プログラミングするには多大なコストと労力がかかります。特に設計段階では、徹底的に内容を練り上げる必要があります。しかし、必要な機能をOSS(オープンソースソフトウェア)で実現できれば、設計・開発工数を大幅に削減でき、全体の設計も簡素化できます。
2.プログラムおよびテスト工数の削減
OSSを利用することで、当該機能部分のプログラミング工程も不要となります。また、OSSはある程度テストされているため、プログラミングだけでなく、プログラム開発のテスト工数も削減できます。
3.リリース後の不具合対応が早い
システムがリリースされた後、そのシステムにバグが発見される可能性があります。そのバグが利用しているOSSに起因するものであったり、OSSにセキュリティ上の脆弱性が発見された場合、コミュニティが迅速に対応することが多くあります。バグの修正パッチのリリースやバージョンアップなど、スピーディな対策が可能なのもOSSを利用するメリットです。
4.機能強化やトレンドに追随できる
OSSはコミュニティの中でトレンドを追って機能強化されることが多くあります。OSSを利用していれば、その機能強化で自然とトレンドを追うことができます。
5.豊富な情報量と多くの選択肢
現在、OSSのコミュニティは非常に多く、さまざまなOSSがリリースされています。システム開発において、ある機能にOSSを利用したいと思った場合、多くの選択肢の中から希望のOSSを選ぶことができるほど情報量が豊富になっています。
たとえば、ある機能をOSSで実現したいとき、あるOSSが必要な機能だけでなく、5個程度の機能をカバーしているとします。もう一つのOSSは、必要な機能を含め10個の機能をカバーしているとします。
この二つのOSSのどちらかを選ばなければならない場合、将来を見据えて10個の機能を持つOSSを選ぶか、不要な機能に潜む脆弱性などのリスクを考慮して機能の少ないOSSを選ぶかの判断に困ることがあります。
そのような場合でも、OSSのコミュニティの発展により、ユーザーは数ある選択肢の中から、よりメリットの多いOSSを適切に選択できるようになっています。
OSSを利用するデメリット
OSS(オープンソースソフトウェア)を利用することのデメリットを4つ解説します。
1.ライセンスの理解と遵守
OSS(オープンソースソフトウェア)はさまざまなライセンスで提供されており、OSSの利用にはライセンスの遵守が求められます。
GPL(General Public License)やMIT(Massachusetts Institute of Technology)などさまざまなライセンスがあります。それぞれのライセンスで利用条件や規定が異なります。
そのため、OSSを利用する際には、これらのライセンスの内容を理解し、遵守することが不可欠です。
2.コンポーネントの構成把握が必要
OSSを使って開発中のシステムにある機能を追加したい場合、その機能を含むパッケージを実装する必要が出てくることがあります。その際、パッケージのコンポーネントの構成要素を正しく理解することが欠かせません。
コンポーネントの構成要素を正しく理解していなければ、脆弱性が発見されたとしても、利用しているOSSにその脆弱性が含まれているかどうかを判断することができません。
3.未知の脆弱性
OSSのソースコードが公開されているからといって、潜在的な脆弱性が完全に取り除かれているわけではなく、未知の脆弱性が残っている可能性もあります。セキュリティ上の脆弱性だけでなく、プログラム自体に不具合が残っている可能性もあり、OSSの利用はそのようなリスクがあることを理解した上で行う必要があります。
4.コミュニティ活動の変化
有志などのコミュニティによるバージョンアップや脆弱性への対応を通じて、常に最新の状態に保つことができることがメリットの一つとなっていますが、利用者数の減少によりコミュニティ自体が活動を停止することもあります。その場合、OSSのバージョンアップや不具合の修正は行われません。
また、活動を完全に停止しなくても、コミュニティ参加者や利用者の減少により、リリース頻度の低下や脆弱性への対応の遅れなど、マイナスの影響が出ることもあります。
そのため、OSSの中には、コミュニティの衰退によってOSSそのものが衰退してしまうリスクがあることを覚えておく必要があります。
OSSの代表的なライセンス
OSS(オープンソースソフトウェア)にはGPL、MIT、BSD、MPL、AGPL、Apacheなどのライセンスが存在します。利用する際にはライセンスポリシーを理解して遵守することが求められます。
GPL
GPLは、General Public Licenseの略で、リチャード・ストールマンが作成し、FSF(Free Software Foundation)が管理するOSS(オープンソースソフトウェア)の代表的なライセンスの一つです。
このライセンスは、ソースコードを提供することを条件に、商用利用だけでなく、無償で利用、改変、再配布が許可されています。
MIT
MITは、Massachusetts Institute of Technology Licenseの略です。数あるOSSライセンスの中でも比較的寛容なライセンスで、自由な利用や再配布が認められています。
商用利用も自由で、著作権表示と免責条項の表示が必要ですが、それ以外の制限はほとんどありません。開発者や企業は、MITライセンスのもとで自由にソフトウェアを利用、変更、再配布することができます。
BSD
BSDは、Berkeley Software Distribution Licenseの略です。このライセンスは、BSD系UNIXを開発したカリフォルニア大学バークレー校によって制定されました。MITライセンスと同様、非常に寛容なライセンスで知られています。派生物のライセンスに制限がないため、他のライセンスと組み合わせることが容易です。
MPL
MPLは、Mozilla Public Licenseの略で、Mozilla Foundationが作成したOSSライセンスです。基本的に再配布や改変は自由ですが、派生物はMPLとして公開し、ソースコードの提供が求められます。
AGPL
AGPLは、Affero General Public Licenseの略で、GPLに基づくOSSライセンスであり、主にウェブ向けのアプリケーションやサービスに適用されます。商用利用が認められており、派生物もオープンソースでなければなりません。
Apache
Apacheは、Apacheソフトウェア財団によって管理されているOSSライセンスです。比較的制限が少ないライセンスです。再配布、商用利用、派生物の作成を自由に許可されています。ただし、派生物もApacheでライセンスされます。
OSSを利用する際の注意点
OSS(オープンソースソフトウェア)を利用する際の注意点を3つ解説します。
1.ライセンスポリシーの遵守
OSS(オープンソースソフトウェア)を利用する際には、OSSのライセンスポリシーを理解し、遵守する必要があります。
ライセンスポリシーで商用利用を禁止しているにもかかわらず、OSSを商用利用した場合、訴訟のリスクも含めて莫大な損失を被る可能性があるため、十分な注意が必要です。
2.脆弱性に対する保証は無い
OSSに脆弱性があったとしても、それに対して何らかの保証を受けられることはありません。OSSのコミュニティは技術者の善意に基づくものであり、そこに欠陥があってもコミュニティは責任を負いません。そのため、OSSを利用する際には、脆弱性が発生するリスクがあることを理解しておく必要があります。
3.問題発生時の対応が必要
利用しているOSSにバグがあったり、脆弱性が発見されたりした場合、通常はコミュニティがパッチなどをリリースして対応します。ただし、いつ公開するかはコミュニティの判断によります。
自分たちで開発したソフトウェアであれば、緊急度を判断してスケジュールを組み、できるだけ早くリリースすることができます。しかし、OSSの場合、コミュニティに委ねられているので、自分がコミュニティのメンバーでない限り、コミュニティが問題を解決してくれるのを待つことになります。
OSSのSBOM管理と脆弱性対策ができる「Cybellum」
丸紅情報システムズが提供するソフトウェア脆弱性管理プラットフォーム「Cybellum」はOSS(オープンソースソフトウェア)のSBOM管理と脆弱性対策を可能にします。ツールの歴史とトレンド、Cybellumの概要を解説します。
ツールの歴史とトレンド
ライセンスの理解と遵守はOSSを利用する上で非常に重要なポイントであり、負担となる部分といえます。
特に大規模なOSSの場合、個々のOSSが大規模なOSSの中に含まれているケースもあり、これらのライセンスをすべて個別に特定するのは非常に困難で時間もかかっていました。
このような問題を解決するために、OSSコンポーネントのライセンスを自動的に抽出するツールが求められるようになりました。
そして開発されたツールは、OSSのソースコードのパッケージに含まれるコンポーネントを抽出し、それらのコンポーネントのライセンスが何であるかをすべて把握できるようになりました。
同時に、OSSに含まれるライセンスだけでなく、セキュリティ上の脆弱性も管理できる必要が出てきました。その結果、SBOM(ソフトウェア構成表)の重要性が高まり、SBOMに基づいた脆弱性管理がトレンドとなっています。SBOMに関しては以下の記事にて詳しく解説しています。
Cybellumの概要
Cybellumは、SBOM抽出や脆弱性検出などのソフトウェアのセキュリティ対策を一つのプラットフォームに統合したツールです。
現在のシステム開発では、すべてを自前で開発することは稀で、OSSを利用したり、ライブラリから購入するケースが多いです。ライブラリから購入する場合、OSSがライブラリに含まれていたとしても、提供される形態はバイナリー形式であるため、バイナリー解析ができるツールがないと、OSSのパッケージを把握できないという事態に陥りがちでした。
Cybellumでは、バイナリーパッケージからソフトウェアコンポーネントを抽出し、SBOMを作成し、脆弱性管理まで実施できます。
特に自動車や医療機器の分野では、システムの不具合が人命に関わるケースもあるため、すべてのコンポーネントを正確に特定し、そこに含まれる脆弱性を管理できることが重要です。
OSSの利用が欠かせない現在のシステム開発現場において、Cybellumは欠かすことのできないツールの一つといえるでしょう。
Cybellum お役立ち資料
Cybellumのカタログやホワイトペーパーをダウンロードいただけます。