iPhoneアプリ新規開発、SwiftとObjective-Cのどちらを選ぶ?



iPhoneアプリ新規開発、SwiftとObjective-Cのどちらを選ぶ?

これから iPhoneアプリを新規作成しようと考えた時、 「開発言語は Swiftで大丈夫だよな」 と思う方も。
今回は iPhone アプリのネイティブ言語である Swift と Objective-C を比較してみました。
自信をもって Swift で開発できるように 2つの言語を確認してみて下さい。

目次
  1. iPhoneアプリ新規開発、SwiftとObjective-Cのどちらを選ぶ?
  2. Objective-Cについて
  3. Swiftについて
  4. Swift、Objective-C、どっちを選ぶべき?
  5. まとめ

iPhoneアプリ新規開発、SwiftとObjective-Cのどちらを選ぶ?

まず 2つの言語についてご紹介。

Objective-Cについて

image

Objective-Cは、 1980年はじめに OS用のプログラミング言語として開発された オブジェクト指向型の C言語。当時は IT企業の Stepstone社 が Objective-C のライセンスをもち、 Apple社が Objective-C を手に入れたのは、 1996年当時 Objective-C のライセンスを持っていた NeXT社の買収をきっかけ。そして新しい Mac OS X に Objective-C を使ったソフトを使用。

その後、 Mac OS をはじめ iPhoneの iOS でも Objective-Cが使われシステム開発が行われる。そして 2007年に登場した iPhone 内のアプリも Objective-C で開発され、現代に至る、というわけですね。

OS(オペレーティングシステム)/Windows や Mac OS のこと。


Objective-Cの長所

  • 30年以上の実績
  • C言語由来の処理速度の速さ
  • オブジェクト指向
  • XCodeで使用可能
  • 動的な処理に強い*
  • スキルホルダーは高報酬を期待できる
  • バージョン更新がないため、一度覚えた構文は長く使える(最終更新 2006年 Objective-C 2.0)

Objective-Cの短所

  • 高い学習コスト
  • 開発速度と安定性を求める昨今のアプリ開発事情にはやや不向き
  • XCode上では、 .m と .h の 2種類のファイルが存在し、管理ファイルが増える
  • セミコロン ; が多い etc

Swiftについて

画像引用: Swift.org

Swiftは、 2010年から Apple社を中心に開発が進められ、 2014年にリリースされた新しいプログラミング言語。iPhone をはじめ、 Mac PC や Apple Watch などのアプリ開発に対応。従来の Objective-Cに比べて初期学習コストを下げ、またバグを誘発しにくい構文で世界中の開発現場から指示。今から iPhoneアプリの開発をするなら間違いなく Swift を選択するべきでしょう。「Swift vs objective-c」で検索しても 9割は Swift といっています。

Swiftの長所

  • Ruby や Python などのように比較的やさしいプログラミング言語
  • Apple社に加えて IBM も支持
  • バグを誘発しにくい構文(オプショナル型)
  • C言語に劣らない処理速度*
  • APIが豊富
  • 一人あたりの仕事数は Objective-Cより多い
  • 人工知能やOCRなど最新技術を取り入れたサンプルアプリはSwift製

外部サービスとアプリをつなぐ APIですが、例えば Instagram の場合 Swift用 API が 7あるのに対して Objective-C は 1つです(GitHub参照)。また仕事数については、フリーランス市場の upwork で調査。 「Swiftの案件数」 ÷ 「Swiftスキルホルダー」 で計算しました。

言語 Swift Objective-C
案件数 656 409
スキルホルダー 16,373 14,435
仕事指数 0.04 0.028

upwork

この他にも、 Swiftで作ったアプリを Androidでも動くようにするコンパイラーがあったりなど、時代の流れは完全に Swiftです。

Swiftの短所

  • バージョン更新は年 1回
  • 浅い歴史
  • 実績の少ないエンジニアも(発注者注意)

個人的な一番のデメリットは、毎年行われているバージョンアップです。なるべく最新バージョンでプログラムしたいものの、バージョンアップに伴って書き方が部分的に変わります。ただし、 XCodeのデバッグ機能が「そのクラス名、本当は●●じゃない?」とアドバイスしてくれますので、プログラミングを学びながら XCodeにも慣れていけばクリアできる問題と思います。


Swift、Objective-C、どっちを選ぶべき?

Swift

スピード・安定性・コスト・メンテナンス を重視するなら 間違いなく Swiftでしょう。

開発面

image

XCodeは、 Objective-C も Swift も対応していますが、圧倒的に Swift の方が管理しやすいです。実際に Objective-C と Swift で簡単なアプリを自分で作ってみましたが、 「接続」 と 「プログラム」 の作業、 Swift を知ったら Objective-C の手順は面倒です。同じファンクションに対してコード量も Swiftの方が少ないので、開発後の可読性やメンテナンス性は高いと思います。

【現在時刻を取得するコードで Swift と Objective-C を比較】

言語 Swift Objective-C
コード

@IBAction func button(){
    let formatter = DateFormatter()
    formatter.dateFormat = "HH:mm:ss"
    var displayTime = formatter.string(from: Date())
    label.text = displayTime
}

- (IBAction)button:(id)sender {
    NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"HH:mm:ss"];
    NSDate *now = [NSDate date];
    self.label.text = [formatter stringFromDate:now];
}

労働市況と人材

image

先程はフリーランス市場で Swift と Objective-C のスキルホルダーを調査しましたが、就職転職市場ではどうなんでしょうか。調べてみました。

【Swift と Objective-Cの求人案件状況】

Swift Objective-C
indeed 227 215
DODA 131 156
クラウドワークス 3 1

求人案件数は Swift も Objective-C もあまり変わらないという印象。Swiftについては新規案件の求人が多いように思いますが、 Objective-C は改修や機能追加など既存アプリのリフォームが多い印象でした。

また誰かにアプリ開発を依頼しようと考えている方、 Swiftエンジニアの人材は比較的豊富なようです。例えばクラウドワークスでスキルホルダーを調べると、

  • Swift OKのエンジニア数  1,175
  • Objective-C OKのエンジニア数  513

自分たちにあった Swiftエンジニアを見つけられそうですね。

トレンド

Googleトレンドで世の中の Swift と Objective-C の注目度を比較してみました。

image

んっ、 Objective-C の注目度、低すぎるのでしょうか。。。Swiftを外して Objective-C だけのトレンドを確認してみました。

image

右肩下がりですね。。

まとめ

アプリ開発は Swift でいこう、と確信を持てたことと思います。ただし、上記ではご紹介していませんでしたが、 Swift も Objective-C も学習環境は他のプログラミング言語に比べるとやや難です。まず Web上のチュートリアルで Swift の最新バージョンを探しましたが、見当たりませんでした。参考書はいくつか Swift4に対応しているものの、アプリ開発初心者の中には参考書通りにやってもエラーでなえる方もいらっしゃるのでは。

私は UI部品とコードの接続で 3時間はまったり、 Objective-C使用時に .m ファイルを編集しないといけないのに、一生懸命 .h ファイルを編集したりなど、初歩的な点でいくつかつまづきました。「もう止めようかな」とも思いましたが、「読者のため、がんばらないと」ということで つまづき を運よく乗り切ることができたのですが、みなさまはどうでしょうか。

「XCodeボタン多すぎ、、」「これ参考書通りにやっているのになんでエラーなの」と悩んでいる方、 挫折する前に CodeCamp を頼ってみませんか? 無料体験をはじめ、無料相談も行っていますので何かの役に立つかもしれませんよ。ご参考までに。

オシママサラ
この記事を書いた人
オシママサラ
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp