Python オープンソースソフトウェアのライセンスファイル#
GitHub リポジトリにライセンスファイルを追加する方法を学びたいですか? このレッスンを見てみましょう。
オープンソースライセンスファイルとは何ですか?#
LICENSEファイルというのは、GitHubやGitLabのリポジトリにあるファイルのことです。このファイルには、あなたのパッケージをユーザーが合法的に使う(あるいは使わない)方法が書かれています。
ライセンスが重要な理由#
ライセンスファイルは、メンテナであるあなたとユーザの両方を保護するため、すべてのオープンソースプロジェクトにとって重要です。 ライセンスファイルは、あなたのユーザとコミュニティの理解を助けます:
ソフトウェアの利用方法
ソフトウェアの再利用や他の目的への転用が可能かどうか
プロジェクトに貢献する方法
などなど。
科学的なPythonオープンソースパッケージのメンテナであるあなたとユーザの両方を保護するために、ライセンスファイルが重要である理由についてもっと読む
ライセンスの保管場所#
LICENSE ファイルは GitHub / GitLab リポジトリのルートに保存してください。
特定の理由からライセンスファイルの言葉をカスタマイズするメンテナもいます。 しかし、これから始めるのであれば、寛容なライセンスを選択し、GitHubや choosealicense.com のウェブサイトで提供されている法的な言語テンプレートを使うことをお勧めします。
ライセンスには法的拘束力があるため、法律顧問の指導がない限り、独自のライセンスを作成しようとするのは避けるべきです。
可能な限りオープンパーミッシブライセンスを使用する#
一般的には、Open Software Initiative (OSI) 承認済みのパーミッシブなライセンスを使用することをお勧めします。pyOpenSci に査読のためにパッケージを提出する場合は、OSI 承認済みのライセンスが必要です。
コピーレフトのライセンス
ライセンスのもう一つの大きなカテゴリーは、 "コピーレフト" ライセンスです 。コピーレフトのライセンスは、あなたの作品を利用する人々に、それを改変、複製、共有、再配布するのと同じ (あるいはそれ以上の) 権利を与えて再配布することを要求します。 言い換えれば、コピーレフトのライセンスは、誰かがあなたの作品を取り上げ、プロプライエタリなバージョンを作り、他の人が同じことができるようにソースコードを提供せずに再配布することを禁止しているのです。コピーレフトのライセンスは、より多くの自由ソフトウェアが作成されるように設計されているという点で、 "粘着性" があります。
コピーレフトとパーミッシブライセンスの違いは、フリーでオープンなソースソフトウェアにおける重要な文化的分裂です (例えば [1], [2], [3])。 ライセンスを選択する際には、この違いを理解することが重要である。 コピーレフトのライセンスは、 "フリーでオープンなソースソフトウェア" の "フリー" の部分を表している。 フリーでオープンなソースソフトウェアは、本質的に政治的なものであり、ライセンスの互換性という現実的な問題 (後述) と同様に、コンピューティングにおけるパワーダイナミクスを意識することが重要です。
ライセンスの選び方#
ライセンスを選択するには、GitHubの Choose a License tool を使うことをお勧めします。
GitHub リポジトリの新規作成時にライセンスを選択すると、自動的にライセンスファイルのテキストコピーを取得してリポジトリに追加することもできます。 しかし、オンラインプロセスでは希望のライセンスが取得できないこともあります。
SciPyパッケージからのライセンス勧告
SciPy のドキュメントには、ライセンスに関する優れた概要があります。 これらのドキュメントが推奨する重要な要素の一つは、選択したライセンスが科学 Python エコシステムの多くの部分で使用されているライセンスと互換性があることを確認することです。以下は、SciPy が使用している修正 BSD ライセンスと互換性のあるライセンスを概説したこのテキストの抜粋です。
SciPyが使用している修正BSDライセンスと互換性のある他のライセンスは、2-clause BSD、MIT、PSFです。 互換性のないライセンスは、GPL、Apache、および帰属表示/引用を必要とする、または商用目的での使用を禁止するカスタムライセンスです。
もしあなたのコードが、科学的エコシステムの他の主要なパッケージで使われることを第一の目的としているのであれば、BSDかMITのどちらかのライセンスを使うことを検討することも推奨します。 よくわからない場合、MITライセンスはよりシンプルで理解しやすい選択肢となる傾向があります。
重要:選択したライセンスのガイドラインに忠実に従うこと#
どのライセンスも、あなたがパッケージの中でどのようなコードを使うことができるか、また、他の人があなたのパッケージの中のコードをどのように使うことができるか(あるいは使うことができないか)という点で、異なるガイドラインを持っています。
他のツールやオンラインソースからコードを借用する場合は、使用するコードのライセンスが、あなたがパッケージに選択したライセンスにも準拠していることを確認してください。
ライセンスの互換性について考えるのに便利なのは、 "inbound" と "outbound" の互換性という区別です。 "Inbound" ライセンスとは、あなたがパッケージに含める予定のソフトウェアをカバーするライセンスです。あなたのパッケージは "outbound" ライセンスで保護されています。
BSDやMITのような Permissive licenses は、 outbound の制限がほとんどありません - 専有化も含めて、ダウンストリームのカスタマーがどのようにでも使用することができます。 そのため、多くの企業や、企業に採用されたいと考えている大規模なパッケージに支持されています。パーミッシブライセンスには、より多くの inbound 制限があります - コピーレフトライセンスのように、自分たち以上に自由を守る必要のあるソフトウェアを使うことができないのです。MITでライセンスされたパッケージは、GPL-3でライセンスされたパッケージを含めたり改変したりする場合、特別な注意を払う必要があります。
GPL-3のような Copyleft licenses は、より outbound の制限があります - それらは、それらを含み、使用し、変更し、複製するパッケージにより多くを要求します。 これがコピーレフトライセンスの目的であり、派生作品がフリーでオープンソースのままであることを保証するためです。 inbound の制約が少ないです - GPL-3でライセンスされたパッケージは、他の寛容にライセンスされたパッケージや、コピーレフトでライセンスされたパッケージのほとんどを含めることができます。
互換性 |
依存 |
あなたのパッケージ |
下流パッケージ |
|---|---|---|---|
許可制 |
許可制 |
||
コピーレフト |
許可制 |
||
許可制 |
許可制 |
||
許可制 |
コピーレフト |
||
許可制 |
コピーレフト |
||
コピーレフト |
コピーレフト |
||
コピーレフト |
許可制 |
||
コピーレフト |
コピーレフト |
ライセンスがコードの再利用を決定する例
StackOverflowを例に、ライセンスによってコードの使用可否がどのように決まるかを明らかにしましょう。
Stack OverflowはCreative Commons Share Alikeライセンスを使用しています。 Sharealikeライセンスでは、Stack Overflowのコードを再利用する際に、同じSharealikeライセンスを使用することが義務付けられています。
つまり、法的な観点からは、Stack Overflowのウェブサイトからコードをコピーし、MITライセンスなど異なるライセンスのパッケージで使用すると、Stack Overflowのライセンス要件に違反することになります! これはGPLライセンスのパッケージでは当てはまりません。 GPL-3 パッケージは CC-BY-SA [4] によってライセンスされたコードを含むことができます。
🚨 慎重に進め! 🚨
ソフトウェアの引用についてはどうだろうか?#
多くのパーミッシブなライセンスは引用を必要としませんが、論文やブログ、その他の出版物で使用するすべてのソフトウェアを引用することを強くお勧めします。citation.cff ファイル を使うことで、パッケージの引用方法をユーザーに伝えることができます。
Tip
ソフトウェアの引用に関する追加リソース The Turing Way には、このトピックに関する優れたガイドがあります。
CITATION.cff files — 引用ファイルの作成と管理に関する詳細なガイド
ソフトウェア引用経路 — ソフトウェア引用が実際にどのように機能するかの概要
Citation.cff ファイル: ソフトウェアを引用可能にする#
「CITATION.cff」ファイルは、ソフトウェア パッケージの引用情報を提供する機械可読ファイルです。 「cff」は「Citation File Format」の略で、ソフトウェア引用メタデータの標準化された形式です。
リポジトリに追加する cycling.cff ファイル#
CITATION.cff ファイルをリポジトリに追加すると、GitHub はそれを自動的に検出し、[このリポジトリを引用] ボタンを表示します。これにより、ユーザーがソフトウェアを適切に引用することが容易になります。このファイルには、ツールやサービスが自動的に読み取って使用できる標準化された引用情報が含まれています。 GitHub は、ユーザー向けに APA と BibTeX の両方の引用形式を生成します。
citation.cff ファイル内での日付の追跡方法#
引用ファイルは、ソフトウェアの重要な日付を追跡します。 「date-release」フィールドには、現在のバージョンがいつリリースされたかが表示されます。 「公開日」フィールドには、ソフトウェアが最初に利用可能になった時期が表示されます。特定のバージョン番号を含む「version」フィールドも含めます。
人々があなたのソフトウェアの正しいバージョンを引用できるように、新しいリリースごとにこれらの日付を更新する必要があります。
Zenodo との統合#
Citation.cff ファイルは、研究ソフトウェアを保存して DOI を取得するための人気のある場所である Zenodo とうまく連携します。 Zenodo リリースを作成すると、引用ファイルから情報が自動的に取得されます。これにより、GitHub と Zenodo の間で引用情報が同じに保たれます。 Zenodo DOI を引用ファイルに含めることもできます。新しい GitHub リリースを作成するたびに、引用情報が更新された新しい Zenodo バージョンを作成できます。
「CITATION.cff」ファイルがどのようなものであるかを示す基本的な例を次に示します。
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Your Last Name"
given-names: "Your First Name"
orcid: "https://orcid.org/0000-0000-0000-0000"
title: "Your Package Name"
version: 1.0.0
doi: "10.5281/zenodo.1234"
date-released: 2025-07-12
url: "https://github.com/yourusername/your-package"