Swiftとは?
Swiftは、Apple社が2014年に発表したオブジェクト指向言語です。アプリケーション開発を想定して作られており、iOSやMacOS、Apple TVやApple Watch用のアプリケーションに長けています。また、Linux上でも開発が可能であり、誰もが容易にコーディングを進められることを目指して開発された言語と言えるでしょう。
また、C言語やObjective-Cとの連携によって、既存のコードやライブラリを流用することもできます。C言語やObjective-Cは歴史が長い言語ですから、当然これらで作られた情報資産を多く持つ企業は珍しくありません。しかし、既存の情報資産を別の言語に置き換える作業は意外と手間がかかり、テストなどを含めると新規開発と大差ない工数になることもあります。
ちなみにSwiftは、処理速度の速さが評価され、徐々にシェアを拡大しています。具体的には、整数検索でObjective-Cの2.6倍、Pythonの8.4倍の速さを誇ると言われています。比較されている2つの言語も特段遅いわけではないのですが、低水準言語のような使い方ができるSwift特有の強みと言えるでしょう。(※)
参考:Apple「Swift - Apple(日本)」
関連記事:iOSエンジニアとは?仕事内容や求められるスキル、年収を解説
Swiftのメリットとデメリット
SwiftはObjective-Cの抱えていた課題を改善するために作成されたため、使用するメリットの多い言語です。例えば、Objective-Cでは長くなっている記述を数行で書ける、前述の通り実行速度が速い、型推論があるなどです。一方で、Objective-Cと比較すると成熟度が低く、ライブラリやフレームワークが少ない傾向にあります。今後、Swiftを用いた開発が普及していく中で充実していくでしょう。
Objective-Cとは?
次に、Objective-Cについて解説します。
Objective-Cは、1983年に米国のブラッド・コックス(Brad Cox)氏とトム・ラブ(Tom Love)氏によって開発されたオブジェクト指向言語です。
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」と付けなければなりません。言語が開発された歴史を知らないと意味が分からず、初心者にとっては取り掛かりにくい言語となっています。
とはいえ、Objective-CはiOS開発の分野で非常に重要な位置を占めており、その豊富なエコシステムや歴史的な知見は引き続き有益です。
SwiftとObjective-Cの違い
では、SwiftとObjective-Cの違いを整理していきましょう。まず、一般論として「SwiftはObjective-Cの上位互換」と言って差し支えない状況です。これを踏まえたうえで、両者の違いを具体的に挙げてみましょう。
処理速度
処理速度については、Swiftが有利です。前述したように同じ条件の整数検索でObjective-Cの2.6倍という結果が示されていることから、処理速度の差は比較的はっきりと出てしまいます。また、SwiftはAppleが採用している高速コンパイラ「LLVM」を標準で使用することから、コンパイラに必要な時間も短縮することができます。ただし、Objective-Cも決して鈍足な言語ではありません。
コードの記述性、可読性
コードの記述性や可読性、つまり「読み書きのしやすさ」についてもSwiftが有利です。Swiftは、Objective-Cの「型宣言」や「メソッド定義」を緩和し、より柔軟で手軽なコーディングを可能としました。これは、コンパイル言語よりもスクリプト言語に近いイメージでコーディングができることを意味します。このことから、Rubyなどでプログラムを学び始めた初学者にとっても扱いやすいという評価があるようです。
学習コスト
前述のとおりSwiftはスクリプト言語に近いイメージでコーディングを進められることから、学習コストが低いです。これに対してObjective-Cは、やや難解です。もちろん、C言語が身についていれば非常に扱いやすい言語であることは間違いありません。しかし、プログラムを学び始めてから日が浅い場合は、ベースとなるC言語の習得に時間を要することが多いでしょう。したがって、初心者ほどSwiftの習得に時間を割くべきです。
情報量
情報量については、どちらの言語も同じレベルと考えて良さそうです。ここで言う情報とは、参考書籍や開発事例、ライブラリなどを指しています。厳密に言えば、ライブラリの豊富さについてはObjective-C側が有利です。ただし、書籍についてはSwift側が充実しており、逆にObjective-Cの書籍は徐々に減っているのが実情です。
SwiftとObjective-Cの活用場面
では、SwiftとObjective-Cはどのように使い分ければよいのでしょうか。この章では、SwiftとObjective-Cの得意分野と活用場面について解説していきます。
Swiftの得意分野
新しいアプリケーションを開発する場合、Swiftの利用が強くおすすめされます。
Swiftの魅力は、言語の最新性や高速性だけでなく、アプリのメンテナンス性向上にもあります。例えば、extension機能を使用することで、既存のクラスや構造体、データ型に後から新機能を追加できます。
Swiftのextension機能は、既存のクラス、構造体、列挙型などのデータ型に対して、新しいメソッド、計算型プロパティ、イニシャライザなどを追加するための仕組みです。この機能を使用することで、既存のコードを修正せずに、新しい機能を追加できます。
extensionはSwiftのコードをよりモジュール化し、再利用性と可読性を向上させるのに役立ちます。例えば、外部ライブラリやフレームワークの拡張、プロトコルの適合、コードの整理などに使用されます。
これにより、古いソースコードの有用性を維持しつつ、新しい機能を容易に組み込むことができます。
Objective-Cの得意分野
逆に、Swiftが不得意な分野のライブラリを使用する場合には、Objective-Cの利用が適しているかもしれません。Swiftではまだ対応が難しいライブラリを使用する場面もあるでしょう。
Swiftでアプリを開発していても、こうしたライブラリを使わざるを得ないことがあります。その際、SwiftからObjective-Cのライブラリを呼び出すことができ、アプリ内で両言語を組み合わせて利用することができます。
Swift・Object-C間の呼び出し方法
SwiftとObjective-Cの得意分野を踏まえた上で、両言語を組み合わせてアプリ構築をしたい場合を考えます。その際に必須になるのが、SwiftからObjective-Cを呼び出す方法と、Objective-CからSwiftを呼び出す方法です。
この章ではこれらの方法について解説します。
SwiftからObjective-Cを呼び出す
SwiftからObjective-Cを呼び出すこともできます。まず、呼び出したいObjective-CファイルをSwiftにインポートします。その後、下記のようなファイル内でインポートを行うことで、簡単に呼び出すことができます。
{ProjectName}-Bridging-Header.h
Objective-CからSwiftのプログラムを使用する
まずはObjective-CからSwiftのプログラムを使用できるようにします。
#import “[Product Name]-Swift.h”
プロダクト名を上記のように設定することで、両方のプログラムを簡単に利用できるようになります。
その後、Swiftのコードを呼び出したい場合、まずは以下のようなファイルをインポートしましょう。
{アプリ名}-Swift.h
以下のように記述することで、インポートが可能になります。
#import “ViewController.h”
#import “ObcCallSwift-Swift.h”
@interface ViewController ()
@end
@implementation ViewController
– (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
TestObject *testObject = [[TestObject alloc] init];
[testObject hoge];
NSString *str = [testObject hogeString];
NSLog(@”str:%@”,str);
}
@end
これにより、Objective-CからSwiftのメソッドを簡単に呼び出すことができます。
Objective-CからSwiftを呼び出す
SwiftからObjective-Cを呼び出すこともできます。まず、呼び出したいObjective-CファイルをSwiftにインポートします。
その後、下記のようなファイル内でインポートを行うことで、簡単に呼び出すことができます。
{ProjectName}-Bridging-Header.h
SwiftとObjective-Cの将来性、優先度
この章では、SwiftとObjective-Cの将来性と優先度について考察し、どちらの言語を選択すべきかを解説します。
将来性
将来性については、Swift側が有利です。なぜなら、Objective-CのコードをSwiftに置き換える事例が増えており、すでにObjective-Cは過去の情報資産とみる動きがあるからです。
Objective-Cは、2006年から言語仕様が変更されていません。15年以上も言語仕様が変わらないことから安定感は抜群なのですが、今後はレガシー化が進む可能性もあります。ちなみに、Apple社が提供している統合開発ツール「Xcode」も、すでにSwiftでの使用を想定して最適化が進められています。このことから、開発元であるApple社は、Swiftの普及とバージョンアップに注力していると考えられるのです。
学習の優先度
日本国内に限定すれば、2021年時点の求人数はSwiftとObjective-Cの間で大きな違いは見られません。ただし、ここで考慮すべきなのがプログラミング言語としての歴史の長さです。
Objective-Cは1983年に誕生し、すでに40年近い歴史を持つ言語です。直近のバージョンアップ(2007年)から数えても、すでに16年が経過しています。つまり、それだけ熟練のエンジニアが多く存在するということです。これに対してSwiftの歴史は9年、熟練のエンジニアは「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どちらを習得するか迷ったら
両言語の比較を通じて各言語のメリットとデメリットを理解しました。次に、どの言語を学ぶべきかについて、具体的にどのような人におすすめなのかを説明します。
SwiftとObjective-Cのどちらを学ぶべきか迷っている方は、ぜひ以下の情報を参考にしてください。
Swiftの習得がおすすめな人の傾向
まずはSwiftがおすすめな人を3つご紹介します。
以下の特徴に当てはまる人は、Swiftの習得がおすすめです。
-
・プログラミング経験がない・需要の高い言語を習得したい
・iOSアプリ開発に携わりたい
それでは順番に解説していきます。
プログラミング経験がない
Swiftは直感的に読み書きでき、シンプルで分かりやすいコードが特徴です。このため、プログラミング初心者や未経験者でも比較的簡単に習得できます。プログラミングを楽しみながら学びたい方には、Swiftを学ぶことをおすすめします。
需要の高い言語を習得したい
MMD研究所によるデータによれば、2022年時点では、日本のスマートフォン利用者の4割以上がiPhoneを使用しています。
さらに、iPhoneは世界的に高いシェア率を誇り、2021年だけで2.379億台が出荷されました。したがって、iPhoneアプリ開発の需要は今後一層高まるでしょう。
特に、SwiftはApple製品向けに設計された言語であり、高い信頼性と相性の良さから、世界中の開発者から支持を受けています。
したがって、Swiftは市場の需要を考える必要なく安心して学べるプログラミング言語です。
iOSアプリ開発に携わりたい
Swiftは、Appleが2014年に導入した独自のプログラミング言語です。
iOSアプリを開発する際には、一般的にSwiftを使用することが多く、特に自身のオリジナルiOSアプリをAppStoreで公開したい人にはおすすめの言語と言えます。
Object-Cの習得がおすすめな人の傾向
次に、Objective-Cを学ぶことをおすすめする2つのケースを紹介します。
-
・C言語を習得した人・プロジェクトの改修案件に携わりたい人
すでにC言語を習得している
Objective-Cはリリースから約40年が経過したプログラミング言語で、その間に多くのアプリが市場に登場しました。
これらのアプリはセキュリティ対策や利便性向上のために改修が必要です。
したがって、新規の案件は少ないですが、改修案件には大きな需要があります。一方で、Objective-Cはプログラミング言語の記述法が独特で複雑ですが、C言語を習得した人にとっては取り組みやすいでしょう。したがって、C言語を習得した人にはObjective-Cがおすすめです。
改修案件に興味がある
iOSアプリの主流はSwiftへの移行が進んでおり、そのためObjective-Cによる新規案件は減少傾向にあります。
このため、企業側もObjective-Cの専任エンジニアを積極的に採用しないことがあります。しかし、前述した通り、Objective-Cは改修案件が多い傾向があります。そのため、改修案件を希望するエンジニアが応募すれば、採用に結びつくケースが多いようです。
SwiftとObjective-Cに関するよくある質問
最後に、SwiftとObjective-Cの将来性と、学習の優先度について解説します。
Q1.SwiftとObjective-Cのメリット・デメリットは?
SwiftとObjective-Cのメリットとデメリットについて、SwiftはObjective-Cの課題を改善し、実行速度が速く、型推論など多くのメリットがありますが、開発の歴史が短く一部機能が不足しています。一方、Objective-CはC言語ベースでライブラリや知識が豊富ですが、表記が煩雑で分かりにくく、初心者にとっては取り掛かりにくい言語です。
Q2.SwiftとObjective-Cの特徴は?
Swiftの特徴は「簡潔で読みやすい記述方式」「安全性を高める多くの機能を搭載している」「静的型付け言語で型宣言を省略できる」などが挙げられます。
一方Objective-Cの特徴は「C言語を基に作成されているため多くのライブラリを使用できる」「表記が煩雑で分かりにくい」「iOSアプリ開発以外に使用されることがほとんど無い」点です。
Q3.SwiftとObjective-Cの関係は?
SwiftはObjective-Cとの連携を重視し、Objective-Cで作成したプログラムをSwiftで再利用可能に設計されています。バージョンアップ時には、Swiftへの完全な書き直しを回避でき、既存のObjective-Cコードを利用しつつ新しい機能をSwiftで追加できるため、スムーズな移行が可能です。
この柔軟性は開発者にとって利益をもたらし、iOSやMacアプリの迅速な開発を実現します。 Swiftは、既存の資産を有効活用しながらモダンなアプリケーションを開発するための優れたツールです。
Q4.SwiftとObjective-Cの互換性は?
SwiftはiOSやMacアプリの開発で使われてきたObjective-Cとの高い互換性があり、Objective-C++やC言語とも混在が可能です。この互換性により、SwiftとObjective-CのAPI共有やObjective-CのフレームワークをSwiftにインポートするなど、シームレスな連携が実現できます。
Q5.SwiftとObjective-Cはどちらが処理が早い?
Swiftは処理速度において有利です。Objective-Cとの比較では、同じ条件の整数検索で2.6倍の速さが示されており、その差は明白です。SwiftはAppleの高速コンパイラ「LLVM」を標準で採用しており、コンパイルにかかる時間も短縮されます。ただし、Objective-Cも速度には問題ありません。どちらも優れた言語であり、用途に応じて選択できます。
まとめ
この記事では、iOSアプリケーション開発における主要なプログラミング言語であるSwiftとObjective-Cに焦点を当てました。Swiftはシンプルで直感的な記述が可能で、特にプログラミング初心者には優しい言語です。一方、Objective-Cは歴史が長く、多くのライブラリや知識が蓄積されていますが、記述が煩雑で初学者にはハードルが高いこともあります。
処理速度や需要など、それぞれの言語に一長一短があります。そのため、最終的な選択は、個人のスキル、目標、プロジェクトの要件に応じて行う必要があります。
自分のスキルやプロジェクトの性質に合った選択をすることで、より成功する可能性が高まります。どちらの言語を学ぶにしても、未来のアプリ開発に向けて前向きに取り組むことが大切です。どちらを選んだとしても、iOS開発の世界で自分のスキルを活かし、新しいプロジェクトやアプリを作っていきましょう。
ITエンジニアの転職ならレバテックキャリア
レバテックキャリアはIT・Web業界のエンジニア職を専門とする転職エージェントです。最新の技術情報や業界動向に精通しており、現状は転職のご意思がない場合でも、ご相談いただければ客観的な市場価値や市場動向をお伝えし、あなたの「選択肢」を広げるお手伝いをいたします。
「将来に向けた漠然とした不安がある」「特定のエンジニア職に興味がある」など、ご自身のキャリアに何らかの悩みを抱えている方は、ぜひ無料のオンライン個別相談会にお申し込みください。業界知識が豊富なキャリアアドバイザーが、一対一でさまざまなご質問に対応させていただきます。
「個別相談会」に申し込む
転職支援サービスに申し込む
※転職活動を強制することはございません。
レバテックキャリアのサービスについて