SwiftとObject-C、iPhoneアプリ開発に使うならどっちがいい?



SwiftとObject-C、iPhoneアプリ開発に使うならどっちがいい?

アプリ開発を誰かに依頼しようと考えている方、これから iPhoneアプリの開発に挑戦しようと思われている方、 「開発言語は Swift で大丈夫だよな」 とチョット不安に思われていませんか?
iPhoneアプリのネイティブ言語である Swift と Objective-C を比較してみました。

目次
  1. SwiftとObject-C、iPhoneアプリ開発に使うならどっちがいい?
  2. SwiftとObjective-Cを比較
  3. Swiftとは
  4. Objective-Cとは
  5. Objective-CではなくSwiftにすべき理由
  6. Swiftのデメリット
  7. Swift、Objective-C以外の選択肢
  8. まとめ

SwiftとObject-C、iPhoneアプリ開発に使うならどっちがいい?

SwiftとObjective-Cを比較

image

まず 2つの言語の概要をまとめてみました。

Swift Objective-C
リリース 2014年 1984年
開発設計 Apple社 2人の開発者
運営管理 Apple社 Apple社
サポート期間
不明 不明
GitHub
リポジトリ数
379,804 389,142
求人状況
(jp.indeed)
231 216

Swiftの方が新しい言語にも関わらず、 GitHub内のプロジェクト数はほぼ一緒。勢いを感じますね。またオープンソース型言語の中で Swift は Go につぐ第 2位*。開発現場では Swift の採用が進んでいます。

こうした勢いを受けてか Objective-C コミュニティでは、「Appleは Objective-Cのサポートを打ち切る?」という不安が。現在確認できる範囲では、分からない、恐らくこのまま存続、という意見が大多数です(***)。理由は、iOS や XCode など基幹システムで Objective-C が使われているため。C や C++、 Java がなくならないのと似た感じでしょうか。

もう少し各言語について詳しく見ていきましょう。

Swiftとは

画像引用: Swift.org

Swiftは、 Apple社が自社製品のソフトウェア開発言語として 2010年から開発に取り組み、 4年間かけて作った独自のプログラミング言語です。特徴は、

  • オープンソース
  • iOS や MacOS、 watchOS、 tvOS のソフト開発を目的
  • 基本的にはWindows以外のPCで稼働
  • Objective-Cに比べてバグを見つけやすい構造
  • 基本構文は Pythonに似ている点が多い
  • Java や C のようにコンパイルする言語

Swiftが 2014年に登場するまでは Objective-Cによって iOS や MacOS のアプリが作られていましたが、 Swiftリリース後は Apple社を中心に開発現場では Swift を採用する風潮が強まっています。

Objective-Cとは

画像引用:GitHub/Objective-C

Objective-Cは、1980年代はじめにブラッドさんとトムさんによって OS 用言語として 開発。その後、1988年に Objective-Cのライセンスは NeXT社に移り、1996年に Apple社が NeXTを買収したことで Objective-Cのライセンスが Apple社にいき、 Macの OSXなどで Objective-Cが使用という流れ。つまり Objective-C自体は、 OSなどの大規模なソフトウェアで主に使用されているというわけです。

  • iPhoneのアプリ開発以外に OSなどでも使用
  • Mac以外の Windowsでも使用可能
  • C言語のように難易度の高い言語設計
  • Swiftに比べてバグを引き起こしやすい構造
  • コンパイルする言語

Objective-CではなくSwiftにすべき理由

本稿タイトルの答えですが、これから iPhoneアプリ開発を行うなら Objective-Cではなく Swift にするべきでしょう。理由は下記のとおりです。

開発を依頼する側の視点で見て

image

アプリ開発を新規で依頼しようと考えている人の目線で、Swiftにすべき理由をピックアップしてみました。

■概ねSwiftの方が短期間で開発できる■

これは実際に自分がアプリ開発してみると分かるのですが、Objective-C に比べて概ね Swift の方が早くアプリを開発することができます。理由は以下の通り。

  • Swift の方がデバッグしやすい
  • Swiftは複雑なプログラムも制御しやすいように設計されている
  • アプリのメモリ管理が楽
  • コミュニティが活発、助けになる
  • 情報が多い
■概ねSwiftの方が安く開発できる■

Objective-C は、C言語由来の構文で比較的難しい言語と言われています。そのため学習コストがかかり、高い技能をもった Objective-Cエンジニアの労働単価は高くなりがち。それに比べて Swift はシンプルな構文に加えて、教材も豊富。恐らく Python や Ruby なみの学習時間で基礎習得可能でしょう。それに伴って学習コストは高くなく、労働単価も Objective-C に比べて安くなるでしょう。

■Swiftの方がセキュリティ的■

スピードと完成度を求めるアプリ市場において 「バグ」 は一つのリスク要因に。Swiftはこうした昨今の開発状況を踏まえて、バグを誘発しにくい言語構成となっています。Objective-Cでは許されるコードも Swift では NO といった感じ。これはセキュリティを意識した Apple社らしい特徴ですね。

■Swiftの処理速度は早い■

一般的にプログラム処理が早い言語というと C や C++ などの C系、つまり Objective-Cも。 Objective-Cに比べると Swiftの方が遅いと思われがちですが、 こちらのテストでは C++ と匹敵する処理スピードを記録。扱いやすくって早いって、Swift スゴイですね。(参考記事

以上 4点から開発を依頼するときは Swift をオススメします。ただし、Objective-C製の既存アプリ改修や機能追加、それから大規模アプリの開発については Objective-C の方がいいかもしれません。

これから学習しようか考えている人の視点で見て

image

iPhoneアプリの開発を考えた時、恐らく Swift を選択すると思います。改めてその理由を確認していきます。

■Swiftは教材がある■

Amazon.co.jp で 「Swift」 「Objective-C」 それぞれ検索してみて下さい。 Swiftは、2017年、 2018年多数出版がある中、 Objective-Cは皆無です。また Objective-C で Hello World を出力しようと思うと、、、なかなかチュートリアル、サンプルコードが見つかりません!

■Swiftの方がプログラミング初心者むけコミュニティ■

プログラミング系の SNSサイト Teratail では、 圧倒的に Swift の方が活発。キーワード検索では、 Objective-C 937件に対して Swiftは 7014件。これなら Swift学習中に困っても何とかなりそうですよね。

■Swiftの方が優しい■

代表的なプログラム Hello World のコードを Swift と Objective-C で比較。

SwiftObjective-C

print("Hello Swift")

import 
int main(void){
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    // Your code here!

    NSString *s = @"Hello Objective-C";
    [[NSFileHandle fileHandleWithStandardOutput] writeData: [s dataUsingEncoding: NSUTF8StringEncoding]];
    [pool release];
    return 0;
}

断然 Swift の方がシンプルですよね。 paiza.io で簡単にそれぞれのコードをテストできますので、よかったら試してみて下さい。

■Swiftの方がすぐにはじめられる■

iPhoneアプリを開発する時に使う XCodeでは、コードをテストできる playground というモードがあります。最新版の XCode 10.1 の場合、この playground は Swift のみの対応です。 Objective-C は、プロジェクトモードから操作する必要があって気軽にコードテストできません。

■Swiftの方がシンプル■

XCodeでプロジェクトを新規作成した直後のファイル構成は以下のように Swift と Objective-C では違います。Swiftの方がシンプルで管理しやすそうですよね。

【XCodeで Swiftプロジェクト新規作成時のファイル構成】

image

【XCodeで Objective-Cプロジェクト新規作成時のファイル構成】

image

■試してみたくなるアプリは Swift製■

人工知能やOCRといった最先端の技術を使ったアプリ、 Swiftコードで公開されています。

会話系アプリ(Swift4)

文字認識系アプリ

Swiftのデメリット

image

Objective-Cに比べて使いやすそうな Swiftですが、デメリットもあります。

バージョン

新しい言語の Swift は、バージョンアップが比較的頻繁に行われています。

  • Swift バージョン 1.0 2014年9月リリース
  • Swift バージョン 2.0 2015年9月リリース
  • Swift バージョン 3.0 2016年9月リリース
  • Swift バージョン 4.0 2017年9月リリース
  • Swift バージョン 4.2 2018年9月リリース

バージョンアップに伴ってプログラムの書き方や取り扱い方も変わるため、困惑しやすいです。

実績

30年以上運用し続けられている Objective-C に比べると、公開から 4年チョットの Swiftはどうしても未熟に見られがちです。しかし、 GitHubのコードを見ればわかるように Swiftもグイグイ実績を伸ばしています。

Swift、Objective-C以外の選択肢

image

画像引用:GitHub/Facebook

iPhoneアプリの開発を考えた時、アプリのネイティブ言語である Swift や Objective-Cを選ぶのはセオリーですが、現実問題、他のプログラミング言語や開発環境でもアプリは作れます。

  • Unity(C#)
  • React(JavaScript) etc

開発言語やプログラミング言語によって 得手・不得手 がありますので、 Swift や Objective-C を試す中で検討してみるのもいいかもしれませんね。ちなみに Pokémon Go は Unity 製、 Instagram や Uber は React 製です。

まとめ

概ね iPhoneアプリの開発は、 Swift でいこうと考えている方がほとんどでしょう。今回比較記事をまとめていて思ったことが、とにかく情報量が全然違うということです。圧倒的に Swift の方が多い、それでも Swiftの最新バージョン 4 のチュートリアルは Webで探してもほとんどありませんでした。また Swift にしても Objective-C にしても学習環境には XCode が欠かせません。このアプリのインストール、結構時間がかかります。これから iPhone アプリを開発しようと考えている方、焦らずにじっくり取り組んでいくことをオススメします。

尚、 学習初期は Swift よりも XCode の操作で悩むことが少なくありません。「 XCode で新規プロジェクトを作成したのに、参考書で書いてあるアイコンがない」 よくある話です。参考書でも Web でもわからない時は、プロに相談してみてはいかがでしょうか?

『オンライン × マンツーマン』 で定評のある CodeCamp では無料相談や無料体験を実施していますよ。これらのサービス、即日対応も可能なので、悩んでいるよりもまずは問い合わせしてみませんか?

関連記事

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