【Python】制作物を商用利用・配布する場合のライセンスの取り扱い

時計 2020.09.30 / 時計

【Python】制作物を商用利用・配布する場合のライセンスの取り扱い

Pythonで作成したアプリケーションをWebサイトなど通して不特定多数に販売(商用利用)や無料で配布する場合、必ず気を付けないといけないことがあります。

それはライセンスの取り扱いです。

これを間違えると、大変な事態が発生することもあります。
例えば賠償金問題などです。

本当にこのライセンスの取り扱いって難しいんですよね。
それでも調べたPythonのライセンスについてまとめてみたので、ぜひ興味がある方は読んでください。

私は法律のスペシャリストではないので、ここで記載していることがすべて正しいというわけではないです。

会社員で、会社として商用で販売を考えているという方は、Webサイトの情報だけを信用するのではなく、きちんと専門家に相談してから行動することをお勧めします。

ライセンスはそもそも何に付いている?

まずライセンスで考えるべき個所としては、そもそも何に対してのライセンスを考えなければならないのか、という点です。

答えを言うと、
Pythonその物のライセンスと、インポートしているサードパーティーのパッケージです。

Pythonその物というのは、Python 3.8.6などPython自身のことです。

サードパーティーのパッケージとは、プログラムの先頭でimportコマンドによりインポートしている標準ライブラリ以外のパッケージです。
もっとわかりやすく言うと、pipコマンドでインストールしたパッケージです。

pipコマンドでインストールしたパッケージは、第三者が作成してくれたものであり、もちろんそれらにはライセンスがあります。いわゆる著作権ですよね。

使用するパッケージにより使われているライセンスが異なるので、一つ一つ確認する必要があります。
この確認方法は後述いたします。

Python自身のライセンス

それでは確認するべきライセンスの一つ目である、Python自身のライセンスについて説明します。

PSFライセンス

PythonはPSF(Python Software Foundation)Licenseというライセンスが適応されます。
詳しくは以下リンクをご覧ください。

Python Hisory and License

上記サイトのライセンス項目には以下のような記述があります。

All Python releases are Open Source (see https://opensource.org/ for the Open Source Definition).
Historically, most, but not all, Python releases have also been GPL-compatible;

要するにPythonはオープンソースであり、GPLに互換性があるということです。

GPL(GNU General Public License)には以下の特徴があります。

GPLライセンスの特徴

著作権表示を保持しなければならない

無保証である

誰でも自由に複製・改変・頒布が可能

GPLライセンスのプログラムを使用した場合、制作物はGPLライセンスで配布する(コピーレフト)

ではGPLだからすべてのソースコードを開示しなくてはならないのかというと、そういうわけではないのです。

GPL-compatible doesn’t mean that we’re distributing Python under the GPL.
All Python licenses, unlike the GPL, let you distribute a modified version without making your changes open source.
The GPL-compatible licenses make it possible to combine Python with other software
that is released under the GPL;the others don’t.

これは、「GPLに互換性があるというのはGPLの下でPythonを配布しているということではない。すべてのPythonライセンスはあなたの変更をオープンソースにすることなく、変更した物を配布することができる」と記載されています。

すなわちコピーレフトではない、ということだと判断できます。

また以下の記載もあります。

Starting with Python 3.8.6, examples, recipes, and other code in the documentation
are dual licensed under the PSF License Agreement and the Zero-Clause BSD license.

これは、「Python 3.8.6からはPSFライセンスと0条項BSDライセンスの下でデュアルライセンスとなる」と記載されています。

これはよく言われる、「BSD LicenseスタイルでGPL互換のライセンス」の所以なのだと思います。

Zero-Clause BSD licenseについては以下のように記載があります。

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

<これには、「商用・非商用にかかわらず使用・複製・変更・配布を許可すること」、「無保証であること」について記載されています。

解説が非常に長くなりましたが、ここまでをまとめるとPython自身のライセンスであるPSFライセンスは、以下の特徴があると言えます。

PSFライセンスの特徴

商用利用は可能

変更・複製・配布は可能

別のライセンスの物を組み込みは可能

ライセンス・著作権の表示は必須

ライセンスの記述

PSFライセンスのライセンス表示に関してですが、制作アプリのフォルダ内にReadmeや、LICENSEテキストなどを作成して、そこに記述するのが一般的です。

また念のため私はソースコードすべてにもライセンスを明示しています。

PSFライセンスの場合は、以下を記載する必要があります。

Copyright © 2001-2020 Python Software Foundation; All Rights Reserved

インストールしたパッケージのライセンス

前述しておりますが、pipコマンドでインストールしたパッケージにはライセンスがあります。

そのためプログラム上でimportして使用しているパッケージすべてのライセンスを確認する必要があります。

パッケージに使用されているライセンスは複数あり、GPLやLGPL、MITなど様々です。

パッケージライセンスの確認

pipでインストールしたパッケージのライセンス情報を一覧で表示する便利なコマンドがあります。

pip-licenses

このコマンドを実行すると、インストールされているパッケージと、そのライセンス情報が一覧で表示されます。

またオプションを付けることで付加情報を確認することができます。

pip-licenses -–with-urls –-with-description

上記コマンドで公式サイトのURLと、詳細な説明を表示することができます。

まとめ

Pythonで制作したアプリケーションを商用・配布などする場合に気を付けるべきは、サードパーティーのパッケージのライセンスです。

インストールして使用しているパッケージが何のライセンスを使っているかで、ソースコードをオープンにしなければいけないのか、商用で使っていいのかが変わってきます。

そのためPythonのPSFライセンスは気にせず、インストールしたパッケージのライセンスにのみ気を使えばいいと考えます。