web-dev-qa-db-ja.com

MonoTouchはiPhoneで禁止されていますか?

John Gruber による最近の投稿は、次の法律上のことを指摘しています。

_3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs._

次のように改訂されました。

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).

そして、次の観察を行います。

この新しい言語の私の読み方は、Adobeの今後のFlash Professional CS5リリースのFlash-to-iPhoneコンパイラなどのクロスコンパイラは禁止されているということです。これは、MonoTouchを使用してコンパイルされたアプリも禁止します。MonoTouchは、C#および.NETアプリをiPhoneにコンパイルするツールです。

これは実際、IPhoneでのMonotouchの使用を禁止していますか?

156
tom greene

更新-

この 最近変更された 。 MonoTouchが契約と競合することはなくなります。以下の記述はすべて純粋に歴史的なものです!

はい、元のアプリケーションがC#で記述されている場合、ライセンスに違反することになるので、ライセンス契約からはかなり明確に見えます。

...アプリケーションは、iPhone OS WebKitエンジンによって実行されるObjective-C、C、C++、またはJavaScriptで元々書き込まれている必要があります...

彼らはさらにそれを少しでも打ちます:

中間の翻訳または互換性レイヤーまたはツールを介して文書化されたAPIにリンクするアプリケーションは禁止されています

残念なことに、MonoTouchとFlash CS5-> iPhoneコンバーターはとてもクールです。

88
Lance McNearney

更新:

Appleは、iOSの言語とライブラリの(ほぼ)すべての技術的要件を廃止したため、MonoTouchは間違いなく実行可能なソリューションです。Appleの発表


ここでのほとんどの人は、Appleの文書をWordで受け取り、「はい、禁止されています」と言いたいだけです。さて、ここに私の視点があります:この時点で、MonoTouchが禁止されるかどうかは誰にも分かりません。その理由を説明します。

Apple契約バージョン3(最新ではなく、以前のもの))は、Appleが提供するもの以外のアプリケーションを開発するために他のフレームワークを使用することは違法であることを明確に述べています。

3.3.2アプリケーション自体は、プラグインアーキテクチャの使用、他のフレームワーク、他のAPIの呼び出しなどを含むがこれらに限定されない、いかなる手段によっても他の実行可能コードをインストールまたは起動することはできません。 Appleの文書化されたAPIおよび組み込みインタープリターによって解釈および実行されるコードを除き、解釈されたコードをダウンロードしたり、アプリケーションで使用したりすることはできません。 http://adcdownload.Apple.com/iphone/iphone_sdk_3.2__final/iphone_sdk_agreement.pdf

たとえそうであったとしても(実際には2.x以降のケースでしたが、Appleはそれを正確に行うアプリケーションを受け入れることに問題はありません。たとえば、すべてのEAゲームはLuaスクリプトを使用し、多くの人が、iPhoneにネイティブではない外部ライブラリを使用しています。iPhoneにこれらのネイティブAPIがある場合でも、Apple SQLiteのように、異なるバージョンのアプリケーションの受け入れに問題はありませんでした。

私の要点は、「はい、禁止されます」と言うのはただ単に早すぎるということです。この時点で唯一明確なことは、Applecouldが実際にアプリを禁止するためにそれを使用していることです。一部のルールに違反している今日のアプリは、おそらくそうし続けるでしょう。

また、現在Monoを実行しているストアには数百(またはおそらく数千)のアプリがあり、Appleはこれらのアプリの更新を受け入れる必要があります。 Mono(およびLua)を使用して作成されたため、すべてのユーザーに払い戻しを行うことはできません。

最後に、エンタープライズアプリケーションはAppleの承認なしにiPhoneに展開されます。これはMonoTouchが存在する大きな市場です(私自身はエンタープライズアプリを開発しています)。この時点でAppleはそれらのアプリケーションのMonoTouchを禁止することはできません。おそらく、MonoTouchを長期間存続させるのに十分でしょう。

49
Eduardo Scoz

更新:

セクション3.3.1、3.3.2、および3.3.9の新しい変更により、MonoTouch(および他のすべてのクロスコンパイラ/言語/など)がiPhoneで完全に受け入れられるようになりました。 Appleの 発表 を参照


ミゲル はそう思わないようです。 Tweet およびMiguelの response を参照してください。ここで過剰に反応して、Monotouchが死んだと言ったり、関係者全員が何らかの明確化を行うまでMonotouchでの開発を停止したりしないでください。

つまり、このような過酷な開発ポリシーについては、間違いなくAppleに熱心になり始めます。次は、使用が許可されている唯一の広告プラットフォームはiAdであると述べているライセンスですか?iAdなしで無料アプリの配布を許可していないか?エコシステムを停止すると、私たちはお湯の入ったカエルのようになり、Appleはゆっくりと熱を上げています。 、Appleプラットフォームに人々を拘束する主なものは、他のプラットフォームにアプリケーションがないことです。

27
Kris Erickson

Objective CでiPhoneのキラーアプリのアイデアを数か月間かけて過ごしました。私の仕事はC#です。 MonoTouch C#が実行可能な代替手段になったときにダウンロードし、3か月かけてコードをiPhone固有のMonoTouch C#に変換しました。 C#/ Objective Cから切り替えることで気が狂いました。

今、私はそれをすべて捨ててやり直しますか、あきらめますか!?!

モノの人には本当に申し訳ありません。これは明らかに間違っています。製品を発売しておらず、顧客がいないAdobeを停止し、AppStoreで製品を承認し、承認したMonoTouchを停止することも1つです。

なぜ誰もがビジネスを立ち上げて、Appleに答えたり、疑問を抱かずにすぐにそれをすべて取り去るのに投資したいのですか?

明らかにAppleの開発者と顧客は、彼らとその製品の世話は一方通行です。

10
AnthonyLambert

Appleが踏みにじられることを望みます。Ar慢は魅力的ではなく、一般的にはビジネスに悪いものです。

ほとんどのハードウェアおよびOSプロバイダーは、プラットフォームに書き込むための追加のツールとオーディエンスを喜んで提供しています。 Appleは、その(ブレインデッド)ツールが町で唯一のゲームであるというスタンスを取っています。

1984年の「ビッグブラザー」広告はますます関連性が高まっています...

編集

また、その記述方法は、Objective C/Appleトランスレーターに.netを書いた場合、元のコードがObjective Cではないためコードが受け入れられないことを暗示しているようです。

9
Tim

新しいライセンス契約はそれについて明確に明確です。はい、禁止されます。

あなたが本当にiPhone向けに開発したいのであれば、XCodeを試してみてください。すでにJavaまたはC#またはそれ以上のC++に精通している場合、Objective-Cの学習はそれほど難しくありません。

iPhone/iPadはAppleの新しい成功するビジネスであり、彼らはこのビジネスを成長させ続けるために何でもします。おそらくMonotouchアプリを禁止しないかもしれませんが、誰が次の動きを知っているでしょうか?ですから、もしあなたが本当にiPhone開発に本当に興味があるなら、あなたの仕事がただ拒否されるかもしれないという悪夢を抱く代わりに。 XCodeに切り替えるだけで、少なくともアプリの拒否率は低くなります。したがって、私のアドバイス。

7
medopal

nity もMonoに基づいており、それがかなりの量の商用製品であることから、これはまだ終わりを聞いていない問題だと思います。

Obj-C/C++で書かれていないすべてのアプリを禁止すると、理論上はすべてのUnityゲームも禁止されます。Unityゲームの多くは既にアプリストアにあります。

この質問はUnity Answersサイトでも確認されており、公式の回答は次のとおりです

「私たちはiPhone OS4.0と新しい利用規約について聞いたばかりです。これらに完全に準拠していると信じていますが、Appleがこれを確認するためにできる限りのことをしています。もちろん、その情報をすべての人と共有します。この件については、しばらくお待ちください。」

彼らがAppleから何を言われるのかを見るのは面白い。

確かに、アプリは特定の言語でwriteする必要があると言っているのは、アプリがコンパイルされると少し間違った呼び名です。構築方法に関係なく、常にネイティブバイナリです。私が推測するのは、彼らが探すことができるのは、それがどのツールで構築されたかを検出するためのバイナリのある種の署名だけだということです。欠陥のあるアプローチ。

EDIT:このブログには、状況の興味深い概要があります: monotouchは今、水で死んでいます。Appleの新しいiPhone開発者契約はどういう意味ですか?

7
Ira Rainey

強く考慮すべきことは、Appleの動機だと思います。

Appleはアプリケーションのコモディティ化を防止しようとしています。つまり、複数のデバイスで実行できるアプリケーションを生成するフレームワークを使用して、より多くのアプリケーションを作成しています。

しかし、それはMonotouchとは異なります。 Monotouchとは、Appleフレームワークを使用してアプリケーションを作成することですが、Objective-Cではなく、Monoを使用します。そのため、Monotouchが行っていることはAppleを本当に悩ませるものではありません。

開発者は、使用しているプラ​​ットフォームのネイティブ言語で記述したほうが良いと考えています。抽象インピーダンスの不一致が発生する可能性のあるシステムを導入しないと、物事が一般的にスムーズになるためです。Cocoaフレームワークはすべて、 Objective-C。Objective-Cの哲学に慣れているときに最も意味があります。しかし、私はAppleがMonoTouchの使用を許可する側に落ちてくることを願っています。

すべてのAppleは、すべての人が1980年代の言語を使用して、競合する最先端のモバイルアプリケーションを開発する必要があると言っています。..

完全に理にかなっています。私にとって勝利戦略のように思えます。

また、ストレートC、C++、またはObjective Cで開発されたことを保証できないサードパーティライブラリを使用することもできません。

基本的に、UnityなどのGames APIを購入できないことを意味します。

5
AnthonyLambert

今日の時点で、Apple iOS Developer Program Licenseのセクション3.3.1は古いテキストに戻りました:

3.3.1アプリケーションは、Appleで規定されている方法でのみ文書化されたAPIを使用できます。プライベートAPIを使用または呼び出してはなりません。

Appleは、ライセンスの変更に関する 公式声明 をリリースしました。

これは、MonoTouchを使用できるようになったことを示しています。

4
Jeff

ちょうど私の2セントを追加します。この部分を読んだ後:(たとえば、中間の翻訳または互換性レイヤーまたはツールを介して文書化されたAPIにリンクするアプリケーションは禁止されています)話し合う。彼らはそれらを明確に表明しました。 MonoTouchとUnity3dを禁止しているだけでなく、 Titanium Framework も禁止しているようです。しかし、 this の記事を読んだ後、私は本当に混乱していることがわかりました。私は米国の法律に精通していませんが、合法ですか?つまり、彼らはいくつかの独占禁止法を破っていませんか?

これらすべてのほかに、私は彼らの動機を理解できません。開発者の関心を部分的に失うだけでなく、開発者の尊敬も失われると思います。

4
n535

このGoogleドキュメントのスプレッドシート には、新しい契約の影響を受けるアプリの長いリストがあります。カテゴリのアプリストアで1位になっている注目すべきもの:

  • 独占
  • レモネードタイクーン
  • スキーボール
  • 入植者
  • ゾンビビル

面白いインクルージョンの1つはトイストーリーです。

2
Chris S

o数日以内にモノタッチと統一の助けを借りて書かれた多くのアプリが受け入れられましたが、私はobj-cと同様にそれを使用しています。 ol'WTFが思い浮かびます。双子の貯金箱のようです。

HOT NEW GAMES-YESTERDAYの下にある最後のUnity Game GiantMOTOも、スプラッシュスクリーンに大きな文字でonLoadがあり、POWERED BY UNITYがあります。そのため、すべての推測、仮定などは本当に外に出ています。新しいバージョンでは、それは確かに強制されていないと言うかもしれません。また、montouchは、iPhone APIを完全に公開し、XCodeを使用してobj-cに完全にビルドする唯一の開発プラットフォームです。

2
Sebas

フラッシュの大惨事から数ヶ月が経ちましたが、MonotouchとUnityがうまく機能していることは明らかです。

「中間翻訳または互換性レイヤーまたはツールを介して文書化されたAPIにリンクするアプリケーションは禁止されています」

Monotouchはコードをネイティブバイナリにコンパイルします。「レイヤー」はありません。これらは、.NETランタイム、Java JVMまたはFlashランタイムのようなものを指します。

1
Doobi

契約内のすべてのblobに対する簡単な答えは[〜#〜] yes [〜#〜]です。

Appleは基本的に、プログラムをいくつかの言語に制限することにより、自らを立ち直らせています。

  • C-低レベルの性質のため、最近のアプリケーション開発にはあまり適していません。現在はほとんどがシステムプログラミング言語です。
  • C++-携帯電話の撮影が難しくなりますが、発生した場合はバズーカを使用します。 Qt以外に、C++で使用できる完全なアプリケーションフレームワークはありません(QtはiPhoneをまだサポートしていません)。
  • Objective-C-Appleによって発明され、もちろんサポートされます。
  • WebKitで実行されるJavaScript-基本的にはWebアプリケーション。

彼らはあなたがiPhone用に開発するために使用できるツールを意図的に制限しているので、ほぼ確実に深刻なトラブルに巻き込まれます。コミュニティのかなりのサイズのチャンクがiPhone開発を終了し、Windows Mobile、Symbianなどの別のプラットフォームに移行すると確信しています。AndroidまたはMaemo、完全にオープンです-無料LOLCODEでアプリケーションを作成します。

おそらく開発者向けにiPhoneをジャンクにするだけでなく、Adobeにもいいキスをします:Apple iPadからFlashを故意にブロックし、iPhoneからもブロックしています。機能は、FlashアプリケーションをiPhoneに展開しています。

tl; dr: Appleは基本的にこの動きで足元を撃ちます。

1
CMircea

通常、Monoアプリケーションはバイトコードにコンパイルされますが、実行するにはJIT(ジャストインタイム)コンパイルが必要であるため、.NetフレームワークまたはMonoフレームワークが必要です。ただし、iOSおよびAndroidの場合、Monoアプリケーションはネイティブコードにコンパイルされます。したがって、Appleの目には、3番目のlayer、AppleはMonoを禁止することはありません。MonoTouchでの開発とアプリの配布を気軽に行うことができます。さらに確実にするために、AppStoreにはさまざまなMonoアプリケーション(ゲームやアプリケーションを含む)が長い間存在しています。

1
Peyman

ライセンス契約によると、MonoTouchアプリは明らかにAppStoreで許可されません。

しかし、より興味深い質問は、どのフレームワーク/アプリに対してそれを実施するのでしょうか?また、アプリを承認した人はすべてのアプリでそれを行う時間/スキルを持たないため、アプリがネイティブで作成されたかどうかを確認する自動テストを作成する必要があります。これらのアプリには、「Using MonoTouch/Flash」というステッカーはありません。

1
mgw