【Objective-Cの求人・案件情報付き】需要や将来性、プログラマの開発単価など

17/12/14 18:16:44     19/05/04 23:04:21

Objective-C

Objective-Cの案件情報【随時更新中】

→Objective-Cの案件情報一覧はこちら

 

MacやiPhoneなど、他のPCやスマートフォンとは一味違った統一性の高いデザインで有名なアップル社ですが、その設計思想はソフトウェアの開発部分にまで反映されていて、多くの場合、開発がしやすいように作られています。

さて、アップル社が中心となって提供しているプログラミング言語はObjective-CとSwiftが挙げられますが、今回はObjective-Cについて解説していきます。

Objective-Cでプログラムする人

Objective-Cとは?特徴は?

Objective-Cとは

Objective-Cは、C言語にSmalltalk方式のオブジェクト指向機能を取り込んだプログラミング言語です。

1983年にブラッド・コックスにより開発され、当初はStepstone社が主にサポートを行なっていましたが、当初は決して表舞台に出ることのないマイナーな言語でした。

その後、1985年にアップルコンピュータを事実上追放されたスティーブ・ジョブスが、NeXT社を創立、主力製品となるNeXT Computer及びNeXTSTEPを開発するときに、主力言語としてObjective-Cを採用したことで、やがて表舞台に出るようになりました。NeXT自体は商業的には成功したとは言えませんが、その先進的なシステムはIT業界に大きな影響を与えたと言われています。

1997年にNeXT社はアップル社に買収され、スティーブ・ジョブスは当初はコンサルタントとして、のちに暫定CEOとしてアップル社に復帰しました。Mac OSの後継OSとしてMac OS X(後にOS Xを経て、macOSに改称)が2001年に発売、これは技術的にはNeXTSTEPを発展させたものであることから、Mac OS Xの主力言語として使われるようになりました。

その後、2008年にはiPhone向けネイティブアプリ開発キットが登場したことにより、iOS向けアプリ開発にも使われるようになりました。2014年からはSwiftが登場したことにより、アプリ開発ではSwiftへ移行する一方で、現在においてもSwiftと共にmacOSやiOSなどを対象としたアプリ開発の主力言語として使われ続けています。

Objective-Cのメリット

わかりやすいメソッドルール

Objective-Cはラベルと引数からなる独特のメソッド呼び出し法則で、なんのための引数なのかをかなり判別しやすいという特徴があるため、コードがわかりやすくなる傾向があります。

コードが長くなる弊害こそあるものの、しっかりラベルが正しくされていれば、間違っているコードは間違っているように見えるようになるため、ミスを防ぎやすくなります。

C言語のノウハウをほぼ全てそのまま使える

C言語の上位互換言語という性質上、C言語で習得したノウハウはほぼ全てObjective-Cでもそのまま使うことができます。膨大なC言語の資産をほぼ全て使うこともできるため、開発の自由度は高いと言えます。

また、必要であればC言語のコードを書くことができるため、Objective-Cで書いている部分がパフォーマンス的に厳しいところでもC言語に書き直すことでパフォーマンスをあげるということもできます。

C++とも混在させることができる

Objective-CとC++はそれぞれ拡張させた部分が殆ど干渉しないため、それぞれのコードを混在させることができます。これによって、C++の遺産も使うことができます。

これによって、開発者はObjective-CとC++の機能を組み合わせて、コードを書き上げることが可能となり、高度な開発では気をつけるべきことが少なくないものの、自由度の高い開発を行うことができるといえます。

Objective-Cのデメリット

C言語のデメリットを全て引き継いでしまっている

まず、C言語の上位互換言語という性質上、C言語のデメリットを全て引き継いでしまっています。メモリー管理システムが複雑なこと、ポインターなどの問題が挙げられます。

そのほか、C言語のメモリー管理システムとObjective-Cのそれとでは全く違う手続きをしなければならないということもあり、戸惑いが発生する可能性が高まるものと考えられます。

オブジェクト指向部分の文法がかなり独特

いわばC言語にSmalltalk風のオブジェクト指向システムを載せたような形になっている性質上、オブジェクト指向システムの文法がかなり独特のものになっています。メソッドの定義とその呼び出し方がかなり独特で、C++やJavaといった他のオブジェクト指向言語とはかなり異質なものとなっていると言えます。このため、分かりやすさという点では決してマイナスではないものの、純粋に1行が長いコードになりがちになります。

定期的なメンテナンスの必要性が高い

アップル社の傾向として、レガシーな機能の互換性を確保することにこだわらない傾向があり、新しいバージョンのOS向けのSDKが出た時に古いAPI等を削除してしまう傾向があります。現在ではiOS/macOS共に概ね1年に1回メジャーアプデートが行われるため、それを見越したメンテナンスが強く求められます。

また、言語仕様でもObjective-C 2.0での変更のほか、Auto Reference CountingやModern Objective-C Syntaxの導入や、SwiftとのAPI互換性の改善が行われたなど、言語仕様の変更がしばしば行われています。

こういったこともあり、メンテナンスしやすいように開発する事が望まれます。

Objective-Cでプログラムする

Objective-CとSwiftの違い

Objective-CとSwiftは共に、macOS/iOSアプリ開発向けの主力言語として使われていて、Swiftの登場と発展とともに、その互換性が高められる形でObjective-Cにも改良が加えられているため、Objective-Cが使えるようになれば、Swiftも比較的容易に使えるようになるといえます。とはいえ、Objective-CとSwiftとでは言語仕様に違いが見られます。

Objective-Cでは言語仕様面での型/エラーチェックが甘い部分があり、安全性という面ではSwiftに負けるものの、Swiftでは4.0の段階では実現できていないバイナリーのABIの安定性が確保されているということもあって、フレームワークやライブラリー開発がしやすいという特報があります。特にソースコードを公開したくない場合においては有利となります。

依然としてObjective-CとSwiftではmacOS/iOS向けに特化しているため、どちらかを覚えていればもう片方も苦労せずに使える一方で、得意/苦手分野が大きく分かれているため、目的に応じて使い分けることが求められます。

なお、案件・エンジニアにおいては、ベンチャー系が積極的にSwiftを採用する傾向にある一方、ライブラリー開発に特化している場合や大手の場合はObjective-Cを好む傾向があるようです。

全体的に見れば、新規に展開されるプロジェクトではSwiftが採用されるようになりつつある一方で、既存の膨大なObjective-Cの遺産が多数あるということ、Objective-CとSwiftで得意分野が分かれていて棲み分けが進められているものと推測できます。

Objective-CとJavaの違い

Objective-CとJavaでは、ともにスマートフォンアプリ向けの開発言語として使われているという点では共通しているといえます。また、JavaがObjective-Cの影響を受けているということもあり、いくつかの点で似ている部分があります。

一方で、主なプラットフォームや歴史の違いもあり、違いがあり、比較が難しいところもあります。

  • Objective-Cはオブジェクトシステムにおける型チェックがかなり甘いが、Javaは幾分厳格。
  • nullチェックの扱い。Objective-Cではnullポインターにアクセスした時は無視するが、JavaではNullPointerExceptionが飛ぶ。
  • Objective-Cは主にiOSおよびmacOSのアプリ開発に使われている一方、JavaはAndroidアプリのほか、ウェブアプリやシステムなど多岐にわたる分野で開発が行われている。

このこともあり、案件の対応のしやすさではObjective-Cの方がやや軍配があがる一方で、事実上対応分野がiOS/macOSアプリ開発に限られるということもあり、分野を広げたい場合は他の言語を覚えることが必須となります。

Objective-Cとその他の言語との比較

Objective-CとSwiftの比較

Objective-CはもともとC言語をベースに作られたプログラミング言語で、AppleがiOSアプリケーションの開発に取り入れたことで有名です。結果的に、数年前まではObjective-CがiOS開発の主流言語でした。

現在のiOSの主流はSwiftですが、Objective-CからSwiftに移り変わった理由はSwiftの利便性や簡易さです。たとえばSwiftの方が同じコードを書いてもコードが短くなり、ファイル数も少なく済みます。

今後はより一層Swiftの割合が増えて逆にObjective-Cが減っていくと考えられますが、現状はまだ共存しています。もともとObjective-Cで作られていたシステムがまだ残っているという理由もありますが、Swiftは歴史が浅い分ライブラリが不足している面があります。

プログラミング言語は開発者側でライブラリが用意されることもあれば、期間を経て有志がライブラリ等便利なツールを開発することもあります。歴史が浅いとどうしてもすべてのツールを最初から用意することはできないため、Objective-Cのように歴史のあるプログラミング言語には劣る面が出てきます。

またSwiftからはObjective-Cを呼び出すことも可能なので、ベースはSwiftで開発し、Swiftの弱点部分のみObjective-Cで作りこむようなスタイルも現状一般的です。

Objective-Cとandroidの比較

Objective-CはiOSでよく使われる言語なので、androidで使用されることは比較的少ないです。物理的に不可能なわけではな前例がないわけではありませんが、ゼロからandroidアプリを作るのにあえてObjective-Cを使用するメリットはありません。

情報量やライブラリ等を考えるとandroidはJavaやKotlinでの開発が得策です。androidアプリをあえてObjective-Cで実装する理由があるなら、先にiOSアプリが存在する場合です。

先にiOSアプリがあってもandroidは別で書き換えた方が良いのですが、強引にObjective-Cで動かすことも可能です。個人で使用するようなアプリなら文字化け等のトラブルが発生しても良いですが、リリースするようなアプリならandroidに適性のある言語に書き換えた方が良いでしょう。

 

Objective-Cを勉強する人

Objective-Cの在宅案件はある?

Objective-CはiOSでよく使われていた言語です。そのため結論から言うと在宅案件向きの言語で、実際今現在のObjective-Cの案件は多かったです。ただ、現在Objective-Cは終わった言語だとまでいうわけではないのですが、メイン言語にするのは考え物です。

Swiftに役割が奪われている

今までObjective-Cで作られていたようなシステムも、新規ではSwiftで開発されるようになっています。Objective-Cの既存のシステムも改修の際にSwiftに書き換えられるケースが多く、最近iOS開発を始めた方のなかにはObjective-CがiOSのメイン言語であったことを知らない方もいるかもしれません。

そのくらいObjective-Cの活躍の場は縮小しているので、今からiOS案件を受注するならSwiftを優先した方が明らかに効率的です。

Objective-Cの需要がないわけではない

Objective-Cは上記の通り需要が縮小傾向にありますが、需要がまったくなくなったわけではありません。ただし、Swiftとセットスキルであることが前提です。Objective-C単体での案件はかなり少なくなっていますが、たとえばObjective-CをSwiftに書き換えるような案件はまだ存在します。

Swiftは書けるけれどObjective-Cの経験はない、といった人も多いため、Objective-Cのコードを書けることで差別化が図れます。今後はObjective-CからSwiftに書き換えるような案件も減っていくと予想されますが、現在はまだObjective-Cに活躍の機会があります。

iOSの開発を受注するならSwiftを優先的に勉強すべきで、次に優先順位が高いのはAndroidでしょう。iOSとAndroidの基礎ができていて、余裕があるならObjective-Cを勉強するのも良いかもしれません。

Objective-Cの勉強方法

Objective-Cは開発ツールの関係から、比較的学習しやすい一方、C言語の拡張であるという性質上、C言語を覚えることが必要であるという部分もあり、C言語を学習したことがない場合は、覚えなければならないことは多いといえます。実際に開発をする場合は実質的にMacが必要ですが、Xcodeをインストールして使いこなすことで、Objective-Cも比較的容易に使いこなせるようになると言えるでしょう。

近年ではpaiza.ioなどのウェブ上で利用可能なソースコード記述・コンパイル・実行ツールも登場しています。これについては、XcodeのObjective-Cとは仕様が異なるものの、気軽にObjective-Cのプログラミングの練習に使うことができます。

なお、Objective-Cは、C言語の拡張ということもあり、C言語の基本的なことを覚える必要があります。プロジェクトによっては、多様なC言語のライブラリーを使うことも想定されます。

Objective-Cを学習するにあたって、すでにC言語を習得しているという場合は、基本的にObjective-Cで追加された仕様を学習するということになります。一方、C言語を習得していない場合は、まずはC言語で最低限必要となることを習得したのち、Objective-Cで追加された仕様をC言語と並行して学習することになると考えられます。

学習するにあたってはそこまで苦労しないものの、C言語の経験有無で学習しなければならないことが大きく変わるという点もあり、根気よく学習し続けることが強く求められます。

Objective-Cの将来性

Objective-Cは、それ単体では今後は厳しくなっていくことが予想されます。というのは、ベンチャーを中心に新規のプロジェクトではSwiftを採用するというケースが増えており、Objective-Cを採用するケースが相対的に低くなっているということが挙げられます。従って、macOS/iOSアプリ開発においては、Swiftも併用する事が望ましいといえます。

また、事実上macOS/iOSに特化した言語に過ぎないという状況があり、マルチプラットフォーム展開に失敗し、さらにMacシリーズまたはiPhone/iPadシリーズの展開が終了または普及度が大幅に下がったときに壊滅的な影響を及ぼすことも考えられます。

とはいえ、Objective-CはC言語から発展してきた言語であるというのも事実であり、万一Objective-Cが廃れた場合でも、C言語や、さらにC++も使える場合はC++でつなぐことはできますが、分野が変わるので、macOS/iOSアプリ開発のプロジェクトとは勝手が違う可能性が高いといえます。

スティーブジョブス

まとめ

スティーブ・ジョブスがNeXTを立ち上げたときにメインの開発言語として使われるようになってそのポテンシャルが評価され、その後はmacOS、iOSとともに発展していったObjective-Cですが、Swiftの登場によって、これから先はObjective-Cのみでは厳しくなっていくことは避けられないものと考えられます。

一方で、依然としてSwiftが実現できていない機能がObjective-Cでは実現できているものも少なくなく、システム面ではObjective-Cに軍配があがる場面も少なくないということもあります。

当面の間はObjective-Cが必要で、Objective-CとSwiftでは得意分野が異なるということで、両者の住み分けが進むとこともあり、決して無視することはできないと考える事ができます。

macOS/iOSアプリの開発では、今後はSwiftに進むものと考えられる一方で、Objective-Cが求められるシチュエーションに備えて、Objective-Cも使えるようにできれば、かなり強みにはなるでしょう。

案件量が豊富なアルマサーチ

アルマサーチ

最後に、アルマサーチのご紹介!

アルマサーチはフリーランス向けに案件をご紹介することに特化したエージェントサービスです。豊富な案件量から、安定して継続的な案件のご紹介を実現しており、口コミから登録エンジニアが急増中です。

アルマサーチが選ばれる理由

  1. 豊富な案件量。週3?4日の案件や在宅リモート案件も。
  2. 優秀なコンサルタント陣。
  3. 案件に参画後もしっかりサポート。

豊富な案件量

フリーランス向けに特化し、業界屈指の案件量を誇ります!週3?4日の案件や、在宅リモート案件もありますし、その他あらゆる希望をしっかりお伝えください。最適な案件のご紹介をさせていただきます。

優秀なコンサルタント陣

技術に疎く、開発の希望を伝えても響かないエージェント・・・嫌ですよね。アルマサーチにはそのような者は一切おりません!さらに独立にまつわる税金や保険関係に詳しいスタッフが徹底的にサポートさせていただきます。

案件に参画後もしっかりサポート

常駐先が決まった瞬間に、一度も連絡が取れなくなるエージェント・・・いますよね?アルマサーチでは、そのようなことは一切ありません!常に電話やメールは即対応しますし、月に1度のランチミーティングなどから現場の状況を細かくヒアリングし、就業環境改善に尽力いたします。

相談する

人気記事

編集部おすすめ記事

この記事を読んだ人はこんな記事を読んでいます

案件探しやフリーランスになるための相談する