著作権をプログラムに限定して考えてみる。

結論も何もなく、今まで学んだ事の一部をつらつらと書いてみる。

作者が著作物を創造した瞬間、作者に著作権が発生する。

この時点では、著作物の使用は誰でも自由。利用することができるのは、著作権を持つ作者のみ。つまり、著作権とは「作品を利用する権利」。

そんな訳で、本を読んだり音楽を聴いたりする行為(使用)には権利は不要であるが、プログラムの実行(使用)に関しては、実行するにあたりインストール(HDDへの複製)やロード(メモリへの複製)*1、つまり「利用」が必要になる為、実行する場合は複製権(の一部)が必要になる?

その「著作権」は大きく、著作人格権と著作財産権に分けられる。

  • 著作人格権:日本法上では、放棄・譲渡できない。
    • 公表権
    • 氏名表示権
    • 同一性保持件
  • 著作財産権:放棄・譲渡可能。
    • 複製権:プログラムのコピーを作る権利
    • 公衆送信権・頒布権・譲渡権・貸与権:プログラムを配布する権利
    • 翻訳権・翻案権:翻訳物、翻案物などの二次著作物を創造する権利
    • 二次的著作物の利用に関する権利:二次的著作物を利用する権利

これらの権利は、創造の時点で作者がごっそり握っている。というわけで、著作物の使用は誰でも可能で、著作物の利用が作者に限られている。

そこで第三者に対してライセンスを発行する。

作者は、契約(民法)によって、第三者に著作財産権を譲渡したり、使用の制限する事ができる*2。ただ、前述の通り著作人格権は放棄・譲渡できないので「不行使宣言」をすることにより、第三者が安心して利用できるようになる。

  • 無条件で全ての著作財産権(一部または全部)の行使を認める。
    • 全ての著作財産権を好きに使っていいよ → NYSL
  • 条件付きで、著作財産権(一部または全部)の行使を認める。
    • 「無保証」であることの明記と著作権表示さえしてくれれば、頒布権を使っていいよ → 修正BSD
  • 使用の自由を制限する事と引き替えに、一部の著作財産権の行使を認める。
    • コンパイル(使用)しちゃだめ、その他色々(使用)しちゃだめ、その代り、一台だけに限りインストール(利用)して使っていいよ → 商用ライセンス

つまり、ライセンス契約は、第三者が使用・利用できる範囲を変える働きがある。という訳で、ライセンスは下記2項目の集合体と考える事ができる。

  • 三者に認める「利用」行為の内容(どの権利をどの範囲で認めるか)
    • 上記行為を認める代りに、従わなくてはならない条件(1)
    • 上記行為を認める代りに、従わなくてはならない条件(2) …

*1:プログラム等の実行時におけるRAMへの読み込みは著作権法上の複製には当たらないというのが日本における一般的な解釈。しかし、複製に当たるとするのがむしろ世界的には主流。ただ、適法な所有者によるそのような行為はプログラムの使用に必要な場合は許諾を要しないとする。参考:http://www.wincons.or.jp/view/vol23/page8.html

*2:「使用」の制限、というのがポイント。本来自由に使用できるはずの部分を制限する事と引き替えに、「利用」を認めることができたりする。「利用」に関しては制限するのではなく、認めなければ制限されっぱなしになる。はず。

具体的に色々なライセンスを考えてみる。

制限が緩いと思われる順に。あと、下記内容は日本語訳を読み取って、同時通訳のようにまとめただけです。うまく読み取れていない部分も多いと思う。内容の正確さはかなり低いと思ってください。

参考:http://opentechpress.jp/docs/licenses/

パブリックドメインを考えてみる。

パブリックドメインとは、作者が著作権を完全に「公衆(≒全ての人)」に譲渡し、放棄した状態。正確には「ライセンス」ではない。誰もが「自分の物と同じように使用できる状態」。

日本では、著作人格権を放棄できないので、日本法の上では「パブリックドメイン」という状態はあり得ない、というのが一般的な解釈。ただ、人格権を行使しないと宣言することによって、擬似的なパブリックドメイン状態を作り出すことはできると思う。

NYSLを見てみる。

  • 複製
    • なし(以下、無条件の場合は省略する)
  • 再配布
  • 改変
  • 改変物の頒布(有償・無償問わず)

日本において実現できない「パブリックドメイン」を擬似的に表現。実質的にPDと同じ。

MITライセンスを見てみる。

  • 使用
  • 複製
  • 再配布(販売可能)
  • 改変(結合)
  • 改変物の頒布(有償・無償問わず)
    • 著作権表示および本許諾表示を同梱(オリジナル部分に関してのライセンスとして)

修正BSDライセンスを見てみる。

  • 使用(use)
  • 再配布(redistribution)
    • 原著作者の著作権を表示する
    • 本条件書を含める
    • 保証の否認声明を含める
    • 派生物の宣伝目的で原著作者名を使用してはならない。

著作権は法律によって保証されるもの。よくあるライセンスは米国法に準拠しており、それを日本法で解釈しようとする時点で、微妙な判断を迫られる事が多い。

ここで「使用」を許可されているのだが、使用は日本法上では元から自由であるはず。これは、プログラムの使用にあたって必要となるインストール(=複製=利用)を許可しているのか、それとも米国法では使用も制限されているのか…。わからない。

っつーか、そもそも「再配布および使用」が認められているけど、二次著作物の創造は認められているのか?(一般的には、認められているとして扱われているので、認められているのであろう。) それが「使用」なのか? つまり「利用」の事なのか? 誤訳? というか日本人でさえ使用と利用の区別できてないもんねぇー。ひー。

という「単語の解釈」の問題に入り込んできます。どうなんだ、これ。

Apache Licence v2を見てみる。

  • 実行
  • 複製
  • 再頒布(販売可能)
    • 原著作者の著作権を表示する
    • 本条件書を含める
  • 改変
  • 改変物の頒布(修正物に自らの著作権表示を追加可能・全体のライセンスは勝手に定めてよい)
    • LICENSEファイルを提供する(オリジナル部分に関するライセンスとして)
    • 変更した事実を告示
    • LICENSEファイルの中身に「Copyright [yyyy] [著作権所有者の名前]」をつける

Common Public License v1を見てみる。

  • 実行
  • 複製
  • 再頒布(販売可能)
    • 原著作者の著作権を表示する
    • 保証の否認声明を含める
    • 本条件書を含める
  • 改変
  • 改変物の頒布(動的リンクは派生プログラム扱いしない)
    • 派生プログラムに対して同じライセンスを適用する
    • ソースコードを提供する

GPLv2を見てみる。

  • (実行)*1
  • 複製
  • 再頒布(販売可能)
    • 原著作者の著作権を表示する
    • 本条件書を含める
    • 保証の否認声明を含める
  • 改変
  • 改変物の頒布(有償・無償問わず)(静的・動的を問わずリンクは派生プログラム扱い)
    • 変更した事実と日時を告示
    • 派生プログラムに対して同じライセンスを適用する(GPLそのままの必要あり。条件追加は×)
    • ソースコードを提供する

他のライセンスも同様に見てみたいのだが、いかんせん長いw

*1:明示的に許可されていないけど、何らかの理由でOKなはず。

プログラム化が難しい

あーー、ちょっと無理っぽ感が漂ってきた。非常に悔しい。法律ってのは、なんでこう難しいんだ…。

意外に☆が集まったのは嬉しかったが、出来ないんじゃしょーがねーじゃん、俺。コミットしたら誰かヘルプ入れてくれますかw

追記

なんか、このプログラム化を考えているウチに、自分だけライセンスに明るくなってしまった。周囲の人にも同様に明るくなってもらえるように、プログラム化して還元できればな、と思っていたのに自己完結気味。俺、ずるーい(笑)

へっへーんだ。

煮るなり焼くなり好きにして下さい。つか、調理してください…。

というわけで、もー煮詰まったからCodeReposに投げちゃったよーだ(半分ヤケ)。

設計からして甘々なハズなので、直してください…。煮詰まったので、閃くか、動きがあるまで放置っぽいですよ。

http://svn.coderepos.org/share/lang/java/misc/license-simulator

ライセンスシミュレータ

というわけで、ちょっと考えてみた訳だが。現実をオブジェクト指向で落とし込もうとするとハマると聞いたことがあるが、やっぱしなかなか大変なモンですね。

とりあえず、Person(権利主体)、Product(著作物)、License(許諾内容)があればいけるのかな。あと、enum Actionで「活動」を示して…。

// 登場人物
Person author = new Person();
Person user = new Person();

// GPL著作物創造
Product program = author.create(Program.class);
program.setLicense(new GPLv2());

// そのままの形で再配布可能
user.action(Action.DISTRIBUTE, program);

// 派生物の作成
Product derivative = user.createDerivative(Program.class, program);
derivative.setLicense(new ApacheLicense());

// 派生物はApacheLicenseで配布できない(UngrantableExceptionが飛ぶ)
user.action(Action.DISTRIBUTE, derivative);

derivative.setLicense(new GPLv2());

// 派生物はGPLv2で配布できる(例外飛ばず)
user.action(Action.DISTRIBUTE, derivative);

んー? Product#setLicense(License l) よりも、Person#setLicenseTo(Product p, License l) のがいいのか? この辺り、自分のオブジェクト脳の甘いところ(笑)

あー、なんかオモシロイようなオモシロクナイような…。なんかプログラム化してるウチに、自分自身がライセンスを深く理解し出したからなのか。

CodeReposに投げてしまおうかとも思うが、こんなゴミ突っ込むのも気が引けるorz このエントリーに☆がいっぱいついたらCodeReposに突っ込ませてもらおうかなw

ライセンスのプログラム化

ライセンスってのは、ある意味法典・規約、すなわち code です。そしてプログラムも code。どちらも、あるinputに対して、曖昧な点なくoutputを得られる事を期待されるもの。

我々エンジニアは、後者のcodeを読み書きすることが出来る訳ですが、前者のcode、法律用語には疎く、理解に苦しむケースが多い。じゃあ、ライセンスを後者のcode化することはできないだろうか、なんて思ってみた。

このライセンスが適用されたあるソフトウェア(Object)に対して、こういった事は可能か?こうするとどうなる?という問い合わせをすると、結果を返してくれる。

まぁ、ライセンスは原文が法的効力を持つ物であって、例えば日本語訳しただけでも参考扱いにしかならない訳だが、「参考訳」と共に、そんな「参考プログラム」があっても良いんじゃないかな、と。また、法典codeはプログラムcodeよりも曖昧な点が多く、きちっとしたプログラムcodeに翻訳することは難しいかもしれない。

だけどまぁ、そんな時はひとまず「微妙Exception」を投げ返しても良いではないか。ハッキリしている約束事を確認でき、判断が難しい事柄は「判断が難しい」と知る事が出来るだけでも、有用ではないか。

そんなことをふと考えてみた。もし結果だけでなく、その結論に至った過程を知りたいのであれば、プログラムcodeを(参考までに)読んでみる。そうすれば、理屈を理解する助けにもなると思う。

さーて、出来るかな。挫折するかな(笑)

オープンソースWebサービス提供ビジネス

Webアプリは、Desktopアプリのように配布するケースと、自らがWebアプリを運用してサービスを提供するケースが考えられます。前者を「Webアプリ配布」、後者を「Webサービス提供」と表現することにします。

Windowsタイプ

さて、プロプライエタリなDesktopアプリは、「それ自体の使用権を販売する」というビジネスモデルで成り立って来ました。最近は「ユーザコミュニティを醸成し、有償サポートや書籍販売など」というビジネスモデルもメジャーになってきているかもしれませんが、未だ主たるビジネスは販売なんじゃないかな。

サイボウズOfficeタイプ

そして、プロプライエタリなWebアプリ配布。これもMicrosoft型と同じビジネスモデルが成立します。プロプライエタリな使用権販売ビジネスでは、DesktopもWebも差はありません。

Googleタイプ

次に、プロプライエタリWebサービス提供というのは、サービス自体を販売する、つまり「使用料を取る」というモデルがあり得ますが、成り立たせるのが容易ではない。というわけで主になっているのは「コミュニティを醸成し、ユーザのアテンションを広告主に売る」というモデル。

Linuxタイプ

そしてオープンなDesktopアプリは、「ユーザコミュニティを醸成し、有償サポートや書籍販売など」のビジネスモデルを中心に据えています。使用権販売はできませんので。

XOOPSタイプ

オープンなWebアプリ配布。これはLinuxタイプと同様のビジネスモデルで動くものです。

??タイプ

さて。今まで見た事がないのだがオープンなWebサービス提供というものを考えてみよう。実は、「今まで見た事がない」が故に、個人的に結構興味があるパターンです。オープンなWebサービス提供って、実はオモシロイんじゃね? なんて事を考えてます。

既にあったりして。てへっ。

まとめ

ソフトウェアに関するビジネスモデルは、大きく下記の4つがあると思います*1

  • 使用・利用権:そのプログラムを使用・利用する権利を販売するビジネスモデル。
  • サポート:有償サポートや関連書籍販売などのビジネスモデル。
  • アテンション:ユーザのアテンションを広告主に販売するビジネスモデル。

そこで、各々のタイプのビジネスモデル可能性を考えてみます。

使用・利用権 サポート アテンション
WindowsサイボウズOfficeタイプ
Googleタイプ
LinuxXOOPSタイプ ×
??タイプ ×
  • 凡例
    • ◎:主たるビジネスモデル
    • ○:売ってる場合もある
    • △:情勢的に困難 or ハイリスク
    • ×:不可能

……いつの間にか、ライセンス研究からビジネスモデル研究に視点がシフトしていることに気づいた。いや、「オープンなWebサービス提供」って、(見たこと)ねぇなぁ、と思って。うん。次から軌道修正する(笑)

*1:他にもあったらご指摘下さい