iOS開発入門するならSwiftでなくObjective-Cをお勧めする4つの理由 beta4対応版

2014年7月23日
beta4に対応して加筆しました。加筆は赤字部分です。
beta4でXcode + Swiftは大分書きやすくなり、個人的にはもうSwiftしか書いていない、みたいな状態です。

WWDC2014で新言語Swiftが発表されとても盛り上がっています。
ただ、長谷川は当面の間、iOS開発入門するならObjective-Cを使うのをお勧めします。

その理由は以下の4つです。

なお、これはこの記事を書いている2014年6月10日現在の状況からの理由です。時間がたつにつれ解決していく可能性はありますし、「使わない理由」が「使うべき理由」に変わっていくこともあるでしょう。ただ、おそらく3ヶ月~6ヶ月は状況はそれほど変わらないのではないかと思います。

#1. どちらにしてもiOSのAPIの知識は必要

確かにObjective-Cの表記はいわゆる「フツー」の言語の世界から見ると「キモく」見えるでしょう。
iOS開発は一般的には難しく面倒に見えますし、それはおおむね事実です。(決して簡単ではありません。)

そして「難しく面倒に見える」理由の1つはObjective-Cの「キモさ」でしょう。

でも複数の言語をご存じの方であればどの言語でも表記方法が違うだけでその中身は(見た目ほどには)違わないということをご存じのはずです。

Objective-Cもその例に漏れずC++やJava、PHPなどを使ったことがある方であれば30分もすれば読めるようになるでしょう。
そしてiOS開発の難しいところは実はObjective-CではなくiOSのAPIをどう使うかの方であることに気付くはずです。

つまり、Objective-CでなくSwiftを使ったとしても結局iOSのAPIの知識を得なければならないという意味では同じなのです。
iOS開発入門する、という意味で、Objective-CとSwiftは「引き分け」です。

#2. Xcode6 beta + Swift では補完が効かない

2014年7月23日 beta4で効くようになりました。まだバグ込みですがかなりラクになりました。

現状のXcodeではSwiftでコードを書くとiOSのAPIに関する補完が効きません。
つまりiOSのAPIを完全に把握した上で一字一句間違わない様にプログラムを書く必要があります。

import UIKit
class MainViewController: UITableViewController {
    override func viewWillAppear(animated:Boold){
    }
}

こんなのを補完ナシに!

Objective-Cで十分にiOS開発に慣れていたとしても補完無しに書くのはそうとう厳しいですよね。
補完の効くObjective-Cでサクサク開発しましょう。

#3. Objective-C前提であれば日本語情報が多量にある

2008年のXcode3.1の頃からiOS開発と言えばObjective-Cでした。
そのため、6年間にわたってObjecive-CでのiOS開発に関する日本語情報が蓄えられています。

現状、iOS開発で何かやりたいことがあった時にググって出てくる解法は、ほぼ100% Objective-Cでしょうし、市販されている書籍のサンプルコードはほぼ100% Objective-Cでしょう。

Objective-CのコードをSwiftに変換しながら実装すれば良いのですが、その変換をミスってしまうと動かない理由が何なのかなかなか判断が難しくなるでしょう。

iOS開発に慣れていないならObjective-Cを使った方がラクチンです。

#4. 既存のよく出来たライブラリはほぼ全てObjective-Cでの利用を想定している

iOS開発では既存のよく出来たライブラリを使うことでラクに良いものを作ることができます。
そんなライブラリも現時点ではほぼ全てObjective-Cからの利用を想定しているでしょう。

もちろん、Swiftからそれらのライブラリを使うことはできます。
ただ、SwiftからObjective-Cのライブラリを使うためには相応の設定が必要です。
ライブラリがうまく動かない時に、自分の使い方が悪いのか、設定が悪いのか、ライブラリのバグなのかを判断しなければなりません。

#3とも関係しますがObjective-Cから使うのであればサンプルコードもたくさん見つかることでしょう。


まとめ

そんな訳で現状はiOS入門するならObjective-Cが良いですよ、というお話でした。

中長期的にはSwiftが主流になる可能性は高そうですね。
長谷川もいろいろ試しています。

半年後に「iOS開発でググって出てくるObjective-Cの情報は新しいか古いかわかりません。その点Swiftなら2014年以降の情報なことが担保されます。Swiftを使いましょう!」という記事を書けることを祈っています。