今日、地元の .Net イベントで Mono に関するセッションに参加したところ、iPhone 開発の代替手段として MonoTouch の使用が「触れられました」。C# と .Net に慣れている私にとって、Mono スタックの奇妙な点にもかかわらず、これは魅力的な選択肢のように思えます。ただし、MonoTouch は 400 ドルもするので、iPhone 開発にこれが適しているかどうかは、少し迷っています。
MonoTouch と Objective-C での開発経験がある方はいらっしゃいますか。もしいらっしゃるなら、MonoTouch での開発は Objective-C を学ぶよりもはるかに簡単で迅速であり、400 ドルの価値があるのでしょうか。
ベストアンサー1
最近、この質問(およびそれに似た質問)をよく見かけます。驚くのは、多くの人が回答しているのに、回答する人が非常に少ないことです。
私には好みがあります (どちらのスタックも気に入っています) が、ほとんどの「答え」はここで間違い始めます。それは私が望むこと (または他の誰かが望むこと) に関するものではありません。
MonoTouch の価値を判断する方法は次のとおりです。もちろん客観的には判断できませんが、かなり熱狂的ではないと思います。
これは趣味ですか、それともビジネスですか? この分野でコンサルティングを始めたい場合、399 ドルをすぐに回収できるでしょう。
プラットフォームを徹底的に学びたいですか、それとも「単に」そのプラットフォーム用のアプリを書きたいだけですか?
.Net が気に入っているので、別の開発スタックを使用すると楽しさが失われてしまうと思いますか? 繰り返しますが、私は両方のスタック (Apple と Mono) が好きですが、MonoTouch を使用するとさらに楽しくなります。Apple のツールの使用をやめたわけではありませんが、それは主に両方のスタックを本当に楽しんでいるからです。私は iPhone が大好きですし、.Net も大好きです。その場合、私にとって MonoTouch は迷うことなく選択できました。
C での作業に抵抗はありませんか? Objective-C ではなく、Cです。Objective-C は C なので、これは重要です。これは、素晴らしく、洗練されていて、使いやすい OO バージョンですが、ポインターが苦手な場合は、MonoTouch がお勧めです。ポインター (または C など)が嫌いな場合は、開発者としての弱虫だと考える否定論者の言うことに耳を傾けないでください。私は、IBM ROM BIOS Pocket Reference のコピーを持ち歩いていました。アセンブリ言語を書いて、コンピューターを奇妙なビデオ モードに強制し、それらのフォント レンダリング ビットと (確かに粗悪な) ウィンドウ システムを作成していたとき、QuickBasic 開発者が弱虫だとは思いませんでした。私は(他の開発者に加えて) QuickBasic 開発者でした。オタクの男らしさに決して屈してはいけません。 C が好きでなく、ポインターも好きでなく、手動のメモリ管理をできるだけ避けたい場合 (公平に言えば、ObjC でもまったく悪くありません)、MonoTouch をお試しください。そして、そのことで不平を言う必要はありません。
ユーザーと企業のどちらをターゲットにしたいですか? 私にとっては大した問題ではありませんが、Edge を使っている人もまだいますし、実際、Apple のスタックを使用すれば、はるかに小さいダウンロード パッケージを作成できます。私は MonoTouch で遊んでいて、圧縮すると約 2.7 MB になる、まともな小さなアプリができました (配布用にアプリを送信するときに、zip 圧縮します。アプリはストアからダウンロードされるときに zip 圧縮されます。そのため、アプリが 10 MB の OTA 制限を下回るかどうかを調べるときは、まずアプリを zip 圧縮してください。MonoTouch できっとうれしい驚きが得られます)。しかし、MT の満足度はさておき、エンド ユーザーをターゲットにしている場合、0.5 MB とほぼ 3 MB (例) は重要な点かもしれません。エンタープライズ ワークを考えているなら、数 MB はまったく問題になりません。念のため言っておきますが、私はもうすぐ MT ベースのアプリをストアに提出するつもりですが、サイズにはまったく問題はありません。まったく気になりません。しかし、それが気になるのであれば、 Apple のスタックが勝者です。
XML 関連の作業を行っていますか? MonoTouch。以上です。
文字列操作? 日付操作? .Net のありとあらゆる機能を備えたフレームワークで慣れ親しんできた他の数え切れないほどの細かい操作? MonoTouch。
Web サービス? MonoTouch。
Syntactically, they both have their advantages. Objective-C tends to be more verbose where you have to write it. You'll find yourself writing code with C# you wouldn't have to write with ObjC, but it goes both ways. This particular topic could fill a book. I prefer C# syntax, but after getting over my initial this-is-otherworldly reaction to Objective-C, I've learned to enjoy it quite a bit. I make fun of it a bit in talks (it is weird for devs who're used to C#/Java/etc.), but the truth is that I have an Objective-C shaped spot in my heart that makes me happy.
Do you plan to use Interface Builder? Because, even in this early version, I find myself doing far less work to build my UIs with IB and then using them in code. It feels like entire steps are missing from the Objective-C/IB way of doing things, and I'm pretty sure it's because entire steps are missing from the Objective-C/IB way of doing things. So far, and I don't think I've sufficiently tested, but so far, MonoTouch is the winner here for how much less work you have to do.
Do you think it's fun to learn new languages and platforms? If so, the iPhone has a lot to offer, and Apple's stack will likely get you out of your comfort-zone - which, for some devs, is fun (Hi - I'm one of those devs - I joke about it and give Apple a hard time, but I've had a lot of fun learning iPhone development through Apple's tools).
There are so many things to consider. Value is so abstract. If we're talking about cost and whether it's worth it, the answer comes down to my first bullet item: if this is for business, and if you can get the work, you'll make your money right back.
So... that's about as objective as I can be. This is a short list of what you might ask yourself, but it's a starting point.
Personally (let's drop the objectivity for a moment), I love and use both. And I'm glad I learned the Apple stack first. It was easier for me to get up and running with MonoTouch when I already knew my way around Apple's world. As others have said, you're still going to be working with CocoaTouch - it's just going to be in a .Net-ized environment.
But there's more than that. The people who haven't used MonoTouch tend to stop there - "It's a wrapper blah blah blah" - that's not MonoTouch.
MonoTouch gives you access to what CocoaTouch has to offer while also giving you access to what (a subset of) .Net has to offer, an IDE some people feel more comfortable with (I'm one of them), better integration with Interface Builder, and although you don't get to completely forget about memory-management, you get a nice degree of leeway.
よくわからない場合は、Apple のスタック (無料) と MonoTouch eval スタック (無料) を入手してください。Apple の開発プログラムに参加するまでは、どちらもシミュレーターに対してのみ実行されますが、どちらかが他方よりも大幅に優れているかどうか、また MonoTouch が 399 ドルの価値があるかどうかを判断するには十分です。
そして、熱狂的な人たちの言うことに耳を傾けないでください。彼らは、自分たちが非難しているテクノロジーを使ったことがない人たちであることが多いのです :)