2010年 1月

 GPL解説vol.7―GPLソフトウェアと作成者の特許権― / マルパチ 

今回からGPL(=General Public License)v3第11条の解説に入りたいと思います。

一昨日の記事で解説したように著作権と特許権は別個の権利です。ですからライセンスも著作権と特許権について別々の許諾をする必要があります。
GPLそれ自体は著作権についてのライセンスです。ですから特許を含むGPLライセンスソフトウェアを利用・改変・再配布してよいのかが問題になりうるのです。

そこでGPLv3はGPLライセンスソフトウェアに含まれている特許についての許諾条項を設けています。それがGPLv3第11条(特許)なのです。
GPLv3第11条3パラグラフは、GPLライセンスソフトウェアの著作権者が有する特許であって、GPLライセンスソフトウェアの利用・改変・再配布により侵害される特許につき、特許の製造・利用・販売・販売申込・インポート(実行・改変プロパゲート)を、非独占的かつ無償にて許諾するとしています。
(ここで「GPLv3第11条3パラグラフを勝手にかみ砕くな!」とツッコミが入りそうですが、大体こんな意味である、ということでご容赦ください。本稿の目的はGPLをわかりやすく解説することにあるので。実際のGPLv3第11条はもっと複雑です。)

ただしここでもう一つの問題が発生します。
GPLv3第11条3パラグラフの許諾する特許が、GPLライセンスソフトウェアの著作権者が有する特許に限られているということです。ちなみになぜ著作権者の有する特許しか許諾しないのかというと、他人の特許を勝手に許諾することが不可能だからです。許諾しないと言うより許諾できないのです。特許権も著作権と同じように支配権であるというわけです。
話が脱線しましたが、とにもかくにもGPLはGPLライセンスソフトウェアに含まれる全ての特許について許諾しているわけではありません。
すると結局、特許権者から警告書が届く恐怖におびえなければならないのではないか?という疑問が生じるかと思われます。

GPLはその恐怖を少しなりとも和らげるための規定を設けています。GPLv3第11条5パラグラフがそれです。
GPLv3第11条5パラグラフによると、ソースコードが他人の特許許諾に依拠するものであることを知りながら再配布する者は、以下の3つの措置のうちのいずれかを講じなければなりません。
すなわち、①ソースコードを公に利用できるネットワークサーバー等を通じて、GPLの規定に基づいて、無償で、誰でもコピーできるようにする、②自らに当該特許ライセンスの利益を与えないようにする、③GPLの条件に適合する方法で特許ライセンスを下流の受領者にまで拡張すること、のいずれかです。

この規定により、あなたが特許の存在に気づかないという危険はグッと減少します。上記①ないし③のいずれかの措置が施されたGPLライセンスソフトウェアなら特許権の存在に嫌でも気づきますからね。理論的には上流の(元の)著作権者が特許権侵害の事実に気がついていないため①ないし③の措置を施していないという危険もあり得るのですが、実際にはちゃんと特許権の存在について認知している場合がほとんどでしょう。ある程度の大きさの企業・団体なら特許権の調査をやりますから。

今回はこの辺で。それでは!
2010/01/30(Sat) 20:21:00

 ソフトウェア特許解説vol.1―特許権と著作権の違い― / マルパチ 

今回はGPL(=General Public License)バージョン3にて新たに追加された条項であるGPLv3第11条(特許)について解説していきたい…と思ったんですがその前に「ソフトウェア特許」について基本的な解説をしたいと思います。

なぜ、GPLは著作権に関するライセンスなのに、特許権に関する条項が必要になるのでしょう。
その理由を知るためには著作権と特許権の違いについて軽く触れなければなりません。

Wikipediaの定義によると著作権とは「著作権(ちょさくけん)とは、言語、音楽、絵画、建築、図形、映画、写真、コンピュータプログラムなどの表現形式によって自らの思想・感情を創作的に表現した者に認められる、それらの創作物の利用を支配することを目的とする権利をいう」のだそうです。
一方の特許権についてWikipediaの定義は「有用な発明を公開した発明者または特許出願人に対し、その発明を公開したことの代償として、一定期間、その発明を独占的に使用しうる権利」なのだそうです。
これらの定義からわかる著作権と特許権の最大の違いは、その保護の対象です。つまり著作権の保護対象が「表現」であることに対し、特許権の保護対象は「発明」なのです。

何が「表現」で何が「発明」なのかは小難しい法解釈の問題になってしまうのですが、わかりやすくするためざっくりと一例を挙げます。
ソフトウェアにおける表現とは、ソースコードやひとまとまりのプログラムであると言える程度にまとまったモジュールなどです。
ソフトウェアにおける発明とは、ハードウェアを制御するためのプログラムであったり、斬新なビジネスモデルを可能にするためのアルゴリズムであったりします。
(上記の発明・表現の分類は日本法におけるものです。合衆国法やEU法では分類が異なります。念のため。)

つまり特許権と著作権は一見全く同じものを対象としているように見えて、実は全く別のものを対象にしているのです。この違いをしっかり意識しておかないと知らない間に他人の知的財産を侵害していたということもあり得ます。
例えばソフトウェアにライセンスが付与されていたから権利関係は大丈夫と思い込んで使用していたら、実はライセンスが著作権に関する許諾しかしておらず、後日になって特許権者から警告書が届いてしまったりします。

このような事故は誰にでも起こりえます。というのも自分のソフトウェアが既存の特許権に抵触するかどうかというのは調査・判断が難しいからです。
著作権の判断は簡単です。著作権の保護対象は「表現」です。ということは自分のコーディングが他人のコーディングの真似でなければ大丈夫ということです。ちゃんと自分で創作したプログラムなら著作権的にはセーフです。
しかし特許権は「発明」を保護対象としているため、アイディアが被っていればアウトです。他人の特許権を全く知らなくてもアウトです。著作権とは違って真似したつもりが無くてもアウトになり得ます。とはいえ膨大な特許権データベースの中から自分のアイディアとよく似た特許を探し出す作業は困難なのです。
ソフトウェアの作成者は、自分のソフトウェアが他人の特許権を侵害していると気づかず、自分の著作権についてのみライセンスで使用許諾をして配布してしまうかも知れません。

大企業に所属しているSE・PGならば特許権の調査・判断は知的財産部・法務部が代わりにやってくれます。しかし知的財産部のない中小企業や個人営業のプログラマーはどうでしょう。特許権の調査ができますか?
特許権調査の参考になるリンクを貼って今回の記事を締めくくりたいと思います。特許庁の特許電子図書館です。それでは!!
2010/01/28(Thu) 15:10:40

 BSDライセンス解説vol.2.5―BSDライセンスシリーズ一覧― / マルパチ 

BSDライセンスにはいくつかのバリエーションがあります。しかもやっかいなことにそれぞれが複数の通称を持っているのです。
以前の記事では一番オーソドックスな3条項BSDライセンスについて解説しましたが、2条項BSDライセンスが適用されるソフトウェアも多いですし、古い4条項BSDライセンスが適用されるソフトウェアもないとも限りません。これらを見誤ると法的に面倒なことになりかねません。

そこでBSDライセンスの種類ごとに、その通称をまとめてみたいと思います。

3条項BSDライセンス
3条項BSDライセンス(3-clause BSD license) = 修正BSDライセンス(modified BSD license/new BSD license)

2条項BSDライセンス
2条項BSDライセンス(2-clause BSD license) = FreeBSDライセンス(FreeBSD license)

4条項BSDライセンス
4条項BSDライセンス(4-clause BSD license) = オリジナルBSDライセンス(original BSD license) = 旧BSDライセンス(old BSD license)

こうして見るとバリエーション自体は3つしかないくせに名前だけはやたらたくさんあることがわかります。
個人的には旧BSDライセンス(old BSD license)とかnew BSD licenseといった名前は悪い名前だと思います。BSDライセンスは作成者であるカリフォルニア大学バークレー校自身が3つもバリエーションを出していますし、第三者がBSDライセンスを真似してMITライセンス等の数多くの亜種が生み出されています。古い新しいといった相対的な言葉で区別しようとすると誤解を招きかねないと思うのです。

BSDライセンスはGPLと比べると簡便でわかりやすいライセンスです。しかしGPLと異なり作成された過程も、作成に関わったメンバーも不明確なライセンスです。また簡便すぎてかゆいところに手が届かないといった問題もあります。
どちらのライセンスが良いかというのは一概に言い切れないのですが、お手軽さやカスタマイズのしやすさを優先したいならBSDライセンス、信頼性や堅牢性を優先したいならGPLといったところでしょうか。
2010/01/25(Mon) 13:41:00

 GPL解説vol.6―GPLの新しいバージョン― / マルパチ 

前回の記事でGPL(General Public License)の古いバージョンの取り扱いについて解説しました。GPLにバージョンがあるということは、今後GPLの新しいバージョンであるバージョン4がリリースされる可能性が高いということです。
前回の記事を読んだmagicienから「新しいバージョンの取り扱い」について質問があったので、今回はこれをテーマにしたいと思います。

GPLv2(=GPLバージョン2)に改訂版に関する第9条があるように、GPLの現行バージョンであるGPLv3(=GPLバージョン3)にも改訂版に関する14条があります。そしてGPLv3第14条2パラグラフは前回説明したGPLv2第9条2パラグラフと同様の規定です。
つまりあなたが自らの開発したソフトウェアに対しGPLバージョン3又は後発の全てのバージョン(="or any later version")によるライセンスをした場合、あなたからソフトを受け取った人にはGPLバージョン4に従うことを選択する権利が発生してしまうのです。

「わざわざ著作権告知に"or any later version"なんて文言を入れやしないよ」と思うかも知れませんが、落とし穴があります。
GPL作成者であるフリーソフトウェア財団(=FSF)はGPLを利用するソフトウェア開発者に対して著作権告知のテンプレートを用意しています。このテンプレートにはしっかりと書いてあるのです。"or any later version"の文言が。
深く考えずにこれをコピペすると、あなたのソフトウェアに「いつの間にかGPLバージョン4が適用されていた」という事態が発生します。

このような事態は回避したいという方も多いでしょう。
あなたが開発したソフトウェアなら、FSFの著作権告知のテンプレートから"or any later version"の文言を削除してバージョン3のみに従うよう指定することで、GPLバージョン4の適用を排除できます。
しかし他人が開発したソフトウェアの著作権告知に既に"or any later version"の文言が入ってしまっている場合、改変者・再配布者であるあなたは"or any later version"の文言を削除することができません。なぜなら第3回及び第4回にて解説したように、あなたには「適切な著作権告知(appropriate copyright notice)」を保持するという条件が課されているからです(GPLv3第4条1パラグラフ及びGPLv3第5条1パラグラフ)。すると「いつの間にかGPLバージョン4が適用されていた」という事態が発生しうるわけですね。

ソフトウェアに適用されるGPLのバージョンが自分では決められない、ということを不安に思われるかも知れません。未だにリリースされていないライセンス文書がソフトウェアに適用されるかもしれないというのは、非常にリスキーです。なぜならライセンス文書がどのような内容になるかわからない以上、あなたに不利益をもたらす条項が挿入されないとも言い切れないからです。
でもGPLに限って言えばそのような法的リスクはありません。仮にGPLバージョン4にあなたの不利益となる条項が追加され、かつ、ソフトウェアにGPLバージョン4が適用されることになったとしてもあなたが困ることは無いでしょう。

そのように言える理由はGPLv3第14条4パラグラフにあります。その翻訳は以下の通りです。
「後発のライセンスバージョンはあなたに追加的許諾、又は、異なった許諾を与えるかも知れない。しかしながら、あなたが後発のバージョンに従うことを選択した結果として、全ての作成者又は著作権者に対して追加的義務が課されることはない。」
このパラグラフが何を言いたいのかというとつまり、GPLバージョン4がGPLバージョン3と比べて作成者・改変者の不利益となる条項を含むものであった場合に、利用者がGPLバージョン4に従うことを選択したとしても、作成者・改変者の不利益となる部分についてのみGPLバージョン4の適用が排除されるということです。
この条項により、GPLのバージョンアップに伴う法的リスクを打ち消しているというわけですね。

そんなわけでGPLのバージョンアップをおそれる必要はありません。あなたが開発したソフトウェアの著作権告示から"or any later version"の文言を削除する必要性も薄いと言えるでしょう。

次回のテーマについてちょっと迷っているんですが、いま「ソフトウェア特許」が熱そうなんでGPLv3第11条(特許)について解説して「ソフトウェア特許」への足がかりにしようかな。
それでは!!
2010/01/24(Sun) 18:35:24

 GPL解説vol.5―GPLの古いバージョン― / マルパチ 

GPL(=General Public License)にはいくつかのバージョンがあります。最新のものは2007年6月29日にリリースされたバージョン3です。これまで本ブログで行ってきたGPLの解説もバージョン3を土台にしています。
ところがネット上で公開されているオープンソースの中にはGPLバージョン2でライセンスされているものも多く残っています。この場合どちらのライセンスに従えばよいのでしょうか?

結論から言ってしまいます。状況によって、バージョン2に従わなければならない場合と、必ずしもバージョン2に従わなくても良いけれどもバージョン3に従う意味がない場合に分けられると思います。だからバージョン2に従うべきです。
理由について説明していきます。

そもそもGPLバージョン2とGPLバージョン3は全く別のライセンスです。GPL作成者のフリーソフトウェア財団(=FSF)はバージョン3をバージョン2のアップグレード版として作成しました。しかし本来、法律文書であるライセンスにはアップグレードなどというものはありません。一度作成したライセンスは何年でも何十年でも効力を持ち続けます。それこそ著作権の保護期間が終了するまで有効なのです。
だからソフトウェアがGPLバージョン2でライセンスされていた場合はGPLバージョン2に従わなければなりません。

しかしFSFはバージョン2発表の時からGPLのバージョンアップについて考えていたようです。バージョン2にはGPLの改訂版についての規定がおかれています。GPLv2第9条2パラグラフがそれです。それによるとGPLバージョン3は以下のように取り扱われます。
①プログラムがライセンスのバージョン番号及び"any later version(後発の全てのバージョン)"を指定している場合に、あなたはそのバージョンまたはFSFにより発行された後発のいずれかのバージョンのどちらかの規定・条件に従うかにつき選択権を持つ。
②プログラムがライセンスのバージョン番号を指定していない場合、あなたはFSFによりこれまでに発行された全てのバージョンを選ぶことが出来る。
つまり①及び②の場合においては必ずしもバージョン2に従わなくても良いわけです。しかし実際にはバージョン3に従うメリットはありません。

バージョン2とバージョン3はその根幹についてほぼ同じです。つまりフリーソフトウェアライセンスであり、かつ、コピーレフトであるということです。
そしてバージョン3はTiVo化DRMといったバージョン2の抜け穴をふさぐための規定を新たに設けています。つまりバージョン2の方が(どちらかと言えば)要求してくる条件の緩いライセンスなのです
緩いライセンスと厳しいライセンスを選べるのなら緩いライセンスを選ぶ人がほとんどでしょう。ですからバージョン3に従う意味がないという結論になるのです。

そんなわけでGPLバージョン2でライセンスされたソフトを使うときはバージョン2に従うべきであるといえます。
2010/01/21(Thu) 16:37:50

 BSDライセンス解説vol.2―MITライセンス― / マルパチ 

jQueryをいじろうとしてjQueryがMITライセンスであることに気づく。だからMITライセンスについて勉強がてら解説を書いてみることにします。前回予告した「古いバージョンのGPL」に関する記事は延期です(笑)

さてMITライセンスはBSDライセンスの亜種なわけですが、どのようなライセンスなのでしょう。

まずMITライセンスの本文を読んでみる。さすがBSDライセンスの亜種なだけあって短い。とにかく短い。
短いので主要部分の翻訳が出来そうな気になってきます。そんなわけで以下はMITライセンスの翻訳です。

<著作権告知省略>
本ライセンスによって、無償で、「このソフトウェアのコピー及び付属の文書ファイル(以下「ソフトウェア」とする)」を取得した全ての者に対し、ソフトウェアを無制限で取り扱う許諾が与えられる。この許諾には使用、コピー、改変、結合、公表、配布、再実施(sublicense)、ソフトウェアのコピーの販売のいくつか又は一つに対する無制限が含まれる。そしてソフトウェアを提供された者に同じ許諾をすることも許諾される。但し以下の条件に従うこと。
上記の著作権告知及び本許諾書は全てのソフトウェアのコピー又は実質的な一部に組み込まれなければならない。
<免責条項省略>

うーん。MITライセンスはBSDライセンスとほぼ同じ法的内容を持ったライセンスのようだ。違うところは言い回しくらいか。
あまりに違いがなさ過ぎて逆に不安になったので違いを探してみた。しかし違いはないということで正しいみたいだ。GNUプロジェクトも「3条項BSDライセンス(Modified BSD lisence)とMITライセンス(X11 lisence)はおおよそ同意義である」と言っている。→リンク先ページの"Modified BSD lisence"の項を参照

そんなわけで3条項BSDライセンスとMITライセンスに法的な違いは無いということで解説を締めくくりたいと思います。…つまらない結論だなぁ。

つまらないので一つだけ補足します。
MITライセンスはGPLと2本立てで用いることができます。3条項BSDライセンスについても同様にGPLと2本立てで用いることができます。→参考リンク
このように1つのソフトウェアを2つ以上のライセンスで配布することをデュアルライセンスといいます。jQueryはGPLとMITライセンスのデュアルライセンスですね。
それでは!
2010/01/19(Tue) 19:28:02

 夜中に犬に起こった奇妙な事件・感想編 / ノリオ 

夜中に犬に起こった奇妙な事件 『夜中に犬に起こった奇妙な事件』をやっと読み終わったー。今年初めて読みきった小説ってわけですな。
前にも書いたけど簡単にあらすじを説明すると、自閉症だけど頭が良い少年が、犬が殺された事件を解決しようとする話。その少年が、身の回りに起こった出来事をミステリ小説として書いた本という形式をとっている。

まずこの小説を読もうとすると、読者が必ず不審に思う点は、章番号が2から始まっていることだろう。僕は落丁か何かあったのではないかと、前のページに戻って確かめたりしちゃいましたよ。
ちなみに読み進めていくと、2章の次が3章で、さらにその次が5章。勘のいい人は何か気付いたかもしれない。

初めはミステリ小説として進んでいくけれど、途中から思いもよらない展開に。なるほどこういう小説だったのかという、感想ともいえないような感想ですみません。

この小説の面白い点というか特異な点は、やはり自閉症の少年を主人公に据えているところだろう。他人の感情が理解できず、独自の思考回路で行動する少年が、冒険を通じて成長していく様が描かれている。

また、話の合間に本筋とは関係ない、数学の問題が出てくるのも面白いところ。例を挙げると・・・
伏せられたカード3枚の中に1枚だけ正解のカードがある。あなたはまず3枚の中から1枚を選ぶが、それが正解かどうかまだ調べることはできない。次に、答えを知っているディーラーが、選ばれなかった2枚の中からハズレのカードを1枚めくってみせる。それからディーラーは、あなたが最初に選んだカードが正解かどうか確かめる前に、1度だけ考えを変え、残りの1枚を選んでもよいと言う。あなたはどうするべきか?(本文を要約したものです)

この問題は、先日の平成教育委員会でもやっていた気がする。読んでいて、「2枚のうちどちらかが正解なんだから、どっちを選んでも当たる確率は2分の1だろう」と考えていたのですが・・・

また、この本を読んでいて感じたのが、翻訳された海外小説において、翻訳者が与える影響は思いのほか大きいということだ。
僕が読んだ本では、原作者の意図を反映しているのかわからないけれど、地の文が敬語だったりそうでなかったりと、言ってしまえば綺麗でない文章で書かれている。そこがまた、「著者」の少年のノーマルでないかんじを演出していて良いんだけど、そういった工夫は翻訳者の手に委ねられているわけである。
新聞や論文と違って、理論的に内容が正しければいいってわけじゃないし、訳者によって大きく雰囲気が変わってしまうこともあるだろう。奥が深いと感じました。
ちなみに原作者はマーク・ハッドン、翻訳者は小尾芙佐さんという人でした。
2010/01/18(Mon) 00:21:55

 オープンソースに思うこと / マルパチ 

ここのところmagicienに教えてもらったGPLだとかBSDライセンスだとかを勉強してて思った。この分野はどんどん新しいものが出てくるなあ。

最初のうちはプログラム使うのに必要な法律なんか著作権法だけで十分だったんだろう。けど今はもう著作権法だけでは最新のプログラムをフォローできなくなってきてるように思える。
GPLやBSDライセンスなんていう変則的なものが出てきて、それがソフトウェア著作権の分野で一般的になっている。
これからは法律屋もこういった流れをきちんと追っかけていかないといけないのかな。

そんなわけでおれも何か勉強してみようかと思い立ったわけです。そうすればオープンソースの今を知ることができるかもしれない。
このあいだmagicienが記事にしていたscripty2なんか面白そう。オープンソースなjavascriptのライブラリか…

scripty2をググっていたらこのブログに行き着く。ん?ここに書いてあるjQueryって何だ?scripty2と同じjavascriptのライブラリなのかな。
うーん何が違うのかよくわからん。とりあえずscripty2はMITライセンス、jQueryはGPLとMITライセンスのデュアルライセンスか。
せっかく時間もあることだしこれらで何か作ってみようかな。そうすりゃ違いもわかるでしょ。
2010/01/17(Sun) 16:04:35

 BSDライセンス解説vol.1―BSDライセンスってなに?― / マルパチ 

さて今回はBSD(=Berkeley Software Distribution)ライセンスについて書きたいと思います。
BSDライセンスはいろいろな亜種があるのですがオーソドックスな3条項BSDライセンス/3-clause BSD license(=修正BSDライセンス/modified BSD license)を題材に書いていきますね。(リンク先の文書には4つの条項がありますが第3条が削除されたので3条項になります。)

BSDライセンスは、今まで説明してきたGPL(=General Public License)と同じく、ライセンスされたソフトウェアがフリーソフトウェアであると述べています。しかしBSDライセンスの記述はGPLの記述に比べるとずいぶんあっさりしています。
どのくらいあっさりしているのかわかりやすくするためにBSDライセンスが要求する利用・再配布・改変の条件を書き出してみたいと思います。

<著作権告知省略>
改変のあるなしにかかわらず、以下の条件を満たす限り、ソースコード形式及びバイナリ形式での利用及び再配布が許諾される。
1.ソースコードの再配布の際には、上記の著作権告知、ここに列挙された条件、そして下記の免責条項を保持しなければならない。
2.バイナリ形式での再配布の際には、上記の著作権告知、ここに列挙された条件、そして下記の免責条項をコピーした文書その他の資料と一緒に再配布しなければならない。
4.大学の名前(カリフォルニア大学バークレー校)もコントリビューターの名前も、このソフトウェアから派生する製品の推奨・販促に使ってはならない。但し書面による事前の明示的な許諾がある場合を除く。
<免責条項省略>

以上です。あれこれ要求するGPLに比べるとずいぶんあっさりしているでしょう?
しかもGPLと違い、改変されたフリーソフトウェアを再配布する際に「改変されたソフトウェアの全体に丸ごとこのライセンスを適用させること(GPLv3第5条1パラグラフc項)」が要求されていません。→前回記事の条件⑤を参照
これはどういうことかというと、改変したソフトウェアを再配布するときにソースコードを公開する必要がないということです。(つまりBSDライセンスソフトウェアはフリーソフトウェアではあるけれどもコピーレフトではないのですね。)

そんなわけで今回はあっさりとした記事にすることができました。毎回こんな感じだと読みやすくて良いのでしょうけど…。
次回は「古いバージョンのGPL」について書きたいと思います。それでは!
2010/01/16(Sat) 16:40:07

 GPL解説vol.4―フリーソフトウェアとコピーレフトその2― / マルパチ 

前回「GPL(=General Public License)ライセンスソフトウェアを使うと何ができて何ができないのか」の続きです。
「改変されたフリーソフトウェア」の再配布の条件について説明したいと思います。

「改変されたフリーソフトウェア」は6つの条件を守れば、ソースコード形式でのみ再配布できます。再配布は必ずソースコード形式で行わなければなりません。オブジェクトコード形式での再配布の際はさらに条件が付け加えられるので注意してください。

6つの条件とは①適切な著作権告知を全てのコピーに目立つように発行すること、②GPLのコピーを全ての受取人に提供すること、③改変したという事実及び改変の日付をはっきりと告知すること、④GPLが適用される旨・GPLv3第7条に基づく全ての条項が適用される旨をはっきりと告知すること、⑤改変されたソフトウェアの全体に丸ごとGPLを適用させること、⑥あなたの改変によりソフトウェアインタラクティブユーザーインターフェイスを追加された場合は適切な法的告知を表示すること。→GPLv第5条1パラグラフ
①「適切な著作権告知(appropriate copyright notice)」は前回説明したとおり。フリーソフトウェアの元々の著作権告知を変更するなという意味です。
④の条件は前回説明した②の条件に似ていますが違うものです。どこが違うかというとGPLv3第7条に基づく「全ての」条件を告知しなければならない点が違います。非許可条項の告知だけで良しとされた「フリーソフトウェアの完全なコピー」とは大違いです。
⑤は6つの条件の中で一番大事な条件と言っても過言ではありません。この条件によりGPLはAからA'へ、A'からA''へと伝播していくのです。(ライセンス感染とか皮肉られる原因でもあったり…)
⑥の「適切な法的告知(Appropriate Legal Notices)」ってなんやねん、という問題があります。これについてはGPL自身が「適切な法的告知」の定義づけをしてくれています(GPLv3第0条8パラグラフ)。GPLによると「適切な法的告知」とは、まず適切な著作権告知(apprpriate copyright notice)の表示があること、そして利用者に対して3点につき伝えること(無保証である場合には無保証であること、受領者がGPLに基づきプログラムの再配布が出来ること、GPLのコピーを参照する方法)なのだそうです。適切な著作権告知って①の条件とほぼ同じですね。ファイルとディスプレイで2重に著作権告知をしろということです。

さて前回から2回にわたって長々と解説してきましたがいかがでしたでしょうか?
タイトルにも書いたコピーレフトについてはついにここまで触れずじまいでした(笑)

コピーレフトとは、本来なら非著作権者による著作物の利用を制限するために用いる著作権法を、逆に非著作権者による著作物の自由な利用・再配布・改変のために用いてしまおうという逆転の発想です。つまり最初の著作権者が、自分の著作権を盾にして、全ての再配布者に対してフリーソフトウェア化を要求してしまうのです。
この発想はプログラマーの方にとっては既に当たり前の考え方なのかもしれませんが、僕みたいに法律の考え方に馴染んだ人間にはやっぱり違和感があります。著作権法などの私法ってのは普通、自分の利益のために使うものであって、他人の利益や公共の利益のために使うものではありませんからね…。

次回は「古いバージョンのGPL」について説明しようかと思いましたがこれは後回しにして、ここらでちょっと「BSDライセンス」について書くことにします。
それでは!
2010/01/15(Fri) 23:18:29

 GPL解説vol.3―フリーソフトウェアとコピーレフト― / マルパチ 

どうもマルパチです。
前回前々回の記事が長くなりすぎたので今回はあっさりいきたいと思います。題して「GPL(=General Public License)ライセンスソフトウェアを使うと何ができて何ができないのか。」

GPLライセンスのソフトウェアはフリーソフトウェアです。
ここで気をつけなければならないのはフリーソフトウェアはフリーソフトではないということ。言葉は似ていますが両者の間には大きな違いがあります。
フリーソフトは「タダで」使用することができるソフトウェアのことです。使用が認められているに過ぎないので、フリーソフトの著作権者は必ずしもソースコードを開示しません。使用する分にはソースコードは不要だからです。
一方フリーソフトウェアは「自由に」使用・研究・改変ができるソフトウェアを意味します。自由な研究、自由な改変のためにはソースコードが必要不可欠ですよね。ですからフリーソフトウェアはソースコードが開示されます。

さらに「フリーソフトウェアの完全なコピー」及び「改変されたフリーソフトウェア」は自由に再配布することができます。ただし再配布する場合はGPLの要求する条件に従わなければならないので注意が必要です。
その条件を以下に説明します。

「フリーソフトウェアの完全なコピー」は4つの条件を守れば、ソースコード形式で再配布できます。ソースコードをコンパイルしたものはそもそも「フリーソフトウェアの完全なコピー」ではないので4条件を守っただけでは再配布できません(GPLv3第4条1パラグラフ)。注意してください。

4つの条件とは①適切な著作権告知を全てのコピーに目立つように発行すること、②GPLが適用される旨・GPLv3第7条に基づく非許可条項が適用される旨の全ての告知を完全に保持すること、③無保証である旨の全ての告知を完全に保持すること、④GPLのコピーを全ての受取人に提供すること。→GPLv3第4条1パラグラフ
①の「適切な著作権告知(appropriate copyright notice)」というのがわかりにくいと思います。これはつまりフリーソフトウェアの元々の著作権告知をそのままにしておけ、変更するなという意味です。第1回で説明したようにソースコードの著作権者は作成者です。作成者の手による著作権告知を勝手に変えてしまうのはダメだということですね。
②の「GPLv3第7条に基づく非許可条項」というのは著作権者が付け加えたGPLの要求する条件をさらに厳しくする追加条件のことです。逆に言えば著作権者が付け加えたGPLの要求する条件を緩和する追加条件はあなたの判断で削除することができるのです。
③の「保証がない旨の全ての告知」とはソースコードにコメントされている"WITHOUT ANY WARRANTY"または"ABSOLUTELY NO WARRANTY"の記載のことですね。GPLの作成者であるGNUプロジェクトはソースコードにこの文句をコメントすることを推奨しています。もちろんあなたが勝手に削除することなど出来ません。→参考リンク
気づいた方もおられるかと思いますが、これらの条件の中には「再配布は無償でなければならない」とは書かれていません。それどころかGPLは再配布を有償で行ってもよいとはっきり書いています(GPLv3第4条2パラグラフ)。早い話がお金を取っても良いということです。GPLソフトウェアがフリーソフトではなく「フリーソフトウェア」であるという所以です。

さて次は「改変されたフリーソフトウェア」を再配布する条件について説明したいところですが…
あっさりいくとか言ったのに全然あっさりしてないじゃないか!!
自分の見立ての甘さにがっかりしました。てなわけで次回に続く!


ちょっと補足です。
ここで問題になるのがあなたが受け取ったGPLソフトウェアが最初からコンパイルされたオブジェクトコードを含んでいた場合です。オブジェクトコードを再配布したい場合には別途GPLv3第6条の条件が課されるのですが…。
オブジェクトコードとGPLの関係についてはまた別に記事を書きたいと思います。

2010/01/12(Tue) 14:54:49

 GPL解説vol.2.5―GPLリンク集― / マルパチ 

自分用もかねてGPL(=General Public License)のお役立ちリンク集を作ってみます。

GNU General Public License
GPLの正文が読みたいときはここです。

GNU一般公衆利用許諾書
独立行政法人情報処理推進機構によるGPLの日本語訳です。ただしあくまで「GPL正文を日本語に訳したもの」であって「GPL正文」ではありません。ですから法的にはなんの意味もない文書ともいえます。しかし良くできた日本語訳なのでGPLの参考教材として使えます。

Frequently Asked Questions about the GNU Licenses
(GNU GPLに関して良く聞かれる質問)
GNUプロジェクトによるGPLのQ&A集です。GPL作成者による公式のQ&A集なのでGPLの文言解釈に迷ったときは真っ先に見ます。

GNU GPLv3逐条解説書
独立行政法人情報処理推進機構によるGPLのコンメンタール(逐条解説)です。日本語で書かれていますし何より情報量が多いので教科書として使えます。

また気が向いたときに随時リンクを追加していくつもりです。
2010/01/11(Mon) 12:38:33

 scripty2 / magicien 

いつのまにかbisonの疑問が解決されているっ!
法律屋さんが身近にいると心強いですな。
要望...ってほどじゃないけど、GPLの話は個人的にもとてもためになるので、このまま続けて欲しいなぁと思ったり。
今後ソフトを公開する上での伏線のような部分もあるので。
ただ、BSDとかその他のライセンスのことも知りたいなぁと思ったり。
そこらへんはお任せします。

で、閑話休題。
サイトの更新を久しぶりに始めたこともあり、scriptaculousの開発状況を見に行ってみようかと思ったわけです。
2007/12に1.8.0だから、今頃は2.0とかになってたりして、と思ったわけですが...


バージョン1.8.3でした。2年でそれかぁ。まぁ開発は地道に続いてるみたいで何よりだけど。
と思っていたら、なにやら次期scriptaculousが開発されているとの噂が。
http://scripty2.com/

その名もscripty2。確かにscriptaculousって名前は長いもんね。
1から作り直してるみたいだけど、HTML5やら何やらとぶつかって、また作り直しにならないといいなぁ。
とりあえず、このサイトではscriptaculousを継続して(ほとんど使ってないけど)使って、完成度が上がったらscripty2に移行してみる、って感じでいこうと思います。


2010/01/10(Sun) 00:04:11

 夜中に犬に起こった奇妙な事件・探索編 / ノリオ 

夜中に犬に起こった奇妙な事件 コンニチハ、元読書家です。為になる話が繰り広げられている中で、自分だけ趣味に走ることにしよう。

先日、美容院で髪を切っている間にたまたま読んだ雑誌が、色々な本を紹介する雑誌だった。 その中で、文系の人にもオススメな理系の本みたいなコーナーがあって、今回のタイトルである『夜中に犬に起こった奇妙な事件』が紹介されておりました。

あらすじを簡単に述べると、自閉症だけど頭が非常に良い少年が、犬が殺された事件の犯人を追うという話。イギリスの作家が書いた作品で、全世界で読まれているベストセラーらしい。

非常に興味をそそられたので、近くの書店で探すも見つからず。学校の近くの書店で探しても見つからなかった。
そこで、さすがに紀伊国屋なら売ってるだろうと思い、歩いて行くことに。ようやく着いて、店内にある検索マシンで調べてみると、新宿南店に置いてあると表示された。・・・どこにあるのそれ。

店員さんに案内図をもらい、さらに歩くこと10数分。今度こそ・・・!
検索マシンで調べると、置いてある棚が表示されたので、そこらへんを探してみるが見つからない。不審に思いもう1度マシンで検索すると、在庫がないと書かれていた。・・・ガビーン。
さすがにもう歩いて探す気力はなく、その場で注文することにした。これが去年の年末の話です。・・・てか、素直にAmazonで注文しとけばよかったね。

そして先日、ようやく本が入荷したとの連絡が入り、本を手に入れることができた。まだ読んでいる途中なので、感想は読み終わってからまた書くかな。

教訓:海外小説はよっぽど有名じゃない限り書店に置いてない!Amazonで買おう!

2010/01/09(Sat) 23:47:07

 GPL解説vol.2―GPLライセンスソフトウェアが出力したデータとGPL― / マルパチ 

前回説明したようにGeneral Public License(=GPL)はGPLライセンスのプログラムを利用する人に対していくつもの条件を要求しています。条件に違反した人はプログラムの支配者である著作権者から「やめろ!!」と言われかねません。有り体に言えば法廷で争うというやつです。
条件はGPLを読めば全部書いてあるのですが、見てのとおりGPLは法律文書ですしこの手の文書になれていない人にはかなり読みづらいでしょう。そこで今回以降ひとつひとつの条件について詳しく触れてゆきたいと思います。
記念すべき最初のテーマは前回予告したとおり「GPLライセンスソフトウェアが出力したデータにもGPLが適用されるか?」でいきます。

例えばあなたがGPLライセンスのエディタを使ってコードを書いたとしましょう。エディタはあなたの書いたコードをファイルとして保存(出力)します。この場合あなたの書いたコードにGPLライセンスを適用しなければならないのでしょうか?
GPLライセンスを適用しなければならないと言うことはつまり、あなたのソースコードをフリーソフトウェアにしなければならないということです。フリーソフトウェアにしなければならないにもかかわらずフリーソフトウェアにしないことはGPLの条件に違反します。もしあなたのしたことがGPLの条件に違反するとしたら、あなたはエディタの著作権者から訴訟を起こされる危険さえあります。…なかなかに恐ろしい話です。

まぁ不安をあおるのも良くないので答えを言ってしまいましょう。上記の例えではあなたはGPLを適用する必要は全くありません。→参考リンク(/)
なぜならエディタの著作権者はエディタそれ自体に対してのみ著作権を持っているからです。あなたがエディタに入力したコードはあなたの著作物です。あなたが支配するあなたのコードに対してGPLが難癖をつけることはできないというわけです。だからあなたが自分のコードに対してGPLを適用しようがすまいがあなたの勝手なのです。
ですがここにもう一つの例を挙げたいと思います。

GPLライセンスのコンパイラがあなたの作ったプログラムの中にコンパイラの一部(パーサなど)をコピーしたとしたらどうでしょう?
実はこの場合あなたの書いたプログラムにはGPLが適用されるのです。というのもGPLライセンスのプログラムAから出力されたBがAの一部を含む場合には、BにもまたGPLが適用されるからです(GPLv3第2条1パラグラフ3センテンス)。→参考リンク(/)。
もしコンパイラがしでかしたことに気づかずあなたのプログラムをフリーソフトウェアにし忘れたら…。プログラマーの皆様は変な争い事に巻き込まれぬようくれぐれもお気をつけ下さい。

とはいえ例外もあります。bisonがその一つです。(ただしver1.24以降のみ)
bisonはあなたのプログラムにbisonの一部であるパーサプログラムをコピーします。しかもbisonはGPLライセンスソフトウェアです。するとあなたのプログラムにはGPLが適用されるはずなのですが、GPLは適用されないのです!(ただしver1.24以降のみ)
どういう事かといいますと、GPLは著作権者に対してGPLの条件に例外を設けることを認めているのです(GPLv3第7条1パラグラフ)。そしてbisonの著作権者はバージョン1.24以降のbisonが出力したパーサプログラムを非フリーソフトウェアに使用することを許諾する例外を設けています。→参考リンク
バージョン1.24以降のbisonを使っている人はbisonの出力したパーサプログラムのソースコードをのぞいてみてください。以下のようなコメントが書き込まれているはずです。
"As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice..."
これはつまりバイソンのパーサプログラムを含んだあなたのソフトウェアをあなたの好きな条件で配布して良いということです。ですからあなたのソフトウェアを非フリーソフトウェアにしてもよいのです。

うーん、これでmagicienの疑問が解決したらいいんだけど…。

次回のテーマは「GPLライセンスソフトウェアを使ったら何をしなくてはならないのか」をテーマにしたいと思います。が、magicienから要望があったら他のテーマにするかもしれません。
2010/01/09(Sat) 18:30:25

 GPL解説vol.1―GPLとはなんぞや?― / マルパチ 

さて今回からGeneral Public License(=GPL)について触れてゆきたいと思います。

ソースコードの作成者は作成したソースコードに対して著作権を有します(著作権法17条)。だからプログラマーが汗水垂らして作成したソースコードにタダ乗りする奴に対しては「やめろ!!」と言えるわけですね。これは前回説明したとおり。

とはいえプログラムというのは多くの人の手が加わることによって進歩してゆくもの。他人の作ったソースコードに手を加えたいと願う人にとって現状の著作権法は満足できる法律ではないわけです。→参考リンク
そのように願う人たちが生み出したのがGPLというわけですね。

GPLは代表的なコピーレフトのソフトウェアライセンスの一つです。
(いきなり「コピーレフト」だの「ライセンス」だのいってもわからないと思いますが説明すると長くなりますし本稿を理解する上では不要なので説明しません。いちおうWikipediaへのリンクだけ張っておきます。)

GPLの肝はソースコードに対する著作権が生きているということ。つまりソースコードは著作権者に支配されているにもかかわらず誰もが自由にソースコードを使うことができるのです。
なんでやねん、と思うでしょう?からくりは単純です。ソースコードを支配しているということはソースコードを自分の好き勝手に処分して良いということです。だから自分の作成したソースコードを自由に実行・複製・改変・再配布しても良いと許すことも自由なのです。そしてソースコードの自由な実行・複製・改変・再配布を許諾する文書こそがGPLなのです。

ここまで読み進めてきた人の中には疑問に思う人もいるかもしれません。わざわざGPLなんて小難しいものを使わなくても「著作権を放棄する」と言ってしまえば同じことなのではないかと。
実はそのような方法は既にあります。「パブリックドメイン」と呼ばれる方法がそれです。
パブリックドメインはパブリックドメインで悪くない方法なのですが、ある重大な欠陥があります。

例えば著作権の放棄された鈴木さん作成のパブリックドメインソフトウェアAがあるとします。Aは佐藤さんに改変されてA´になりました。田中さんはA´をさらに改変したいと思いました。
しかし田中さんはA´を改変できないのです!
なぜならA´の著作権は佐藤さんが持っているから。鈴木さんはせっかくソースコードの著作権を放棄したのに、これでは著作権の捨て損です。
そこでGPLはこのように要求します。
「ソースコードの改変は許すけれども条件としてA´にもGPLを使いなさい(GPLv3第5条1パラグラフc項)。」
これにより田中さんはA´を自由に改良することができるというわけです。
(余談ですがGPLライセンスのコードを一行でも利用するとソースコードの全てにGPLライセンスを使わなければならなくなるわけです。伝染病に似ていると言うことで「ライセンス感染」などと皮肉る人もいるようです。)

GPLはソースコードを実行・複製・改変・再配布する人に対してこの他にもいくつかの条件を設定しています。その条件については次回以降詳しく解説してゆきたいと思います。
とりあえずはmagicienがbisonのGPLライセンスに苦しんでいるようなので「GPLライセンスプログラムの出力物にGPLライセンスが適用されるか」をテーマにいきます!
2010/01/08(Fri) 18:19:06

 lex/yacc 勉強中 / magicien 

相変わらず中身のない記事です。
マルパチがGPLに触れたことに関連して。

lexは字句解析のためのプログラム、yaccは構文解析のためのプログラム。
というわけで、コンパイラに使われたりするlex/yaccですが、 今はこれを使って(3Dの)xファイルのパースをしてたりします。

10日ほど前から使い始めたのですが、使った感想としては、便利、ですねこれは。
これ使えば何か面白いことができそうでわくわくします。
暇があればHyperTalk(懐かしい!)のパーサでも作ってみるか...

ところで、Macでlex/yaccを呼ぶと、実際にはlex/yaccのGNU版であるflex/bisonが呼び出されます。
で、flexのライセンスはBSD、bisonのライセンスはGPLのようです。
flexもbisonも、最終的にC言語のコードを生成するわけですが、bisonのGPLライセンスがなかなか曲者のようで、 過去にはいろいろと問題が起こったようです。
今ではbisonが生成したコードにはGPLライセンスが適用されないらしいですが...調査が必要そうだなぁ
flexの方は"info flex"コマンドでCopyrightを確認したところ、修正BSDライセンスっぽい(たぶん)。というわけで、安心して使えそうです。


2010/01/08(Fri) 03:34:44

 著作権についてのウンチク(またはGPL解説vol.0) / マルパチ 

さて前回の予告通りGPL(General Public License)の解説に入ろうとしたわけですが...その前に著作権についてうんちくをたれた方が良いかと思ったんで今回は著作権について。
今回の記事は法律を勉強したことのある人にとっては当たり前の内容。法律のわからないプログラマー向けにプログラマーとは切っても切れない関係にある著作権について基本的な講釈をたれることが目的です、はい。

wikipediaによると「著作権(ちょさくけん)とは、言語、音楽、絵画、建築、図形、映画、写真、コンピュータプログラムなどの表現形式によって自らの思想・感情を創作的に表現した者に認められる、それらの創作物の利用を支配することを目的とする権利をいう」のだそうです。
wikipediaの説明は必要にして十分なものですが、法律の心得がない人向けの説明としてはちょっと不親切。

そこでかみくだいて一番大事な要点を一つだけ挙げます。
著作権の一番大事なところはソースコードを「支配」できるということ。
著作権が支配権であるということは非常に重要。いきなり支配とかいわれても何がなにやらだと思うので具体例を挙げます。

例えば自分のPCを赤の他人が勝手にいじくってHDDの中身をのぞいていたらどう思いますか?
大方の人は腹が立って「やめろ!!」と言うはずです。このやめろと言う根拠になるのが「支配権」。PCを所有する人はPCに対する所有権を持っているわけですが、この所有権は著作権と同様に「支配権」であるとされています。
ですからプログラマーは自分の作ったソースコードを勝手にいじくったり勝手に利用したりする他人に対して「やめろ!!」と言えるわけですね。これが支配権であるということであり、著作権のキホンのキです。
(もちろん実社会のトラブルは上記のたとえみたいに単純ではありません。「やめろ!!」と言えるか言えないかは身近な法律家に実際の状況を話して判断を仰がなければならないわけです。)

ところがネットを見ると著作権フリーのソースコードが大量にあふれています。
ちょっと待てと。ソースコードは作成者(=著作権者)に支配されているのではないのかと。フリーのソースコードを自分のソースに組み込みたいのはやまやまだけど、後から「やめろ!!」と言われるのは困るぞ。
この問題を解決するために作られたのがGeneral Public License、略してGPLです。というわけで次回こそはGPLについて解説していきたいと思います。
2010/01/06(Wed) 12:31:50

 謎の検索上位 / magicien 

今年の目標でDarkHorseで100位以内と書きましたが、驚くべきことに10位以内にこのサイトが表示されるキーワードがありました。
"Objective-C ベジェ"の組み合わせで、なんと10位に!

Objective-Cでベジェ曲線を簡単に扱う方法はないかと検索していて発見したわけですが、もちろん自分のサイトに書いてあるはずがありません。
しかも、どこからもリンクされていないはずなのに。なぜこんなことに...

察しのいい人はわかったかもしれませんが、ベジェ曲線は3Dモデルのモーションの補間に使おうと思って検索していたわけです。
既に実装は終わっているので、いずれソースを公開しようかと思います。
解決法があると思って来てしまった人はご迷惑をおかけしました。

2010/01/04(Mon) 11:56:21

 明けましておめでとうございます! / magicien 

みなさま、今年もよろしくお願いします。
いやはや、とうとう2010年になってしまいました。
それでは、年初ということで、今年の目標をば。
  • DarkHorseで検索して100位以内
  • ソフトウェアを3つ公開(といってもみんな似てるかも)
  • 動画も公開
  • サイトのシステムを作った当初からいじってないので、何かしら改良
こんな感じです。いつぞやと比べて控えめですが、とりあえずチームに関係する目標だけということで。
今年中に全部達成できるといいなぁ。

2010/01/01(Fri) 00:00:00