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



iPhoneアプリ新規開発、SwiftとObjective-Cのどちらを選ぶ?
目次
  1. はじめに
  2. Objective-Cについて
  3. 長所
  4. 短所
  5. Swift言語について
  6. 長所
  7. 短所
  8. 新規開発時の選択肢
  9. 機能的観点
  10. 人材観点
  11. メンテナンス観点
  12. まとめ

はじめに

iPhoneアプリをネイティブアプリ(※)として開発する場合、最初に、SwiftとObjective-C、どちらの言語を使うかという選択が必要です。

(※) Webアプリとして開発する場合は、クライアントサイドはHTML/Javascriptで実装します。

iPhoneがリリースされた2007年には、開発言語はObjective-Cしかありませんでしたが、2014年のWWDCでSwift 1.0が発表されて以降、Swift言語も選択肢に入るようになりました。

リリース直後のSwiftでは、iOSのすべての機能を使うことができなかったため実際のアプリ開発に使うことはありませんでしたが、記法がわかりやすい(Objective-Cとは異なり、他の言語に近い)ため期待が高まりました。Objective-Cの独特な記法になじめない人は多かったのです。Swiftもバージョン3.0の頃からiOSのすべての機能を使うことができるようになりました。

このような状態のもと、あらためて、「iPhoneアプリを新規開発する場合、SwiftとObjective-Cのどちらを選択した方が良いか」考えてみます。

Objective-Cについて

長所

Objective-C(1.0)がリリースされた1983年では、C言語と比較した言語的な長所がありましたが今でも長所と呼べるものは思いつきません。

Objective-Cの方がSwiftに比べ早い段階からiPhone開発に使われているので、アプリ開発用ライブラリはObjective-C用で開発されているものが多いです。

また、Appleが採用した以降(バージョン 2.0)以降、言語仕様の変更がないため、古いソースも問題なくコンパイルできます。

短所

C言語とsmalltalkを組み合わせたような言語のため、現在メジャーな言語とはソースコードの記述が大きく異なります。このため、言語習得のための学習コストはかなり高くなっています。

Swift言語について

長所

Swiftのバージョンは、現在、4.2です。2014年にリリースされたSwift 1.0は製品というよりむしろプロトタイプという状態でした。その後、Swiftはオープンソースになった2016年からテーマ別に開発が行われています。また、言語に対する要望もコミュニティベースで議論されてSwiftに反映され、使いやすい言語になってきています。

GitHub - apple/swift: The Swift Programming Language

モダンなオブジェクト指向言語(Java, Python, Rubyなど)と似た記述方法が使えるため、少ない学習コストで使えるようになります。iPhoneアプリを新規開発する場合に開発者を容易に集めることができます。

Appleも開発者サイトにSwiftのページを置いているように今後Objective-CよりSwiftを進めていくように思えます。新機能がリリースされた場合は必ずSwift版のAPIも同時にリリースされています。

また、iPhone開発用フレームワーク/ライブラリもSwift版が増えてきたため、なくて困るという状況はありません。

Swift.org - Swift Source Compatibility

短所

ソースコードの修正が必要となるバージョンアップが頻繁に行われているため、ソースコードのメンテナンスが必要となります。iOSの新しい機能機能を追加する場合でも、既存コードの修正、つまりテストが必要となるため余分なコストがかかってしまいます。

新規開発時の選択肢

アプリを新規開発するにあたり言語を選択するための以下の3つの観点があります。

  • 機能的観点
  • 人材観点
  • メンテナンス観点

機能的観点

当たり前の話ですが、最も重要なことは、開発するアプリの機能を実現できるかどうかという点です。

iOSのすべての機能は、SwiftとObjective-Cのどちらの言語でも使うことができるため、この観点は、言語を選択する条件にはなりません。

また、どちらの言語もマシン語にコンパイルされるため、パフォーマンスの差異もありません。これも言語を選択する条件にはなりません。

人材観点

次に重要なのは、開発者を調達できるかどうかという点です。

社内の人材を調達する、外部の人材を調達するという選択肢があります。社内にObjective-C経験者が多く存在する場合、開発者が好きな言語を選んで良いと思います。一方、外部の人材を調達する場合、Swiftを選択した方が良いでしょう。Swiftの方が学習コストが低いため、今後、Objective-C開発者より簡単に人材を集めることができます。Swiftの学習コストが低いことを示すために、新刊書籍の割合と開発者数を調べました。

新刊書籍の割合

書籍を使って学習する人は多いと思います。そこで、Objective-CとSwiftに関する新刊図書がどれくらい出版されているか国立国会図書館サーチ(NDL Search)(※)を使って調べました。

(※) 国立国会図書館には、国内で出版された書籍は必ず寄贈されるので、新刊図書の検索に使えます。

「Objective-C」の検索結果(出版年の制約なし)は45件で、最新刊は、2015年の発行された「Objective-C逆引き大全555の極意 = 555 Tips to Use Objective-C Better! : 現場ですぐに使える!」でした。

一方、「Swift」の場合、2017〜2018年に発行された書籍を目視で数えた結果、15件でした。車関連(SUZUKI Swift)の書籍もヒットするので結果から省く必要がありました。

Objective-Cは言語仕様は変わっていないため古い図書も参考にできますが、 iOSがバージョンアップする度に追加された機能については、AppleのDeveloperサイト(英語)を参照しなければなりません。

開発者数

以下の記事は、2017年番のプログラマー年収ランキングです。 Swiftはトップ10(4位)に入っていますが、Objective-Cはトップ10に入っていません。Objective-Cプログラマーの年収はもっと良いかもしれませんが、プログラマーの絶対数はSwiftより少ないと考えられます。

また、3位にランクされているKotlinはIntelli JというIDEを開発している会社がSwiftに触発されて開発した言語で、Androidの公式言語になっています。Swiftという言語がわかりやすい言語ということの証明になると思います。

プログラマー年収ランキング2017!言語別、第1位はScalaの626万円 | みんなのスタンバイ

メンテナンス観点

開発したアプリは多くの場合メンテナンスする必要があります。その時に調達できる人材を考えるとSwift言語を選択した方が良いでしょう。

まとめ

アプリ開発にあたり、OS開発者、サードパーティーのフレームワーク/ライブラリ開発者、アプリ開発者という人材が参加してエコシステムを形成しています。中心はであり、その人材調達を含めた開発コストを考えるとSwift言語を選択した方が良いでしょう。

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