ワシはワシが育てる

週刊少年ジャンプと任天堂のゲームが三度のメシより好きです。

iOSをほぼ1ヶ月毎日やりつづけた感想(AndroidやJSとの比較とか)

先月からiOSを始めてほぼ1ヶ月毎日続けた感想です。
まだ不慣れなところも多く未熟な意見なので参考程度に捉えてください。

Objective-Cは割りとすぐ慣れた

初めは妙な型名とかメソッドの書き方とか、iOSの長ったらしい構文に強い先入観がありましたが、案外やってれば慣れます。
先入観で嫌がってやらないのは非常に勿体無いです。(過去の自分への問いかけ)

Xcodeが使いづらい

Android開発の延長線でiOS開発を始めたのですが、Android Studioと比べてXcodeは使いづらく、実際に生産性にかなり影響しました。
単体で記事にするかもですが、Jetbrainsが出しているAppCodeが非常にオススメです。Xcodeに慣れていないというのもありますが、誇張ではなく本当に生産性が1.5~2倍変わりました。

Swift採用を諦めた

元から採用するのは難しいと思っていましたが、Swiftを一度試してみて早い段階で限界を感じて諦めました。
理由としてはAppCodeのSwift対応が不十分なこと、Xcodeでもリファクタリングにまだ対応していないこと、Ob-Cとの互換性があると言ってもライブラリによってはバグが出ることなどが原因です。

Androidとの比較

個人的にプログラミングとしてはAndroidの方がやりやすいです。
まだ不慣れなせいか気持ち悪く感じるのは、Storyboardを使用するとロジックとViewが混在してしまうこと、さらにViewやControllerを静的に管理できないことなどです。

Androidや画像やレイアウト、Viewも静的に紐付けられる一方、iOSは画像が存在しなければ何も表示されず、レイアウトや対応するViewがなければ落ちるなど作ってて結構ヒヤヒヤします。

またInterface Builderを用いたAutolayoutも個人的には好きではなく、例えば共通のスタイルを定義できなかったり、色や値の定数が使えなかったり、動的に要素を非表示にするのが面倒だったりということが要因です。

ただ弁解しておくと、これらのように不便に感じる点はあるのですが、総じて見ると決して開発しづらいわけではないです。(単にAndroidとの比較的な意味です)

ネイティブとWebとの比較

一応去年の前半まではWeb制作がメインたったので、Webとネイティブ(iOS + Android)の比較を。

やはり小規模で短期間で作るとなると小回りが効くWebの方が生産性は高いです。ただ一定規模以上かつ、パフォーマンスを求めるとむしろネイティブの効率が上まってきます。

特にHTML+JSだと無限スクロールでほぼ間違いなくパフォーマンス問題にぶち当たるので、用途ごとに最適化されたコンポーネントを使用できるのはネイティブの強みです。

個人的な感想としては、静的言語とIDEの恩恵にどっぷり浸ってしまうと、もはやJSに戻りたくなくなってます。

あと、特にAndroidGoogleのドキュメントが素晴らしくよく出来ているので、むしろWebより学習コスト低いと思います。(全般的にネイティブはレールが敷かれていて、やることがハッキリしているので思ったより学習コスト低いです)