はじめてのBlenderアドオン開発 (Blender 2.7版)

Last Update: 2019.4.2

4-4. アドオンのライセンスを決める

4-3節 では、アドオンを公開する方法について説明しました。 しかし、本節で説明するライセンスについて理解していない状態でソースコードを公開すると、後々トラブルになることがあります。 オープンソースソフトウェアについてある程度知識のある方など、ライセンスについて十分に理解されているのであれば問題ありませんが、ライセンスについて知らない読者もいると思いますので、本節ではライセンスについて説明します。

ライセンスとは

突然ですが、ライセンスとは何でしょうか?

ライセンスは英語にするとlicenseですが、licenseの日本語訳は「免許」や「認可」です。 しかし、コンピュータ関係の話題でライセンスと聞くと、WindowsやPhotoshopなどの有料ソフトウェアを利用し、サポートを受けるために必要となる認証のことを思い浮かべる方が多いのではないでしょうか? ソフトウェアの利用に関するライセンスのことを指しているのであれば、もちろんこのような理解で正しいです。 しかし、本節で説明するライセンスは ソースコードの利用に関するライセンス であることに注意してください。

ソースコードのライセンスに関して説明する前に、ソースコードの著作権について説明します。 本や音楽などと同様、ソースコードにも著作権が存在します。 このため、たとえソースコード作成者本人が著作権を放棄していたとしても、そのことが明示されていなければ、ソースコードの中身を複製することで著作権を侵害したことになってしまいます。 また、他者が作成した利用規約が書かれていないソースコードを見て処理を流用するとき、作成者本人に流用できるか確認を取らなければなりません。 一方で、著作権を放棄してソースコードを自由に使ってもらおうと考えているソースコードの作成者も少なくありません。 この場合、ソースコード作成者はコードを書く度に、著作権を放棄することが明示された利用規約を作る必要があるため、手間がかかってしまいます。 そしてせっかく作った利用規約についても、抜け穴ばかりの意味のない規約となってしまった、という例もあります。

このようにソースコードに関わらず、著作権絡みの話は非常に面倒で、この面倒な問題を解決してくれるのが、ソースコードの利用に関するライセンスです。 既に多くのソースコードの利用に関する代表的なライセンスが世の中には存在し、ソースコード作成者はその中から自分に合ったライセンスを選択することになります。 代表的なライセンスを調べて内容を理解するのは面倒で、利用規約を作った方が早いのではないかと思う読者もいるかと思いますが、一度理解してしまえば利用規約を毎回作る必要がなくなるので、結果として代表的なライセンスを使う方が早くなります。 またソースコード作成者は、ソースコードに「本ソースコードには○○なライセンスが適用されている」などと一文を書くだけで済みます(ライセンスを適用するために他にも行うことがありますが、利用規約を自分で作ることに比べたら大変な作業ではありません)。 さらに有名なライセンスであれば、適用されているライセンスを見ただけでソースコードの利用規約を理解できる場合もありますし、作者が書いた曖昧な利用規約によって生じる誤解も起こりにくくなります。

ライセンスの種類

ソースコードの利用に関するライセンスで代表的なものとしては、例えば次のようなものがあります。 それぞれのライセンスについて概要をまとめていますが、ここで書いているのはあくまで概要であるため、実際にライセンスを適用する場合は各自でライセンスの内容をきちんと確認してください。

ライセンス 公開元 概要
GNU General Public License(GPL) Free Software Foundation 本ライセンスが適用されているプログラムやソースコードは、ソースコードを公開しなければなりません。
また、本ライセンスが適用されたソースコードは誰でも入手でき、改変や再配布も自由に行えます。
一方、GPLが適用されたプログラムやソースコードを利用した派生物は、たとえそれがソースコードの一部分であってもGPLを適用する必要があることに注意が必要です。このように、GPLは強い感染力を持つことから、GPL汚染と呼ばれることがあります。
GPLにはバージョンが3つあり、バージョンごとに制約が異なっているため(特に特許関係に関する制約に違いがあります)、GPL適用時には適用するバージョンも確認する必要があります。
MIT License マサチューセッツ工科大学 GPLと比べて制約が緩いライセンスです。X11 Licenseと呼ばれることもあります。
MIT Licenseが適用されたソースコードは、改変・再配布などを行う際に、著作権の表示とMIT License本文の記載、および無保証であることの記載という条件のみを要求します。ソースコードを非公開にしても良いですし、適用するライセンスを変えて再配布することもできます。
クリエイティブ・コモンズ・ライセンス(CC) クリエイティブ・コモンズ ここで紹介しているソースコードのライセンスとは異なり、全ての著作物に対して適用可能なライセンスです。画像や動画などのコンテンツに適用されることが多いため、Blenderを使ってCGを作成している方はこちらの方が馴染みがあるかもしれません。著作物を複製・頒布する際に、「著作者の表示」「非営利目的での利用に限定」「改変禁止」「ライセンスの継承」の4つの制約の中から選択して、ライセンスを適用することができます。
著作権を完全に放棄して(パブリックドメインとして)公開する場合は、CC0を適用します。
Apache License Apache Soft Foundation MIT Licenseよりもさらに緩いライセンスで、こちらはライセンスの本文さえ記載が不要です。本ライセンスが適用されたソースコードを改変・再配布する場合は、ソースコードの著作権の表示とApache Licenseが適用されていることを示す文章を入れるだけでよいです。また、再配布するときは適用するライセンスを変えることができ、ソースコードを非公開にすることもできます。
Berkeley Software Distribution License カルフォルニア大学 MIT Licenseとほぼ同様の制約を持つライセンスで、BSDライセンスと略して呼ばれることもあります。
BSDライセンスには、ライセンスの種類がいくつかありますが、ここでは修正BSDライセンスのことを指します。修正BSDライセンスが適用されたソースコードは、改変・再配布などを行う際に著作権の表示と無保証であることの記載のみを要求します。
なお、BSDライセンスの一種であるオリジナル版のBSDライセンスは、派生物に初期開発者を表示するという制約があるため、GPLと両立できません。

Blenderのライセンス

Blenderはオープンソースソフトウェアであるためソースコードが公開されていますが、ライセンスは何が適用されているのでしょうか?

Blenderに適用されているライセンスの詳細については、Blenderの公式ホームページ(https://www.blender.org/about/license/)で確認することができます。 Webサイトを見ると、Blenderのソースコードには、基本的に GPLv2 が適用されていると書かれています。 基本的にと書いたのは、一部のソースコードにはGPLv2以外のライセンスが適用されているからです。 例えば、Cyclesには Apache 2.0 ライセンスが適用されているほか、Blenderのビルドに必要なライブラリには MIT ライセンスや BSD ライセンスなどが適用されています。 このように、Blender全体としてみるとさまざまなライセンスが適用されていますが、アドオンを開発するだけであれば、BlenderにはGPLv2のライセンスが適用されていると覚えておけば問題ありません。

アドオンのライセンス

BlenderのライセンスにはGPLv2が適用されていることを説明しましたが、Blender上で動作するアドオンのソースコードのライセンスには何を適用すればよいのでしょうか? その答えは、先ほど紹介したBlenderの公式ホームページから確認できます。 Blenderを構成するすべてのコンポーネントは GPLv3互換 でなければならないと書いてあるため、Blenderを構成するアドオンもGPLv3互換のライセンスを適用する必要があります。 ここで、アドオンに適用する必要のあるライセンスがGPLv3ではなく、GPLv3 互換 であることに注意してください。 これは、必ずしもアドオンに対してGPLv3を適用する必要があるといっているのではありません。 ただし、アドオンを利用している間は、Blender上で動作することになるため、自動的にGPLが適用されます。 このため、GPLv3互換ではないライセンスが設定されているアドオンはライセンス違反となり、使用することができません。 例えば、ライセンスが明記されていないアドオンはGPLv3互換ではないため、アドオンを使用した時点でライセンス違反になってしまいます。 このことから、アドオンには必ずGPLv3互換のライセンスを適用するようにしましょう。 GPLと互換である(両立する)ライセンスは、Webページ(http://www.gnu.org/licenses/license-list.html)から確認することができますので、アドオンに適用しようと考えているライセンスが、GPL互換であるか否かを必ず確認してください。

さて、ライセンスについてここで初めて知ったという方は、どのライセンスを選んだらよいか迷っていると思います。 基本的にGPLv3互換であれば何でもよいのですが、公開されているアドオンのライセンスを見ると GPLやMITライセンスが適用されているものが多い ようです。 Blender公式のリポジトリに登録されたアドオン(サポートレベルがOfficialまたはContribのアドオン)は、Blenderと一緒にオープンソースとして公開されることからGPLの適用が必須です。 一方、公式のリポジトリに登録されていない個人で開発されたアドオン(サポートレベルがExternalのアドオン)は、GPLv3互換であるMITライセンスが適用されていることが多いようです。

MITライセンスを適用しているアドオンが多いのは、GPLの特徴の1つである GPLライセンスが適用されている制作物を一部でも利用して制作したものは、GPLライセンスで配布しなければならない(コピーレフト) という制約があるためです。 これは、アドオンを作成するときにGPLが適用されているソースコードの一部を流用した場合、作成したアドオンをGPLライセンスで配布する必要があるという、非常に強力な制約です。 一方でMITライセンスは、ライセンスで示された条件さえ守っていれば、再配布物のライセンスを変えても、ソースコードを非公開にしても良い ので、GPLに比べて非常に緩いライセンスと言えます。 サポートレベルがExternalのアドオンで、MITライセンスを適用する人が多いのはこのためだと考えられます。

アドオンに適用するライセンスが決まっていなかったり、ライセンスを後から変更することを検討しているのであれば、とりあえずMITライセンスを選んでおけばよいと思います。 少なくとも、ライセンスを設定しないことだけは絶対に避けてください

ライセンスを明示する方法

適用するライセンスを決めたあとは、適用しているライセンスを明示します。 ソースコードに適用しているライセンスを明示する方法は複数ありますが、ここでは比較的よく見かけるライセンスの明示方法について紹介します。

ソースコードにライセンス本文を記載する

ライセンスを明示する方法として最初に紹介するのは、ライセンスを適用したいソースコードの先頭などの目立つ場所に、適用するライセンスの本文を記載する方法です。 この方法では、次に示す例のようにソースコードの先頭にコメントとしてライセンス本文を記載します。

#
# 本ソースコードは○○のライセンスが適用されています
# 著作者:ぬっち
#

import bpy
...

上記の例は、あくまでイメージを持ってもらいたいために示した疑似コードですので、ライセンスごとに記載すべき文章が異なります。 作成したソースコードにライセンスの本文を記載する場合は、各自で調べて記載するようにしてください。

LICENSEファイルにライセンス本文を記載する

ソースコードにライセンス本文を記載し、ライセンスを明示する方法を紹介しました。 しかしこの方法では、ソースコードのファイル数が多くなってくると、ライセンスを記載することが面倒になってきます。 もしかしたら、ライセンスを記載し忘れてしまうかもしれません。 このような場合は、ソースコードが置かれたトップディレクトリに LICENSE ファイルを作成し、ライセンスの本文を LICENSE ファイルに記載する方法で、適用するライセンスを明示するとよいでしょう。

しかしこの方法では、ソースコードごとに異なるライセンス(マルチライセンス)を適用する場合、適用したライセンスとソースコードの対応関係がわからず、困ることがあるかもしれません。 この場合は、適用するライセンス全てを LICENSE ファイルに記載します。 なお、ライセンスをどのソースコードに対して適用したのか、わかるようにする必要があります。

READMEファイルにライセンス本文を記載する

ここまでで紹介した2つの例に比べるとあまりおすすめできない方法ですが、利用規約やソースコードの概要などが書かれた、README系のファイルにライセンスを明示することもできます。 README ファイルにライセンスを記載するのは、フリーソフトなどでよく見かける形式ですが、ソースコードの場合はあまり主流ではありません。 このため、README ファイルに記載するのは、あくまでアドオンの説明や適用しているライセンス名に留め、ライセンス本文は LICENSE ファイルに記載するのがよいと思います。

本書のライセンス

ライセンス適用の例として、本書に適用されているライセンスについて説明します。 はじめに を読むとわかる通り、本書のライセンスはマルチライセンスを採用しています。

本書で紹介しているサンプルのソースコードには、CC0 が適用されています。 CC0はいわゆるパブリックドメインと呼ばれるもので、本書で紹介しているサンプルのソースコードに関しては、著作権を放棄しているということを示しています。 CC0が適用されていることによって、著作者を明示することなく本書のサンプルを改変・流用したり、他のライセンスをつけて再利用することもできます。 またCC0はGPLv3互換であるため、Blenderのライセンスにも違反していません。 なぜCC0なのか、という質問をもらうことがときどきありますが、本書で紹介するアドオンのソースコードを積極的に他の人に改変・流用してもらうことで、アドオン開発に役立ててもらいたいという意図があるためです。

一方、本書の本文については CC BY が適用されています。 CC BYは著作権を明示する必要がありますが、複製や頒布などを自由に行うことができます。 さまざまな方に本書に書かれた内容を知ってもらいたいという願いを込めて複製や再頒布は自由にした一方、本書の本文の執筆者は明示してほしいという思いを込めてCC BYを適用しました。

まとめ

本節では、ソースコードの利用に関するライセンスについて説明しました。 そして、Blenderのアドオンを公開する際にソースコードにライセンスを適用する必要がある理由と、ライセンスの適用の仕方を説明しました。 アドオンの開発とは少し離れた話題ですが、Blenderのアドオンを配布することがソースコードを直接配布することと同じである以上、アドオン開発者はライセンスについて理解しておく必要があります。

Web上に公開されているアドオンのソースコードを見ていると、いずれのライセンスも適用されていないものが数多くあります。 実際に筆者自身も、ライセンスが適用されていないアドオンへの対応で困ったことがあったので、ライセンスで苦労した例を1つ紹介します。

筆者が立てたBlender Artists Communityのスレッドで、ライセンスが適用されていないアドオンのバグを修正してほしいという依頼が投稿されました。 しかし、修正すべきソースコードを確認してみると、ライセンスがどこにも明示されていませんでした。 ソースコードの作者が外国の方で、英語でライセンスについてやりとりする必要があることも大変ではあります。 しかしそれ以上に問題であったのは、ソースコードの作成日付が5年以上前で、きちんとアドオンの作者と連絡が取れることが、保証できないことでした。 運よくこの時は、作者がGitHubを使っていたことで無事に連絡が取れましたが、もし仮に連絡が取れなかった場合はアドオンを修正することができなくなってしまいます。 実際、連絡が取れない場合も何度かあり、せっかく有用なアドオンのバグを修正しようと思っても、ライセンス絡みで断念したことがあります。

このように、アドオンにライセンスが適用されていないと せっかく素晴らしいアドオンを作成しても、作者以外はアドオンを修正することができなくなってしまいます。 筆者自身、アドオンを公開する時にライセンスを適用し忘れてしまうことがよくあるので、ここであまり言える立場ではないのかもしれません。 しかしそれでも、公開後の面倒な対応を避けるため、アドオンを公開する前にソースコードにライセンスを適用し忘れていないか、確認するようにしましょう。 本節では、最低でもこのことだけを覚えておいてもらえれば十分です。

ポイント