もしiOS/macOSのアプリ開発でどの言語を使えばいいのか悩んでいるのであれば、SwiftもObjective-Cも両方とも覚えておいたほうが良いだろう。というのも、現時点ではSwiftもObjective-Cもどちらも万能と言えるものではなく、なおかつ他分野の開発にも関わる場合、両方の考え方は覚えておいたほうが良いからである。
それぞれの言語の特徴について
SwiftはiOS/macOSを最大限に活かせる
SwiftはiOS/macOS向けに作られて、現在ではオープンソース化がなされている新しい言語で、比較的簡単な記述でネイティブアプリを開発できるという利点がある。また、Objective-Cと比較して、言語仕様の面でスッキリしている部分があり、パフォーマンスを上げやすいという利点も大きい。また、Objective-Cと比較して記法がそれほど特殊ではなく、JavaやC++などの他のオブジェクト指向言語に比較的近い書き方もできる。
一方、Objective-Cと比較して言語仕様が頻繁に変更されるという問題点もあり、Xcodeのバージョンアップに従ってマイグレーションが必要になるという課題点がある。実際問題として、Xcode 7.3/Swift 2.2で開発されたフレームワークがXcode 8.0/Swift 3では使うことはできず、ソースコードの混在も不可能で全体でバージョンを統一させなければならないという問題が大きい。
従って、アプリを開発するのであれば問題ないが、フレームワーク・ライブラリーの開発には分が悪いという問題がある。
Objective-Cは互換性重視
Objective-Cは元々はC言語にSmalltalkのオブジェクト指向システムを追加するという形で拡張された言語で、元々はmacOSの前身であるNEXTSTEPで使われていた。その仕様は改良が加えられており、現在ではAuto Reference Countingを使用することで明示的に参照カウントをする必要がほとんどなくなったこと、C言語とC++を混在させることで連携させることも可能であり、C言語やC++の機能を最大限に利用することができるという利点がある。Swiftで問題となるバージョン間問題も基本的には起こらないため、ライブラリーの開発には適していると言える。
現在ではSwiftとの親和性が上がるように力が入れられているが、言語仕様面で比較的古く、Swiftと比較してパフォーマンスはそれほど良くないため、パフォーマンスを重視したい場合は、むしろSwiftを使ったほうが良いだろう。また、メモリーがらみの問題を引き起こすというC言語由来の問題をそのまま引き継いでいるため、その点も気をつけたいところである。
現時点ではそれなりに住み分けがなされている
現時点ではライブラリーにはObjective-C、アプリやフレームワークはObjective-CまたはSwiftというような使い分けがなされているようである。それぞれの利点、南天を考えた時、これが最も現実的のように考えられる。個人的にはSwiftは使われるようになるのはほぼ確実視しているが、しばらくの間は双方とも使われ続けるように考えられる。
最後に
現状ではSwift、Objective-Cにはそれぞれ利点・難点があり、それを踏まえた上で住み分けがなされているということを説明した。それを踏まえると、もしiOS/macOSアプリやライブラリーなどを開発したいのであれば、基本的には両方とも学習したほうが良いだろう。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。