ソースコードのライセンスの書き方

ライセンス絡みの調べ物をしたので、個人的に認識したライセンスの扱いを記載します。

ライセンスの書き方

記載例を以下に示します。

Process.js/*!
 * Process.js v13
 *
 * Copyright (c) 2018 toshi
 *
 * Released under the MIT license.
 * see https://opensource.org/licenses/MIT
 *
 * The inherits function is:
 * ISC license | https://github.com/isaacs/inherits/blob/master/LICENSE
 */
...(ソースコード本体)

※補足:Process.jsは、ソースコード全体は、MIT Licenseです。ただし、inherits関数のみISC Licenseです。ひとつのファイル内に複数のライセンスが適用されています。
k08045kk/WSHLibrary


onLazy.min.js/*! onLazy.js v1.7 | MIT License | github.com/k08045kk/onLazy.js/blob/master/LICENSE */
...(ソースコード本体)

※補足:1行の短縮表記です。プロジェクト名、バージョン、ライセンス、著作権表示とライセンス全文のURLを記載しています。URLは、プロジェクトへのリンクも兼ねています。
k08045kk/onLazy.js: Lazy event listener.

記載場所について

ライセンス記述は、ファイル先頭に記載します。ファイル先頭にあることは、必須ではありません。クラス前や関数前に記載する事も考えられます。また、プロジェクトのルートディレクトリにLICENSEファイルとして配置することも考えられます。

ただし、コードを流用する立場にたつと。ライセンスの文言は、ルートディレクトリのLICENSEファイルだけでなく、ファイル毎にも記載されている方が、1ファイルのみ流用した際のライセンス記載漏れを防げるため、有用です。

コメント記載について

コメントの先頭は/*!で始めます。この記述であれば、コード圧縮系の処理を施してもコメントブロックがそのままの形で残る可能性があります。確実に残るわけではありません。//, /*, /**等のコメントよりもライセンス表示が残る可能性が上がるため、ライセンス表示は/*!で初めて置いたほうが無難でしょう。また、コメント体型が異なる場合、体型に合わせたコメントで記載するとよいでしょう。

著作権表示について

次のような記述です。

© 2018 toshi
Copyright © 2018-2020 toshi All Rights Reserved.
Copyright © [発行年]-[最新発行年] [著作権者] All Rights Reserved.

ただし、記述の大半は省略可能です。「著作権マーク」「発行年」「著作権者名(氏名・会社名)」があれば十分です。また、著作権マークと発行年、著作権者の順序は特に決まっていません。ですが、習慣的に「©」を最初に書きます。

万国著作権条約の著作権マークは、「©」のみが有効です。「Copyright」「(c)」「(C)」は、万国著作権条約で保護されません。ただし、現在はベルヌ条約により無方式主義に移行しています。著作物は、創作された時点で著作権表示しなくても著作権を認められます。そのため、「(c)」と記載しても特段問題はありません。

※ブエノスアイレス条約の権利留保の記述は、「All Rights Reserved」
 ブエノスアイレス条約のすべての加盟国は、ベルヌ条約にも加盟している
※万国著作権条約の権利留保の記述は、「©」
※ベルヌ条約は、無方式主義

全文記載について

MIT licenseの全文記載について、MIT licenseに置いて著作権表示と許可通知は、ライセンスの有効なソフトウェアのすべてのコピーまたは実質的な部分に含まれる必要があります。

そのため、全文を組み込む必要があるわけですが、実際は全文がソースコードに記載されていることは稀です。なぜかといえば、URLによる間接的な全体表記が一般的に認められているからです。そのため、全文記載そのものは、外部に任せてソースコードには、全文への参照を記載しています。

ライセンスファイルがない場合の記載例

/*!
 * [プロジェクト名]
 *
 * Copyright (c) [発行年] [著作権者]
 *
 * This software is released under the [ライセンス名].
 * see [ライセンス文書のURL]
 */

※[ライセンス文書のURL]の例
 https://opensource.org/licenses/MIT
 http://opensource.org/licenses/mit-license.php

ライセンスファイルがある場合の記載例

/*! [プロジェクト名] | [ライセンス名] | [ライセンスファイルのURL] */

※補足:ライセンスファイル側に記載があるため、著作権表示を省略しています

ソースコードの一部流用

ソースコード単位ではなく、関数やクラスなど一部のみを流用する場合、「The 関数名 function is: ライセンス表示」などとして記載することができます。

関数を流用した際のライセンス記載場所として、関数の直前に記載することも考えられます。ですが、ファイル先頭に記載した方がコードを流用する立場に立った時、有用です。

※ライセンスだけでなく、流用元URLなども記載しておくと、あとで苦労しないですみます

備考

MDNのサンプルコード

Web関連の資料を調べる際、MDNはわかりやすいドキュメントです。MDNのpolyfillは、とても参考になります。MDNのpolyfillコードを流用する場合のライセンスについて調べた結果を以下に示します。

2010年8月20日以降に追加されたコードサンプルはパブリックドメイン (CC0) にあります。ライセンス通知は必要ありませんが、必要な場合は、"すべての著作権はパブリックドメインに帰属します。http://creativecommons.org/publicdomain/zero/1.0/" を使用できます。

2010年8月20日より前にこの wiki に追加されたコードサンプルは MIT ライセンスの下で利用可能です。次の帰属情報を MIT テンプレートに挿入する必要があります。"©<Wikiページの最終改訂日> <Wikiに掲載した人の名前>"

"MDN Web Docs について - MDN プロジェクト" (最終閲覧日: 2020年02月08日)

上記の結果から、2010年8月20日を基準日として、ライセンスが変更されているようです。MDNの履歴で調べると2010年8月20日以前から存在する記事は稀です。そのため、ほとんどのpolyfillコードはパブリックドメイン(著作権表示不要)で使用できます。ただし、すべてではないため、一応確認しておく必要があります。

※参照元URLだけでもコメントで記載しておくと、あとで苦労しないですみます

参考