WWDCで発表されたiOS 4。撮影:Yoichi Yamashita

6月7日のWWDCで発表されたiOS 4の次期SDK(iPhone OS 4 SDK)新規約について、広告ネットワークに関する話題をフォローしたが、サードパーティ排除というそもそもの話題の発端となった開発ツールに縛りを加える規約「Section 3.3.2」については、その後あまりフォローされることはなかった。今回、これについて若干の進展があったことをレポートしておこう。

以前の「【レポート】Apple、「iPhone OS 4 SDK」規約変更 - Flash CS5/MonoTouch排除へ」でも紹介したように、Appleは次期SDKの規約で「ソースとなる開発言語はObjective-C/C/C++あるいはJavaScriptのみが許可され、これらだけがコンパイル後にiPhone APIへとアクセスできる」「アプリ内での中間言語の使用やダウンロードは禁止する。例外はDocumented APIとビルトイン・インタプリタのみ」と記されている。これは、ActionScriptをソースコードとするFlashや.NETを基本フレームワークとするMonoTouchなどの開発ツールやフレームワークを排除するのが狙いとされている(TitaniumなどのWeb標準言語を使用するフレームワークはグレーゾーンとされている)。

また中間言語やインタプリタのような仕組みも禁止されるため、スクリプト言語やQtのようなフレームワークだけでなく、ゲームなどでよく使用されるUnity 3Dなどの処理エンジンも対象となり、この規約の拡大解釈を続ければ「App Storeに登録されているかなり大多数のアプリが規約違反になる」という状態になりかねない。だがApple Outsiderによれば、6月7日に改定されたSDKの新規約で、こうした中間実行形式のフレームワークをある程度許容する文言が追加されたようだ。

OutsiderがiPhone Developer Program License Agreementから転載した、中間実行形式についての記述が行われた「Section 3.3.2」の内容を引用すると、次のようになる。

No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple’s Documented APIs and built-in interpreter(s).

これが旧バージョンのもので、下記が改定された新規約となる。

Unless otherwise approved by Apple in writing, no interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple’s Documented APIs and built-in interpreter(s). Notwithstanding the foregoing, with Apple’s prior written consent, an Application may use embedded interpreted code in a limited way if such use is solely for providing minor features or functionality that are consistent with the intended and advertised purpose of the Application.

中間実行形式について、以前のものは「一切例外なし」という比較的語調の強いスタンスだったものが、新規約では目的によって許容されると、表現が若干軟化している。これは、アプリによっては、前述のゲームのような他社製処理エンジンを搭載していたり、必要に応じてミドルウェアを組み合わせる例などが多数存在することを、Apple自身が内々的に認めたものとみられる。

つまり、こうした処理形態によっては必須の仕組みを部分的に取り込むものと、Flashなどのようにそもそも最初からメタフレームワーク環境構築を狙ったものとを明確に切り分けるのが狙いのようだ。

もっとも、表現自体は特定ベンダーを狙い打ちしたものではなく、いまだ曖昧なままなため、こちら側では意図を汲み取る以外の方法はない。実際、App Storeの審査から落とされたり、登録後も何らかの理由によって削除されるまで、すべてはApple側のさじ加減1つで決まるからだ。