こんにちは。Supership株式会社データソリューションスタジオの西尾です。
開発をする上で OSS(Open Source Software) を使うことはあると思います。
OSSには利用条件が存在しますが、どう扱えばOKなのかがわからないこともあります。
この記事でOSSの利用条件や表記をどうしたらいいのかを共有できればと思います。
もしこの部分間違ってるなどありましたら、どんどんご指摘ください!
この記事は、Supershipグループ Advent Calendar 2024の 21日目の記事になります。
OSS
オープンソースソフトウェア(OSS)とは、利用者の目的を問わずソースコードを使用、調査、再利用、修正、拡張、再配布が可能なソフトウェアの総称となります。
定義については、Open Source Initiative(OSI)と呼ばれるOSSを促進することを目的とした組織によってOSD(Open Source Defition)という形で10個の定義でまとめられています。
-
Free Redistribution
自由な再頒布ができること -
Source Code
難読化されていないソースコードを入手できること -
Derived Works
派生物が存在でき、派生物に同じライセンスを適用できること -
Integrity of The Author’s Source Code
差分情報(バッチファイルなど)の配布を認める場合には、同一性の保持を要求してもかまわないこと -
No Discrimination Against Fields of Endeavor
個人やグループを差別しないこと -
No Discrimination Against Fields of Endeavor
利用する分野を差別しないこと -
Distribution of License
再配布において追加ライセンスを必要としないこと -
License Must Not Be Specific to a Product
特定製品に依存しないこと -
License Must Not Restrict Other Software
同じ媒体で配布される他のソフトウェアを制限しないこと -
License Must Be Technology-Neutral
技術的な中立を保っていること
以上の様に、ソースコードやソフトウェアを一般に公開して誰でも自由に扱ってよいとする考えに基づいた物になります。
OSSライセンス
OSSの使用許諾条件のことであり、「著作権」に基づいてOSSの利用条件を定義されています。
逆に言えばOSSとは、OSSライセンスを遵守することを条件に使用が許諾されているとも言えます。
OSIによって承認された代表的なライセンスがOSI Approved Licensesに一覧化されています。
ライセンスの確認方法
OSSとして頒布されているソースコードに同梱されていることが多いです。
大抵は、”LICENSE”と名付けられていることが多いため、ソースコード内部を検索すれば、見つけやすいと思います。
組み込み製品にOSSが利用されている場合には、当該製品の画面に表示されていたり、取扱説明書に記載されていたりすることがあります。
OSSライセンスのポイント
無保証
無保証はプログラムの動作や利用にもとづく損害を著作者は保証しないことを意味します。プログラムにエラーがあって動かなくても著作者は責任を負うことはないということです。
著作権表示
著作権表示は、誰かが勝手にそのプログラムの著作者であると名乗らせないための条項であり、これは著作権の放棄は行っていないことを示しています。
OSSだからといって著作権がないわけではありません。勝手に著作権表示を消したり、表示を行わない場合はライセンス違反になります。
なので、OSSを利用したソフトウェアを頒布する際は、利用元OSSの「著作権」「ライセンス文」「免責事項」などを表示しなければならない点があります。
具体的に「何を」「どこに」「どのように」表示するかは各ライセンスによって異なる可能性があるので、詳細は個別のライセンスを丁寧に確認する必要があります。
コピーレフト非コピーレフト
コピーレフトとは元の著作物を利用して制作した二次著作物にも同様のライセンスを課す条件です。
主要なところではGPLライセンス(GPL-2.0, GPL-3.0)がこれに該当します。
ですのでコピーレフト性のあるライセンスを含む場合は自動的にコピーレフト性のあるライセンスになります。
多くのOSSは非コピーレフトであることが多いですが、コピーレフトを扱う場合はよくライセンスを確認した方がいいでしょう。
主要なOSSライセンス
MITライセンス
オープンソースライセンスの中でも非常に緩いライセンスです。
著作権表示とライセンス条項をプログラムに記載すれば利用できます。
Vue.jsやReact(*)もMITライセンスを採用しています
修正BSDライセンス(3条項BSDライセンス)
修正BSDライセンスもMITライセンスに近い制限の緩いライセンスです。
MITライセンスとの違いは二次著作物の宣伝の際に元の著作者の名前を利用してはいけない点です。
なお、この宣伝の制限をとった2条項BSDライセンスもあります。これはMITライセンスと同等の内容のライセンスになります。
GPL
著作者・ライセンス条項表示の他、コピーレフト条件を定めたライセンスです。
GPLを利用して作ったものは、GPLライセンスを継承しないといけません。GPLを採用しているものとして有名なのがWordPressです。
The GNU General Public License v3.0- GNU Project - Free Software Foundation
Apache License 2.0
MITライセンス・BSDライセンス同様な自由なライセンスですが、その2つに比べると条件が多いです。1つは変更箇所の告知事項です。変更したファイルについて変更した旨を告知することが定められています。
「著作権表示」と「ライセンスの表記」
表記はソースコードとバイナリを配布する際の大きく2つに分かれます。
どちらにしても、頒布物に著作権文・ライセンス文が含まれていれば、受領者に知られ、渡り、受領が見ようと思えばどこかに現れることで、表記されたと考えることができます。
ソースコード形式で頒布する場合
利用元のソースコード中に「著作権」及び「ライセンス文」が含まれているため、意図的にこれらを除去するなどしなければ、特に何もする必要はないとすることができます。
Githubなどで公開されているソースコードを見ても、これらについて特別に個別のファイルなどで明記していないものを見かけることは少なくありません。
バイナリ形式で頒布する場合
バイナリを配布する場合はコンパイル時にライセンス文が消えてしまうため、バイナリとは別にライセンス表示用のファイルなどにまとめて記載し、頒布先に提供する必要があります。
著作権表示
著作権表示の方法ですが、オリジナルのソースコード内に著作権表示が含まれていることがほとんどのようです。
JSなどでバンドルやミニファイをする場合は、コメントが削除されるのでこれらの記述も削除されてしまう可能性がありますので、別途表記用のライブラリやコードで削除させない様にする必要があります。
ライセンスの表記
ライセンスについても、基本は著作権表示と同様で、ソースコード内に記載されているのが一般的です。
記載方法ですが、「OSSライセンスの全文」の代わりに、「MITライセンスの全文が記載されているページURLを記載することもある様です。
表示方法いろいろ
著作権やライセンス表示については「ソースコード内に記載する」が最も一般的ですが、他にも
- ウェブページ上に著作権・ライセンス表示するためのページを持つ
- 別のドキュメントとして公開をする
- 非表示のメタデータとして保持する
など、より丁寧に使用しているOSS情報を明示するの形が良い形かと思われます。
参考資料
エンジニアが最低限理解しておくべきOSSライセンスの基礎知識 | フューチャー技術ブログ
知らないで使うとトラブルになるかも…プログラム・画像のライセンス(概要編) - ICS MEDIA
OSSのライセンス表記・表示について | OSSライセンス姉崎相談所
商用利用できるオープンソースライセンスはけっきょくどれで何をすればいいのか? - Qiita
最後に宣伝です。
Supershipではプロダクト開発やサービス開発に関わる人を絶賛募集しております。
ご興味がある方は以下リンクよりご確認ください。
Supership 採用サイト
是非ともよろしくお願いします。