2018-05-10T00:00:07Z

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

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

ライセンスの書き方

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

/*!
 * Process.js v2
 *
 * Copyright (c) 2018 toshi
 * Released under the MIT license.
 * see https://opensource.org/licenses/MIT
 *
 * The inherits() function is:
 * Copyright (c) Isaac Z. Schlueter
 * Released under the ISC license.
 * see https://opensource.org/licenses/ISC
 */
..

記載場所について

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

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

コメント記載について

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

全文記載について

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

そのため、ソースコードに必須で組み込む必要があるわけではなく、ソースコードから見える位置にMIT licenseの全文記載があれば良いと筆者は、解釈しました。そのため、see https://opensource.org/licenses/MITとして、全文記載そのものは、外部に任せてソースコードには、参照を記載しています。

オープンソースの流用について

1ファイルを流用する場合、オープンソース関連のソースであれば大抵の場合、ファイル内にライセンスの記載があるため、ファイルをプロジェクトに組み込むだけでライセンス記載を意識する必要は特にないでしょう。ただし、ファイル内にライセンス文言が記載されていることは確認しましょう。

関数など一部のみを流用する場合、The 関数名 function is:などとしてファイル先頭にファイルのライセンス記載と合わせて記載しましょう。

使用ライブラリの公表について

MIT licenseに関しては、ソースコードを使用したソフトウェアの使用者に対して著作権表示を行うのではなく、ソースコードの開発者に対して著作権表示を行うものと筆者は、解釈しました。そのため、ソースコードを外部に公開しないのであれば、外部(社外、ユーザなど)に「このライブラリを使っていると」公表しなくてよいと考えています。ソースコードを外部に公開する場合は、必然的にライブラリの使用を外部に公表することになります。

その他

ライセンス毎に記載が必要な文言やライセンス継承義務などが異なります。ライセンス毎に対応しましょう。

MDNのサンプルコード

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

2010年8月20日より前に追加されたサンプルコードは MIT ライセンスの元で利用可能です。

著作権表記には MIT テンプレートによる次の形式を使用してください。「© <Wikiページの最終更新日> <対象となる内容をWikiページに置いた人の氏名>」

2010年8月20日以降に追加されたサンプルコードは パブリックドメインに帰属します。ライセンスについて記述する必要はありませんが、必要であればこのように書くことができます。「すべての著作権はパブリックドメインに帰属するものとします。http://creativecommons.org/publicdomain/zero/1.0/」

過去に作成された内容の中には、上記に示したライセンス以外のライセンスに基づいて作成されたものもあります。それらについては、そのそれぞれのページの最下部に その他のライセンスによる旨の表示 がなされています。

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

参考

 コメントを書く