AndroidとiPhoneと

iOSちびちび一年半くらい触ってたけど、ここ何週間かは仕事でAndroidアプリ作ってる。ファーストインプレッションとしてはiPhoneよりもAndroidの方が圧倒的に作りやすいス。

Java vs. Objective-C

よく文句言われてる気がするObjCのメッセージ送信には、いちSmalltalkファンとしてはほとんど違和感ないんだけど、retainとかreleaseがめんどい。やっぱGCはあった方が楽。謎エラーで悩むことが断然少なくて済む。あと、C言語ベースだから仕方ないのかも知れないけどObjCだとクラスを一つ作るたびに毎回 .h と .m の二つ用意することになるのも面倒くさい。そういう細々した部分でいちいちJavaの方がストレス少なくていい。

ただ、既存のクラスに後付けでメソッドを追加できるとこはObjC最高。@selectorでメソッドを簡単に取り出して使えるのも便利。動的な部分はObjCの圧勝だと思う。だけど残念なことにフレームワークに従って標準的なアプリを作る限りにおいてはそういうダイナミックな部分ってあんまり重要じゃない気がするんだよねぇ。

Android SDK vs. iOS SDK

Android SDKと比較してどうこうじゃなくて、そもそもiOSSDKって使い辛いと思うんだけどどうか。特にUITableView。あれ一番よく使うと言っていいビューだと思うんだけど、なんなの実際?テーブルの行数と、セクションの数と、セルの表示内容と、セルをクリックしたときの動作を、別個に異なるメソッドの中で指定するのって、どう考えても面倒くさすぎるだろ。そりゃフレームワークの側から見ればそうなってた方が呼び出しやすいのは分かるけど、フレームワークはそれを使う人のために作ってくれよって思う。iOS SDKって万事そんな感じ。

Androidの場合も面倒くさいことをやるには面倒くさくやるしかないけど、少なくとも普通によく使う機能に関しては簡単に使えるように気を使ってくれてる。それになによりAndroidSDKのソースが公開されるのがいい。もうViewを掘りまくって無理やり中を覗くのは嫌でござる。Viewを掘って掘って掘りまくって見つけた機能を使ってたら、iOSのバージョンアップであっさり使えなくなったり、そもそもAppStoreの審査で弾かれたりっていうのを気にしなくていいのはなんと幸せなことか。

それとUIの構築。XCodeのInterface Builderってすごい使い辛いんだけど・・・。IBOutletとかIBActionとかをDnDでUIと繋ぐの、あれAppleの人たちは分かりやすいと思って作ってるんだろうか。正直自分には敷居高すぎる。AndroidのfindViewByIdの方がよっぽど素直で分かりやすいよ。

Eclipse vs. XCode

IDEは全然使いこなしてないので、別にXCodeに強い不満があるわけではないんだけど、どっちか選べと言われたらEclipseに軍配が上がる感じ。なによりEclipseリファクタリングツールが最強すぎる。XCodeにも付かないかな、あれ。

まとめ

そんなこんなで少なくとも自分にとって開発しやすいのは圧倒的にAndroid。ただAndroidはMarketが・・・。いくらなんでもお金の臭いがしなさすぎるよね、あそこ。Amazonのアプリストアが軌道に乗ったらなにか変わるかな。超期待。