2010年4月12日月曜日

Flash2iPhone変換オワタ。残念だ。しかし契約は契約だ。 | iPhone SDKへの不満に対するジョブズの回答:中間レイヤーは水準以下のアプリをもたらす - Tech Crunch Japan

iPhone SDKへの不満に対するジョブズの回答:中間レイヤーは水準以下のアプリをもたらす - Tech Crunch Japan

・・・AppleがiPhoneのSDK契約を改訂し「翻訳あるいは互換のための中間レイヤーを介して公式APIにリンクするアプリケーション」を禁止したとことだ。この結果Adobeから近日公開されるFlash-to-iPhone変換ツールをはじめとする多くの開発ツールが使えなくなる・・・Jobsの次の返信は数分後に届きこう書かれていた。私たちも以前その世界にいましたが、プラットホームとデベロッパーの間の中間レイヤーは、究極的に水準以下のアプリケーションをもたらし、プラットホームの進歩を妨げるものです。・・・

なんてこった!


ホントに本当か?契約書を確かめる

確かにSDKをアップグレードするときに契約が改訂されたので再度承認を、と促された。で、いつもの悪いクセで何も読まずに「Agree」ボタンをクリックしていたのでそんな事は全く気づかなかったが、ホントに本当なのか?

iPhone Dev Center - Apple Developerの上のほうにある「Member Center」>「Your Account」>「Legal Agreements」で自分が過去にAgreeしたドキュメント群がある。そのうちの「iPhone Developer Program License Agreement」(2010.4.08版)を確認してみると確かにこうある。

3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

要するに、C, C++, Objective-C, JavaScriptのどれかの言語で書かれたプログラムしか認めんぞ!と。

特に重要なのは「e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited」。例えば、変換かますのはダメよ、と。


Adobeのご苦労、お察しします

夢のFlash2iPhone変換は夢にオワタ。こうなった以上、開発者としてこの手法は使えない。Jobs氏はここまでFlash叩きをやるのか。徹底的だ。

本当にAdobeが哀れに思えてくる。相当このために投資したはずなのに、全て水の泡だ。Flash CS5に搭載される予定のiPhone変換機能も意味をなさなくなるので、削除することになるのではないだろうか。となると、リリースが遅れることになりそうだ。

AdobeもAppleのようにリリース直前までFlash2iPhoneの情報を隠して準備できた段階で一気に発表して既成事実を作ってしまう、という戦略もあっただろうが、その前に開発者がFlashを離れて行ってしまうことを恐れてそう出来なかったのかもしれない。


Appleの、Jobs氏の開発者に対するひとつのメッセージ

一方、Jobs氏の方針としては「iPhoneに集まるアプリは優秀で高性能でなければならない」ということなのだろうが、もちろんそれだけではないだろう。

ひとりのFlash/Flex開発者としては非常に残念だが、実際はFlash2iPhone変換に期待していなかったのも事実だ。なぜなら経験上、こういった変換がうまく動いたためしがないからだ。

この点ではJobs氏と同意見かもしれない。

程度の差はあっても、どうしてもネイティブ言語で最適化されたプログラムにはかなわないので、プログラムが初めから障害をもつ事になる。また、機能的に制限されることも多くなり、開発に対するイマジネーションが制限されることもある。つまり、総合的にユーザーにとって良いアプリケーションを作りづらくなる。

さらに言えば、マルチプラットフォーム性を確保すること、つまり開発者が楽をする代わりにユーザーメリットを犠牲にしなければならない場合がよくある。これはJavaやActionScriptというVM系の言語を経験してきた結論だ。

これから自分はユーザーのために、マルチプラットフォームの言語の習得よりも複数のネイティブ言語の習得に重点をおかなければならない。だからFlash2iPhoneができるようになるらしいと聞いてもわざわざObjective-Cを学んできたのだが、どうやら正解だったようだ。

Apple、Jobs氏からの開発者に対するひとつのメッセージは、「開発者よ、甘えるな。今こそユーザーの立場になって開発する時だ」ということではないだろうか。


とにかく、契約は契約だ

この条件に対して色々と異論があるようだが、当然だと思うし理解できる。しかし、契約は契約だ。iPhoneのプラットフォームはいかんせんAppleのものだ。嫌なら破棄してAndroidなど他のプラットフォームで書けばいいだけだ。そして自分は、歓迎はできないものの、この条件を飲むことにした。

ひょっとして、飼い慣らされている?でも、自分で選択したんだから、そうは思わないけど。