スタートアップの目標が iPhone アプリを作成することである場合、明らかに、iOS アプリケーションが構築されている言語である Objective-C を学ぶ必要があります。あなたのチームはすでに C の経験があるので、非常に簡単に始めることができます。Big Nerd Ranch の本を読めば、1 週間か 2 週間で使い始めることができます (私は Big Nerd Ranch とは関係ありませんが、単に素晴らしいと思います)。
チームに C#/.NET の経験がないことを考えると、MonoTouch を持ち出す理由がわかりません。Titanium SDK (JavaScript)、RubyMotion (Ruby) など、MonoTouch のようなフレームワークは他にもたくさんあります。これらはすべて素晴らしいものですが、私が見たところ、主にそれぞれの言語の経験がある人向けです。これらを使用すると、使い慣れた言語を使用して iOS アプリケーションを作成できますが、次の欠点があります。
- パフォーマンスは、Objective-C で記述されたアプリケーションと同じくらい良い場合もありますが、通常は少し (場合によってはかなり) 悪くなります。
- 学習用のリソースは、iOS SDK/Objective-C ほど豊富ではありません。iOS アプリを作りたいと思っている人はたくさんいますが、そのうちの何人かはこれらのフレームワークを使用しており、それらの間で希薄化しています。iOS 開発に利用できるリソースのごく一部だけが、特定のフレームワークに割り当てられます。
- これらのフレームワークは iOS SDK/Objective-C に基づいているため、当然ながら開発は常に遅れをとっています。Apple が iOS SDK の次のバージョンで根本的に新しい API をロールアウトした場合、これらのフレームワークが適応するまで待つ必要があります (Objective-C で記述されたアプリケーションも壊れる可能性がありますが、それに基づいて対処する方が簡単です)。ポイント#2)。
- これらのフレームワークのほとんどは、iOS SDK に精通している必要があります。アプリケーションが起動時にメソッドを呼び出すことを知る必要があり
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
ますが、さらに、それを MonoTouch: の適切なメソッドに変換する方法を覚えておく必要がありますpublic override bool FinishedLaunching (UIApplication app, NSDictionary options)
。iOS SDK は大規模であり、ほとんどの iOS 開発者は洞察を得るために Apple のドキュメントに依存しています。そのため、Objective-C 用に記述された API ドキュメントを参照し、メソッドを選択したフレームワークに変換します。
- Objective-C エコシステムは常に進化しており、 CocoaPods、bwokenなどのクールな新しいプロジェクトがあります。これらは主に Objective-C と Xcode を念頭に置いて開発されています。選択したフレームワークで動作するようにそれらを構成すると、ほとんどの場合、余分な時間と作業が発生します。
上記の点により、一般的に、これらの他のフレームワークのいずれにも深く入り込むことができなくなりました。それらはすべて非常に優れていますが、採用における主な利点は、Objective-C 以外の深いスキルセットを持つ人々の開発を促進すること、または AndroidとiOS に投資するリソースが不足している小規模なチームのクロスプラットフォーム開発を可能にすることです (そしてWindows Phone) プログラマー。うまくいけば、利点が採用者にとって上記のコストを上回ります.
また、MonoTouch での記述は、Android とのクロスプラットフォーム開発にメリットがありますか?
そうだと思います。実際、MonoTouch のホームページは、フレームワークを使用する主な利点としてそれを宣伝しています。ビュー/コントローラー クラスについてはよくわかりません。これらは に関連付けられているように見えるためですUIKit
が、モデルにカプセル化されたロジックはかなり簡単に移植できるはずです。
簡単に言えば、あなたとあなたのチームは iOS 開発に Objective-C を使い続ける必要があると思います。