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と比較してどうこうじゃなくて、そもそもiOSのSDKって使い辛いと思うんだけどどうか。特にUITableView。あれ一番よく使うと言っていいビューだと思うんだけど、なんなの実際?テーブルの行数と、セクションの数と、セルの表示内容と、セルをクリックしたときの動作を、別個に異なるメソッドの中で指定するのって、どう考えても面倒くさすぎるだろ。そりゃフレームワークの側から見ればそうなってた方が呼び出しやすいのは分かるけど、フレームワークはそれを使う人のために作ってくれよって思う。iOS SDKって万事そんな感じ。
Androidの場合も面倒くさいことをやるには面倒くさくやるしかないけど、少なくとも普通によく使う機能に関しては簡単に使えるように気を使ってくれてる。それになによりAndroidはSDKのソースが公開されるのがいい。もうViewを掘りまくって無理やり中を覗くのは嫌でござる。Viewを掘って掘って掘りまくって見つけた機能を使ってたら、iOSのバージョンアップであっさり使えなくなったり、そもそもAppStoreの審査で弾かれたりっていうのを気にしなくていいのはなんと幸せなことか。
それとUIの構築。XCodeのInterface Builderってすごい使い辛いんだけど・・・。IBOutletとかIBActionとかをDnDでUIと繋ぐの、あれAppleの人たちは分かりやすいと思って作ってるんだろうか。正直自分には敷居高すぎる。AndroidのfindViewByIdの方がよっぽど素直で分かりやすいよ。