SwiftとObjective-Cは、ともにiOS向け開発で多用される言語です。20年以上の歴史をもつObjective-Cに対し、Swiftの歴史は10年弱と、2者の間には歴史的な隔たりがあります。しかし、どちらもApple社が独自に開発した言語という点では共通点があります。今後、iOS向けのネイティブアプリ開発などを経験したいのであれば、どちらかの習得を検討すべきです。ここでは、SwiftとObjective-Cの特徴や違い、将来性、学習の優先度などについて解説しています。
- Swiftとは?
- Objective-Cとは?
- SwiftとObjective-Cの違い
- SwiftとObjective-Cの将来性、優先度
- SwiftとObjective-Cの求人を比較
- SwiftとObjective-Cに関するQ&A
Swiftとは?
Swiftは、Apple社が2014年に開発したオブジェクト指向言語です。アプリケーション開発を想定して作られており、iOSやMacOS、Apple TVやApple Watch用のアプリケーションに長けています。また、Linux上でも開発できます。Swiftのテーマである「Everyone Can Code」が示すように、誰もが容易にコーディングを進められることを目指して開発された言語と言えるでしょう。
Swiftは現在、主にネイティブアプリ開発の分野で活用されています。新しい言語でありながらハードウェアに近い部分の開発を可能とした、珍しい言語です。
また、C言語やObjective-Cとの連携によって、既存のコードやライブラリを流用することもできます。C言語やObjective-Cは歴史が長い言語ですから、当然これらで作られた情報資産を多く持つ企業は珍しくありません。しかし、既存の情報資産を別の言語に置き換える作業は意外と手間がかかり、テストなどを含めると新規開発と大差ない工数になることもあります。
ちなみにSwiftは、処理速度の速さが評価され、徐々にシェアを拡大しています。具体的には、整数検索でObjective-Cの2.6倍、Pythonの8.4倍の速さを誇ると言われています。比較されている2つの言語も特段遅いわけではないのですが、低水準言語のような使い方ができるSwift特有の強みと言えるでしょう。(※)
参考:Apple「Swift - Apple(日本)」
Swiftのメリットとデメリット
SwiftはObjective-Cの抱えていた課題を改善するために作成されたため、使用するメリットの多い言語です。例えば、Objective-Cでは長くなっている記述を数行で書ける、前述の通り実行速度が速い、型推論があるなどです。一方でSwiftは開発の歴史が短く、Swiftだけでは実装できない機能があります。Swiftだけで開発できない機能はObjective-Cで開発しなければなりません。
Objective-Cとは?
次に、Objective-Cについて解説します。
Objective-Cは、Apple社がC言語をベースに独自開発したオブジェクト指向言語です。
Objective-CはiOSアプリの開発において、市場をほぼ独占してきた言語です。そのため、非常に多くの開発事例とノウハウが蓄積されています。このノウハウの多さが、現在のObjective-Cを支えていると言っても過言ではありません。
ちなみに、オブジェクト指向の考え方を導入するにあたって「SmallTalk」という言語が参考にされています。また、C言語のオブジェクト指向版といえば「C++」が有名ですが、C++とObjective-Cでは拡張に対する考え方が異なっています。
一般的に言語の拡張は、新たな概念・機能の導入や文法の追加、コンパイラの拡張などが含まれます。実際にC言語からC++への拡張では、「クラス」の概念が導入され、それに対応するコンパイラの拡張も行われました。
しかし、C言語からObjective-Cへの拡張は、新しい概念や機能を組み込む大掛かりなものではなく、コンパイラに対して特殊な処理を明示し、新たな機能を埋め込むというレベルにとどまっています。言い換えれば、「C++は、C言語をベースに根本的な部分で言語仕様を変え、新たな言語に進化させた拡張」、「Objective-CはC言語の記述法を踏襲しつつも、新たな機能を埋め込む形の拡張」となるでしょう。
現在、Objective-CはほぼiOS専用のプログラミング言語と言える状態で、Swiftに比べると汎用性は劣ると言えます。
Objective-Cのメリットとデメリット
Objective-C最大のメリットはC言語をベースに開発されているため、これまで作成されたライブラリ数や知識が膨大な点です。一方デメリットは表記が煩雑で分かりにくい点です。例えばObjective-CはNextStepで使用されるために開発された言語ですので、接頭辞に「NS」と付けなければなりません。言語が開発された歴史を知らないと意味が分からず、初心者にとっては取り掛かりにくい言語となっています。
SwiftとObjective-Cの違い
では、SwiftとObjective-Cの違いを整理していきましょう。まず、一般論として「SwiftはObjective-Cの上位互換」と言って差し支えない状況です。これを踏まえたうえで、両者の違いを具体的に挙げてみましょう。
処理速度:Swiftが有利
処理速度については、Swiftが有利です。前述したように同じ条件の整数検索でObjective-Cの2.6倍という結果が示されていることから、処理速度の差は比較的はっきりと出てしまいます。また、SwiftはAppleが採用している高速コンパイラ「LLVM」を標準で使用することから、コンパイラに必要な時間も短縮することができます。ただし、Objective-Cも決して鈍足な言語ではありません。
コードの記述性、可読性:Swiftが有利
コードの記述性や可読性、つまり「読み書きのしやすさ」についてもSwiftが有利です。Swiftは、Objective-Cの「型宣言」や「メソッド定義」を緩和し、より柔軟で手軽なコーディングを可能としました。これは、コンパイル言語よりもスクリプト言語に近いイメージでコーディングができることを意味します。このことから、Rubyなどでプログラムを学び始めた初学者にとっても扱いやすいという評価があるようです。
学習コスト:Swiftの方が低い
前述のとおりSwiftはスクリプト言語に近いイメージでコーディングを進められることから、学習コストが低いです。これに対してObjective-Cは、やや難解です。もちろん、C言語が身についていれば非常に扱いやすい言語であることは間違いありません。しかし、プログラムを学び始めてから日が浅い場合は、ベースとなるC言語の習得に時間を要することが多いでしょう。したがって、初心者ほどSwiftの習得に時間を割くべきです。
情報量:最新情報はSwiftの方が充実
情報量については、どちらの言語も同じレベルと考えて良さそうです。ここで言う情報とは、参考書籍や開発事例、ライブラリなどを指しています。厳密に言えば、ライブラリの豊富さについてはObjective-C側が有利です。ただし、書籍についてはSwift側が充実しており、逆にObjective-Cの書籍は徐々に減っているのが実情です。
SwiftとObjective-Cの将来性、優先度
将来性はSwiftが有利
将来性については、Swift側が有利です。なぜなら、Objective-CのコードをSwiftに置き換える事例が増えており、すでにObjective-Cは過去の情報資産とみる動きがあるからです。
Objective-Cは、2006年から言語仕様が変更されていません。15年以上も言語仕様が変わらないことから安定感は抜群なのですが、今後はレガシー化が進む可能性もあります。ちなみに、Apple社が提供している統合開発ツール「Xcode」も、すでにSwiftでの使用を想定して最適化が進められています。このことから、開発元であるApple社は、Swiftの普及とバージョンアップに注力していると考えられるのです。
学習の優先度もSwiftが上
日本国内に限定すれば、2021年時点の求人数はSwiftとObjective-Cの間で大きな違いは見られません。ただし、ここで考慮すべきなのがプログラミング言語としての歴史の長さです。
Objective-Cは1983年に誕生し、すでに40年近い歴史を持つ言語です。直近のバージョンアップ(2007年)から数えても、すでに14年が経過しています。つまり、それだけ熟練のエンジニアが多く存在するということです。これに対してSwiftの歴史は7年、熟練のエンジニアは「Objective-Cを長く使用しており、ついでにSwiftも身に着けた」といったタイプが多いでしょう。つまり、Swiftを専門とする人材はまだ少ないのです。
こうした事情を考慮すると、Swiftを学ぶことでスキルをアピールしやすくなり、キャリアパスの幅が拡がると考えられます。したがって、初心者であればまずSwiftから優先的に学習すべきと言えます。
SwiftとObjective-Cの求人例を比較
SwiftとObjective-Cの将来性・優先度を確認したところで、ここからは実際の求人例を比較していきましょう。ここではそれぞれの求人例を確認した後に、それぞれの特徴を確認していきます。
Swiftの求人例
【想定年収】
500〜1,100万円
【業務内容】
・新規アプリ開発におけるアーキテクチャー設計/構築
・既存アプリに対する機能開発
・開発プロセス改善によるチームのパフォーマンス最大化
・データを活用した改善施策の提案、実装、ログ分析による仮説検証
・プロダクトロードマップを実現するためのリソース管理などの横断的な意思決定
・エンジニア組織としての課題解決や成長戦略の提案と実行
【求められるスキル・経験】
<以下いずれかの経験>
■Androidアプリエンジニアとして実務経験3年以上
・Kotlinに関する知識
・Javaを用いたAndroidネイティブアプリ開発経験
・Jetpack Composeに関する知識
・Kotlin Coroutinesに関する知識
・Android Architecture Componentsに関する知識
■iOSアプリエンジニアとして実務経験3年以上
・Swiftに関する知識
・SwiftUI, UIKitに関する知識
・CombineやSwift Concurrencyに関する知識
・Flutterを用いた開発経験1年以上
<スキル>
・ビジネス基礎レベルの英語力(TOEIC 700点以上)
例:英検準1級、英検2級(英検CSEスコア1950以上)、TOEFL iBT 60以上、IELTS 5.0以上、ケンブリッジ英語検定 FCE など
<経験>
・自らが自社サービスのファンであり、その成長に情熱を込められる方
・サービスを育てることを楽しみ、主体性を持って取り組める方
・チームメンバーと積極的にコミュニケーションを取り、ナレッジをシェアし、周りに良い影響を与える方
・創って終わりじゃなく、本当の意味で創るためには、むしろリリースしてからがスタートだと思っている方
Objective-Cの求人例
【想定年収】
500〜850万円
【業務内容】
・各プラットフォーム(iOS/Android/Web)ごとに合わせたSDKやプラグインの開発
・サンプルアプリの開発
・広告配信事業者(Amazonなど)との仕様決定
・問い合わせ対応
【求められるスキル・経験】
・iOSネイティブアプリまたはiOSライブラリ(.framework)の開発経験
・AndroidネイティブアプリまたはAndroidライブラリ(.aar)の開発経験
・WebサイトでJavaScriptを使った開発経験
SwiftとObjective-Cの求人比較
ここからはSwiftとObjective-Cの求人を比較して求人市場の実態を確認していきましょう。
ここでは、以下2項目で比較していきます。
-
・求人数
・年収
求人数
2022年2月執筆時にレバテックキャリアで求人検索するとそれぞれ下記件数がヒットしました。
Swift:1,539件
Objective-C:982件
新興言語のSwiftが求人数を抜いており、今後も求人数の差は広がっていくでしょう。
年収
2022年2月執筆時にレバテックキャリアの求人を確認するとそれぞれの年収幅は以下の通りでした。
Swift:350〜1,700万円
Objective-C:350〜1,600万円
執筆時点の求人年収幅では若干Swiftの方が高い求人を見かけました。Swiftの年収幅は、言語が成熟し、実装できる範囲が広がれば今後も広がっていくでしょう。
SwiftとObjective-Cに関するQ&A
最後に、SwiftとObjective-Cの将来性と、学習の優先度について解説します。
Q1.Objective-Cのデメリットは?
Objective-Cのデメリットは表記が煩雑で分かりにくい点です。例えばObjective-CはNextStepで使用されるために開発された言語ですので、接頭辞に「NS」と付けなければなりません。言語が開発された歴史を知らないと意味が分からず、初心者にとっては取り掛かりにくい言語となっています。
Q2.SwiftとObjective-Cの特徴は?
Swiftの特徴は「簡潔で読みやすい記述方式」「安全性を高める多くの機能を搭載している」「静的型付け言語で型宣言を省略できる」などが挙げられます。
一方Objective-Cの特徴は「C言語を基に作成されているため多くのライブラリを使用できる」「表記が煩雑で分かりにくい」「iOSアプリ開発以外に使用されることがほとんど無い」点です。
Q3.Objective-Cはいつまで使える?
Objective-Cの人気度は年々低下しており、検索サジェストにも「オワコン」「サポート終了」などがヒットします。しかし、2022年2月執筆時点ではサポート終了は発表されていません。とはいえSwiftに移行する動きが広がっているため、近い将来にサポート終了の可能性があります。
ITエンジニアの転職ならレバテックキャリア
レバテックキャリアはIT・Web業界のエンジニア職を専門とする転職エージェントです。最新の技術情報や業界動向に精通しており、現状は転職のご意思がない場合でも、ご相談いただければ客観的な市場価値や市場動向をお伝えし、あなたの「選択肢」を広げるお手伝いをいたします。
「将来に向けた漠然とした不安がある」「特定のエンジニア職に興味がある」など、ご自身のキャリアに何らかの悩みを抱えている方は、ぜひ無料のオンライン個別相談会にお申し込みください。業界知識が豊富なキャリアアドバイザーが、一対一でさまざまなご質問に対応させていただきます。
「個別相談会」に申し込む
転職支援サービスに申し込む
※転職活動を強制することはございません。
レバテックキャリアのサービスについて