先日のAppleのiPhone OS 4.0の発表と同時に、iPhone Developer Program License Agreementの変更があり、以下の文言追加された。
アプリケーションは文書化されたAPIのみ使用可能で、プライベートAPIを利用してはならない。
アプリケーションはObjective-C、C、C++またはJavaScriptで書かれていなければならず、
C、C++やObjective-Cで書かれたコードのみがコンパイルしたり文書化されたAPIに直接リンクできる。
(トランスレーションまたは互換レイヤーやツールを介して文書化されたAPIにリンクするアプリは禁じられている。)
つまりFlash、.Net(C#)などで記述されコンパイルすることでiPhoenで実行可能なアプリケーションとなるような、中間コードを利用してiPhoneアプリケーションを作成することが禁止になった。これは、特にAdobeの新製品であるCS5に搭載される予定だった「Packager for iPhone」機能を狙い打った規約変更だといわれており、MonoTouchのような.NetタイプのC#で記述された中間コードを利用するアプリケーションが登場していたころはこれを禁止するような動きはあまり見られなかった。その後の騒動などはこのブログのエントリーなどが詳しい。
さて、ネットを見ているとこれに対していろいろな意見や感想が見受けられ、コンテンツプラットフォームの話題が好きな僕としても見逃せないケーススタディになりそうなので、簡単に雑感と、この件の肝となるクロスプラットフォームについてまとめたい。
そもそもこんな暴挙をしているとAppleは開発者や企業の支持を失うよ説
以下のような感情を持つ開発者のブログを読むと、このAppleの独善的なやり方に嫌悪感を持つ理由がよくわかる。
このことに危機感を持たない開発者がいたらおかしいよ。どの言語を選択するかは開発者の権利だし、開発者の環境を縛っていいのは顧客だけだ。プラットフォームベンダにどうこう言われる筋合いはないし、そんな要求に唯々諾々と従ってはいけないと思う*2。Appleは越えてはいけない一線を侵してしまったし、当面iPhoneOS上でアプリを書く予定のないおれにとってすら、これは吐き気がするほどの嫌悪感を抱く暴挙なんだ。
以前、AppleがApp Storeで行ったエロアプリ全面禁止に関して以下のエントリーを書いた。
この規約を変更することで、過去に許諾したアプリを取り消すという行為は、今までのコンテンツプラットフォームを見てもかなり異質な行為だと思う。たぶん探せばあるんだろうけど、少なくともゲームコンテンツでそんな事例は聞いたことない。今回の事例と、エロアプリの全面禁止の事例で以下のリスクがiPhoneに関わる企業、開発者に常に存在することが発覚した。
- Appleが発展したいと思わない方向に存在するはアプリはAppleの都合だけで禁止になりApp Storeから削除される可能性がある。
- 開発環境さえもAppleが意図しない方向に存在する場合は、禁止になる可能性がある。
- Appleが関係ない部分でお金が動く(iADとadmob、OpenFeintとGame Center)と、その部分にAppleは進出する。
これで一つはっきりしたことがある。iPhoneというプラットフォームでは、ある一定以上の規模のビジネスを成功させるには、Appleが敷いたレールの上を走り切るしかない。それは、つまりAppleが提供する真っ当な開発環境で開発し、Appleが望むiPhoneアプリを作成し、App Storeでのみお金が動く様(つまり常に3割はAppleにお金がはいる形で)に売る、ということだ。
Appleは今回の一件で、裏にどんな意図があろうと、表ではできるだけ平等にコンテンツを扱う、というプラットフォームの大原則もぶち壊した。もう、今後、App Storeで成功しようと思ったら、Appleの足の裏を舐めきる覚悟が必要だと思う。このリスクはすごいが、逆にプラットフォームとしてのリスクが増したことで、リスクテイカーが現れてくるだろうし、面白いことも起きてくると思う。喜んでいたFlash開発者には気の毒としか言いようがないが、CS5が発売する前でむしろ良かったくらいに考えるべきか。
あと、「Appleが横暴なのは昔から」という意見もいくつか見受けられるが、やはり今回の一件はApp Storeというプラットフォームを語る上で、その特徴として特筆すべき事例なのではないかと思う。
そもそもクロスプラットフォームがコンテンツプラットフォームにとってどのような意味をもつのか
あまり、この部分に言及しているブログが少ないので「そもそもクロスプラットフォームがコンテンツプラットフォームにとってどのような意味をもつのか」についてまとめておきたい。ゲームコンテンツでクロスプラットフォームを行う場合は、例えば「PC、XBOX360、PS3のクロスプラットフォーム」を行う場合ならば、ゲームエンジンをC++で記述し、上回りの制御をスクリプトで記述可能にする、というのが一般的だと思う。さて、このクロスプラットフォームにiPhoneを加えるかというと、そもそもiPhoneは解像度が異なるし、インターフェースもタッチメインなのでたぶん行わない。ただ、このクロスプラットフォームは言語がC++なのでスクリプト部分をちょうどLuaのチャンクのような機構を使って一緒にパッケージ(コンパイル)してしまえば可能なわけだ。
今回の件で禁止になったのは、以下のクロスプラットフォームである。
- FlashによるソーシャルゲームとのFacebookアプリ(mixiも?)、Android、iPhoneとのクロスプラットフォーム
- C#によるSilverlightベースのFacebookアプリ(mixiも?)、iPhone、もしかしたらWindows Phone 7も含むクロスプラットフォーム
Flashによる安易なアプリの開発を防ぐという表向きの理由を覗き、クロスプラットフォームという観点から見ると、Appleは他のスマートフォンプラットフォーム、Webとのクロスプラットフォームを拒否したかったのではないかと思う。クロスプラットフォームというものは、うまくいくとそのアプリケーションがそのプラットフォームの命運を決めてしまえるほどの影響力を持つようになる。たとえば、欧米で1000万本を超えるGTAやコール オブ デューティシリーズがXBOX360とPS3のどちらかにしか提供されない、と決まった瞬間かなり片方のプラットフォームは劣勢になるだろう。ただし、この様にゲームタイトルがモンスター化するタメには、長いブランディングとファンを集める地盤固めと、技術やゲーム方法論の獲得が必要となる。Appleがこのタイミングでソーシャルゲーム関連の安易なクロスプラットフォームを絶った理由は、一般にいわれている完成度の低いアプリケーションが大量に出回るのを防ぐ他に、そのようなモンスタータイトルが出現することを未然に防ぐ目的もあったのではないか。
そんなわけで、iPhoneが現状No.1のスマートフォンプラットフォームであることはかわりないので、今後の展開を注意深く見守りたい。個人としては、ちょうど以下のエントリーの様な気分です。