土曜日, 8月 21, 2010

【Google App Engine】 すっきり本、Slim3本を読んで このエントリーを含むはてなブックマーク


 お客様への研修教材として使えるかなと思って、「すっきりわかるGoogle App Engine」、「Slim3 Google App Engine」の2冊を買った。
(hidemon、shin1ogawaのサイトからポチッたぞ。(・v・)どや顔)

 まず「すっきり本」だけど、これは全体的によく網羅されていて、辞典を引くような使い方ができそうと思った。実際に読んでみたら知らなかった機能が出るわ出るわ。(ああ、security-constraintでログイン制御ができるなんて見落としていたよ。これまで独自に実装していた自分が恥ずかしいよ><;)
 私のように痛い目にあわないよう、とにかく全部読んで基本的なことを押さえてから、開発に着手するのがおすすめだね。もうこれでスッキリ。

 次に「Slim本」だけど、これは目からウロコが出る本。具体的な例で説明されていてよくわかるし、曖昧なところがなくビシッとくる感じ。難解なIndexの説明もDatastoreに実際に保存されるところまで説明されてる。もう、これはK&Rですな。(フル~)
 とにかく、GAEはDatastore設計が命なので熟読すべき本であることはまちがいない。
 (コラムに何か訴えるような力強さを感じたのは私だけだろうか)





月曜日, 8月 16, 2010

【Java特許侵害】 Oracle vs Google ガチンコでお願いします このエントリーを含むはてなブックマーク


 8月12日、OracleがGoogleに対して訴訟を起こした。Oracleの持つJavaの知的所有権(特許および著作権)を侵害していることが理由とのこと。この問題はよくわからないので自分なりに整理してみることにした。(ただし私は法律には素人で間違いも多いと思う。あしからず)

どういう訴訟か



 まず、訴訟の内容はというと、AndroidでのJava利用が7つの特許侵害と著作権侵害があったので、適切な賠償を求める、というものだ。FINAL_Complaint

 私としては、特許侵害だけでなく、著作権侵害があったのが意外だった。

 Androidで使われているDalvikはApache Harmonyのサブセットを用いており、Apacheライセンスである。最終的に DalvikのソースコードをApacheライセンス下でライセンスすることによって、携帯電話所持者はライセンス費用を払う必要なく使用または修正できる。

 オープンソースではないJavaをどうやってApacheライセンスにできるのか、それについては、なんとも不思議な感じはするが、Apache Harmonyがオープンソースである以上、Dalvikもオープンソースなのだろう。Javaのソースコードが混じっているといったミスがあるとは思えない。また、Dalvikは中間コードでもJavaと異なるので全く別物といえなくもない。<関連>著作権について

 ちなみに、Apache Harmony(Apache Software財団)がOracleから正式なライセンスを受けているかどうかは不明である。少なくとも、TCK(Java互換性テスト)については、ある時点で正規のライセンスを与えられたが、Apacheグループはそれを拒絶しているため、JavaSEの規格を満たすための手段をもたない。したがって、Oracleの保有する特許の利用を第三者に無料で許諾するとしているライセンス条項には当てはまらない。(なので私はOKWaveの回答は?と思っている)


 OpenJDK Community TCK Licenseによって、開発者はOpenJDKプロジェクトに提出するコードの互換性を自らテストすることが可能となります。さらにディストリビューターの側でも、OpenJDKに基づきGPLv2の下で配布される完成したインプリメンテーションのテストを行うことが可能です。組織や個人の開発者が OpenJDK Community TCK Licenseを利用して互換テストにパスした場合は、そのインプリメンテーションにサンの"Java Compatible"の商標とロゴを付けるオプションも設けられています。

 新しいTCKライセンスの詳細については、更新されたOpenJDK FAQ( http://www.sun.com/software/opensource/java/faq.jsp )をご参照ください。・・(米国サン、Java互換性テストの新ライセンスを
OpenJDKコミュニティにリリース



 しかし、著作権の侵害について資料をよく読むと、以下にあるように、必ずしもソースコードに限った話ではなく、(商標などを含む)Javaに関するすべてのマテリアルを含むとなっている。なので、正式にライセンスを受けずにJavaを使って商売をしたという事実がアウトになるらしいのだ。

The Java platform contains a substantial amount of original material (including
without limitation code, specifications, documentation and other materials) that is copyrightable
subject matter under the Copyright Act, 17 U.S.C. § 101 et seq.


 Googleにいわせれば、DalvikはJavaではなく、Javaは使っていません、ということになるかと思う。実際にGoogleは、DalvikはJavaと互換性のないVMインストラクションであり、Javaでないことを強調している。でも果たしてその言い訳が通用するかどうかはわからない。今後の推移を見守っていきたいところである。

Oracleの目的はいったい何なのか



 PublicKeyではOracleの目的について以下のように解説されている。

この主張の意味を理解するには、携帯電話や組み込み機器向けJava環境であるJava MEを思い出す必要がある。旧Sun Microsystemsが開発したJavaテクノロジは、もともと有償で他社にライセンスする形で配布されていた。そして、携帯電話の多くが搭載する「iアプリ」などJava ME(旧称J2ME)の実行環境については「端末1台いくら」という形でロイヤルティが発生している。そして、この権利はSunを買収したOracleが引き継いでいる。私たちが使っている、いわゆる「ガラケー」が1台売れるたびに、Oracleにはお金が入っているのだ。・・(OracleがGoogleを訴えた理由、「AndroidはJavaと競合する」はどういう意味だろうか


 以下の記事(2007年11月20日だからかなり古い記事)には、Java MEの損失について語られている。「誰も使わないJava Micro Editionと共に取り残される」恐怖。それが本当の理由だろうか。


言うまでもなく、SunはいわばDalvikによって出し抜かれ、孤立してしまった。もう、Googleや電話機メーカーからの巨額のライセンス料は期待できない。しかも今後はAndroid/Dalvikが、携帯電話にかぎらず多様な組み込み世界に置けるデファクト標準のJava開発ツール+Java仮想機械になりそうだから、誰も使わないJava Micro Editionと共に取り残されるSunの、未来の損失はさらに大きい。・・( GoogleはOracleのパテント訴訟を根拠レスと一蹴, オープンソースいじめの悪行と呼ぶ)


 さらに、Life is beautifulには以下のようにある。ちょっとムカツクが、正論を振りかざすOracleのスタンスもわからないでもない。

そもそも、スマートフォン以前の携帯電話用のJavaがプラットフォームとして成功しなかった理由の一つは、J2MEが根っこのところで、NTTドコモ独自のDoJaとモトローラ主導のMIDPに分岐してしまったことにあるし、同じJ2ME間でも実装の差異が大きく "write once, run everywhere" が机上の空論になってしまったことにある。Sunがちゃんとリーダーシップを発揮できなかったためである。

 その意味では、J2ME/MIDPとコンパチビリティがなく、Sunから正式にJavaをライセンスしていないAndroidはけしからん、というのは(今はOracleの一部になった)Sunから見れば当然のこと。

 「J2MEの時に何もしなかったくせに、今さら何を言うんだ。モバイルにおけるSunの影響力なんてすでにゼロに近いのに」と思う人も多いだろうが、せっかくSunを買収したのだから「影響力がゼロになる前に何とかしておこう」というのが今回のOracleの思惑なことは明確。・・(Oracleの「Android訴訟」についてひと言


 ここで重要だと思うのは、「今さら何を言うんだ。モバイルにおけるSunの影響力なんてすでにゼロに近いのに」と指摘されていること。(ムカつくが)モバイルの現状をよく表している。日本の「ガラケー」なんて実質的に大した数ではないし、J2MEはAndroid/Dalvikの存在にかかわらず廃れている。つまり、Android/DalvikがJava MEを貶めているなんてとんでもない話だということ。

 そもそもJavaの寿命もとっくに尽きていて、GAEとAndroidによって延命しているというのが私の見方。(Amazon ECとかHadoopとかあるけど、クラウドだってMapReduceだって、火付け役はGoogleだろう!?)
 Web2.0ブームの頃に、Ruby,Perl,Pythonなどのスクリプト言語の台頭があり、忌み嫌われていたJavaは、その後に登場するGAEやAndroid/Dalvikがなければまちがいなく衰退していたはずである。それは以下の記事からも読み取れる。


 この2、3年、Javaは厳しい時期にあったと言ってもよいでしょう。しかし、JavaプラットフォームやJava言語が下り坂にあるとは思っていません。下り坂に陥いる危険はあると思いますが、私はOracleとJavaコミュニティがそうならないようしてくれるものと期待しています。
・・・
みなさんに言っておきたいのは、最近のJavaのサクセスストーリーのおかげで、悲観的な見通しはすっかり消えつつあるということです。特に、Google Collections、Guice、先ほど話に挙がったJVM言語、そして、Androidのおかげです。Oracleによる迅速で断固たる行動と、もっと幅広いJavaコミュニティからの協力があれば、Javaプラットフォームの将来は明るいでしょう。・・・(Javaの将来: Josh Bloch氏との対話


 つまり、熱烈な支持者であるGoogleによってJavaは復権を果たしたわけだが、その最大の功労者を敵に回す行為に出たことになる。そんなことして、Oracleにいったい何のメリットがあるというのだろうか。むしろ天に唾するような行為じゃなかろうか。

 こう考えると、Oracleの意図がますますわからなくなってくる。

 Androidに載せることを強要してJavaMEを発展させていきたいのか、MEは諦めるけどGooleにライセンス料を払ってもらいたいのか、あるいは、Dalvikが暗黙的に許可することになるJVMの独自拡張をやめさせたいのか。それとも妬みからくる嫌がらせなのか?



 一方のGoogleの目的は明確だ。豊富なJava開発者の取り込みとオープン化がAndroidの基本戦略である。Java ME実装において許可されていないUSBやBluetoothのようなコンポーネント用のインターフェースを自由に付加できるようにすることはオープン化によって可能になる。
 また、独自実装によるVMの最適化は譲れない点でもあった。携帯端末ではクオリティの高いアプリケーションが勝負を分ける。iPhone/iPadに比べても見劣りしないようなアプリを書くには低メモリで高速に動作するなど極限にまで最適化したVMは必要なのである。

 先ほどの記事で、Josh Bloch氏はOracleの役割について、次のように述べている。


 Oracle自身が2007年12月12日のJCP ECミーティングで提案した、以下の決議案を成立させてほしいです。
決議案 1 (Oracleによる提案、BEAによる支持)
「JCPが、すべてのメンバが以下の件に公平に参加できる、オープンで独立したベンダー中立の標準化団体になることが、Executive Committeeの意見である。」
 ・・・
 「新たな簡易化したIPRポリシー」に関して、もし、ApacheやBSDのような、広く受け入れられている寛容なオープンソースライセンスがすべてのJava仕様、すべてのコンポーネントに適用されれば、コミュニティ全体に大きな恩恵があると思います。


 今となっては空しく聞こえるだけだが・・

特許 VS オープンソースについて



 今回のようなリスクがJavaに潜んでいるなんて私は全く知らなかった。Googleを含め、世界中のJava開発者も同じ意見だったろうと思う。ただGNUを除いて・・

 

いくらライセンスがオープンなものであれ、大企業が所有しているプラットフォームには開発者としては時間を投資しないのが無難。特に特許が絡んでいる場合は。

やっぱりRMSは正しかった:

http://www.gnu.org/philosophy/java-trap.html ・・(オラクル/google/java訴訟: Mono開発者 Miguel de Icaza の見解


 しかし、今回の件で気づかされたのは、大企業が所有しているプラットフォームに限らず、すべてのオープンソースにとって、特許に違反している可能性を否定できない、ということ。特許免除を受けているオープンソースはあるが、そうでないものもあるから注意が必要である。このことについては、Software Patent Lawsuits Against Open Source Developersが詳しい。
 逆にライセンスを認めることで、特許侵害の可能性を排除できるようにするのは、大企業だけともいえる。(OpenSDKが特許免除されるのは実はライセンスを受けているからである。)


 Javaはフルに互換性のある実装に限って特許をライセンスしている。これが今回の訴訟に中枢になっているようだ。

 GPLバージョンのOpenSDKを使うときのみ特許が免除される。第三者からライセンスの場合は特許免除はあてはまらない、と言っている。


 特許というものはやっかいである。発明者は原則一人とされ、自分の独自のアイデアと思っていても、ほとんどの場合、他の誰かがすでに発明しているものだったりする。

 小企業は特許侵害していても、それに気づかないだけかもしれない。
 Googleも多くの小企業がやっているように特許侵害をしている可能性はある。

 今回侵害されたとされる7つの特許には、セキュリティやアクセスコントロールに関することや、クラスファイルのパッケージ化とプリプロセスに関する方法など、VMに関する基本的なことが含まれている。

You can read the actual complaint, the patents referenced are:




 中間コードをSandboxで管理する方法はセキュリティを確保するうえで有効であるが、これが特許で守られているとすると、あらゆるVMソフトウェアは特許侵害になると思う。(これは私の勝手な拡大解釈であり、特許の範囲でないかもしれないし、Dalvikだけに該当するのかもしれない。よくわからない)

GAEは大丈夫か



 GAEのMLでも活発に意見交換されている。Oracle sues Googke on Java Patents and Copyrightを抜粋する。


I don't think so. The lawsuit is really against the android VM Dalvik.
Since GAE uses openjdk as far as I know, it's not a problem.

・・・
Yep, but it's not the full standard OpenJDK as some classes are not accessible (white list).

I bet Oracle doesn't agree with that.

今回の訴訟は、android VM Dalvikに対してであり、GAEはopenjdkを使っているから大丈夫だと思う。
・・・
でもopenjdkの標準機能ではなく一部利用できなくしているね。(whitelist)
これをOracleは承知しないと思うんだ。



最後に一言。Googleがんがれ


 もういちど、先ほどの記事に戻る。


 このとばっちりを受けるのは、ここまでさんざんAndroidに開発投資をしてきたメーカー。Googleはいったいどう「オトシマエ」を付けるのだろう。

 今からでも遅くはないので、Androidに関わる人たちはJava VM上でのアプリの開発やAPIの実装からは手を引き、(Android上の)WebKit上のHTML5 Widget(参照)の開発にシフトすべきだと思う。・・(Oracleの「Android訴訟」についてひと言


 私はオトシマエをつけろとはいわないが、これからもJavaに少なくとも安全に投資できるように、Oracle、Googleの両者に注文をつけたいと思う。特にGoogleには頑張ってほしい。安易な妥協はせず、Oracleと徹底的に戦って、特許がオープンソースに及ばないようにしてもらいたい。かつて、SCOのUNIX-Linux訴訟で「Linuxユーザーを守る」と宣言したIBMのように。

 Googleには、YoutubeやStreet Viewで著作権問題やプライバシー問題に取り組んでいるように、ソフトウェアの問題についても、この世の中の常識を覆すような、革新的(確信犯的?)なルールを創設してもらいたいと思っている。Googleだったら、やってくれそうな感じでもある。


 Googleは、Youtube、Google Book Searchでは著作権問題を抱えており、Street Viewではプライバシー問題と向き合っている。これらのサービスが問題になることはやる前から分かっていたはずで、googleにとっては、ある程度起こることを見越した問題であったことは間違いないだろう。
 Googleのすごいところは決して目的がぶれず後ずさりしないこと。情報公開の自由化と著作権者保護という2つの相容れない問題を「手打ち」により同時に解決させているが、動画像のアップロードなどは限りなく違法コピーに近く、一見、著作権をないがしろにしているように見えて、一方で著作権者を保護することで著作権者と消費者の双方に支持されるモデルとなった。


追記(2010/11/15)

 Googleはガチンコで反論しているようだ。グーグル、オラクルによる修正訴状のデータ粉飾を主張--Java特許侵害訴訟で


* 「Googleは、米国再発行特許第RE38104号、および米国特許第5966702号、第6061520号、第6125447号、第 6192476号、第6910205号、第7426720号において有効かつ法的強制力のあるいかなる特許請求範囲についても、現在または過去にこれを(直接的に、または寄与や勧誘により)侵害したことはなく、侵害の責任も負っていない」
* Oracleの特許は、再発行のクレームが原特許の付与から2年以内に提出されていないため、法的強制力はない。
* 「Androidプラットフォームは、Android OS、Androidソフトウェア開発キット(SDK)、「Dalvik」仮想マシンを含め、独自に開発されたものであり、登録済み著作権によって保護されたいかなる著作物も参考にしていない」
* 第三者による侵害はあるかもしれないが、Googleはその責任を負っていない。


追記:(2010/11/22)

Apacheに新たな動きがあったようだ。

Apache、Javaコミュニティー脱退を示唆――Oracleのテストキットライセンス拒否に反発


 この論争の中心は、TCKに対して現在設けられている「Field of Use(FOU:利用分野)」制限だ。FOUは、対象となる製品が実行可能あるいは不可能なプラットフォームを規定する。例えば、Harmonyベースの製品は携帯端末上では動作できないとFOUで指定することも可能だ。ASFにとっては、同団体のライセンスを修正しない限り、このルールを適用するのは非常に困難だろう。もちろん、このような条件はオープンソースのコンセプト自体とも対立する。

 データベース大手のOracleでは、FOU条項抜きでHarmony向けのTCKライセンスをASFに提供するつもりはないとしている。米 Sun Microsystemsは2006年の時点で、Java SEのTCKでFOU制限を要求しており、ASFはこれを全面的に拒否した。OracleはSunの買収に伴ってJavaを取得したことで、この論争を復活させた。皮肉なことに、Oracleも当初、Harmonyの支持企業として、TCKを制限なしで提供するようSunに要求していた。OracleはSunの買収が完了した後で態度を翻したのだ。


 
© 2006-2015 Virtual Technology
当サイトではGoogle Analyticsを使ってウェブサイトのトラフィック情報を収集しています。詳しくは、プライバシーポリシーを参照してください。