iPhoneやiPad向けのアプリ開発といえば、長らくMac提供の公式開発言語であるObject-Cまたは、Swiftでした。

しかし、ここ数年、クロスプラットフォームアプリの開発技術が次々と確立し、Object-CやSwift以外のプログラミング言語でiOSアプリ開発するのが当たり前になりつつあります。

今回は、改めて、Object-CとSwiftの特徴を整理すると同時に、この二つ以外の、iOSアプリ開発が可能なプログラミング言語(クロスプラットフォーム環境)についてもご紹介したいと思います。

iOSアプリとは?

改めて説明することではないかもしれませんが、iOSアプリについて、確認しておきましょう。

iOSアプリとは、その名の通り、iOS上で動くアプリのことです。iOSが搭載された機器は、Macから発売されたiPhoneとiPadのみです。ライバルのandroidは様々なメーカーのスマホに搭載されていますが、iOSはMacから発売されたハードウェアにしか搭載されていません。

ちなみに、パソコンでもまったく同じことが言えます。Windowsが様々なメーカーのパソコンに搭載されているのに対して、macOSはMacbookやiMacなどのMac製品にしか搭載されていません。iOSもmacOSも純粋なシェア率だと、ライバルに負けていますが、一部の熱心なファンを獲得することに成功しています。

さて、話を戻すと、iOSはいわゆるUnix系OSで、実はパソコン用のmacOSをスマホ用に最適化したものです。ところが、長らくiOSアプリはmacOS上で動作できませんでした。

しかし、2019年秋にリリースされた、『macOS Catalina』から、ついにmacOS上でiOSアプリの動作が可能になりました。つまり、2020年現在、iOSアプリは、macOSアプリと呼ぶこともできるのです。

開発にはどの言語がいいのか Object-C

まずは、基本の基本である、Object-Cから見ておきましょう。

Object-Cは、その名前があらわす通り、「オブジェクト指向を取り入れたC言語」です。C言語にオブジェクト指向を取り入れたプログラミング言語としてはC++もありますが、オブジェクト指向への対応法が異なるため、コーディング方法に差異があります。

C言語の後継として生まれたので、本来、汎用プログラミング言語として、多様な環境で利用できるだけのポテンシャルを持つObject-Cなのですが、残念なことに、macOSとiOS、そして、それらのご先祖様にあたるNeXTというOSの専用プログラミング言語と化しています。

筆者はObject-Cを悪い言語だと思いません。しかし、1984年リリースと歴史が長い分、いまどきのモダンなプログラミング言語よりも、習得難易度が高く、しかも、macOSとiOSの専用プログラミング言語状態のため、応用が利かないという、どうにもならない弱点を抱えています。

そのため、iOSアプリ開発でObject-Cが必須でなくなった今、iOSアプリ開発のためにObject-Cを極める必要は薄くなったと感じます。

開発にはどの言語がいいのか Swift

Swiftは歴史あるObject-CにかわるmacOSやiOSの公式標準開発プログラミング言語として、2014年にMacから発表されたプログラミング言語です。

従来のObject-Cと共存ができるのですが、世代が異なるため、Swiftにあって、Object-Cにない機能があるなど、共存させようとして苦労している開発者が多数です。また、SwiftとObject-C間のデータのやり取りのところで、バグを起こしてしまった、という話もよく聞きます。基本的には併用しないのがベターです。

伝統のObject-Cと革新のSwift、どちらを選択するかですが、Swiftの方がObject-Cより習得難易度が低いため、いまからプログラミング言語を学ぶのであれば、Swiftの方が良いという意見が多数です。

ただし、Swiftは毎年バージョンアップが行われており、今後、Python2.0とPython3.0のような「破滅的な仕様変更」が起きる可能性もあるため、Object-Cが扱えるベテランエンジニアは、安定しているObject-Cを支持する向きが強いです。

そもそも論として、iOSアプリ開発でSwiftの利用が必須でなくなった今、やはりiOSアプリ開発のためだけにSwiftを極める必要は薄くなったと感じます。

開発にはどの言語がいいのか その他の言語

繰り返しになりますが、長らくiOSアプリの開発は、公式開発言語であるObject-Cまたは、Swiftでしたが、現在は、クロスプラットフォーム開発環境を整えることで、Object-CやSwift以外のプログラミング言語で、iOSアプリとandroidアプリを同時開発できるようになっています。

という訳で、クロスプラットフォーム開発環境と、その開発環境で利用できるプログラミング言語をご紹介いたします。

①React Native

Facebookが公開しているオープンソースのモバイルアプリケーション用フレームワークです。iOSアプリとandroidアプリの両方の開発ができ、開発元のFacebookはもちろん、メルカリも採用しているようです。

対応プログラミング言語としては、JavaScript, Java, C++, Objective-C/Objective-C++, Pythonになります。オープンソースということで、インターネット上での情報も多く、利用がしやすいクロスプラットフォーム開発環境です。

②Visual Studio

Microsoftの統合開発環境(IDE)であるVisual StudioでもiOSとandroidのクロスプラットフォーム開発が可能です。iOSとandroid以外にもWindowsアプリにも対応できます。

Visual Studioは対応言語が多く、C/ C++、Visual Basic、C#、F#、JavaScriptさらには、プラグインを適用することでPythonやRubyにも対応しています。

ちなみに、MicrosoftはXamarinというクロスプラットフォーム用のライブラリーやフレームワークを開発していた会社を2016年に買収しています。

③Kotlin/Native

androidの公式開発言語である、KotlinでiOSアプリとandroidアプリを同時開発することができる技術がKotlin/Nativeです。

Kotlin/Nativeの概要としては、Kotlinで作成したソースコードをiOSアプリ、androidアプリ向けにコンパイルする技術です。この二つ以外にも、macOSアプリ、Windowsアプリなどにもコンパイルすることができます。

結局何がいいの?

自身のスキルや、キャリアプランにもよると思いますが、プログラミング初学者の方が、これから、iOSアプリ開発のためにプログラミング言語の学習を始めるのであれば、習得難易度と、将来性の観点から次の三つのプログラミング言語がベターだと思います。

・JavaScriptまたはPython(React Native)

・Kotlin(Kotlin/Native)

公式開発言語であるSwiftやObject-Cはどうなの?と聞かれると、正直、イマイチです。

理由としては、どちらのプログラム言語も上の三つより習得難易度が高く、実質、iOSアプリとmacOSアプリ開発専用プログラミング言語にとどまっているからです。それでもあえて、公式開発言語で開発したいとお考えであれば、Objective-Cの方がおすすめです。

Objective-Cは習得難易度という意味で、iOSアプリ開発ができるプログラム言語の中で、もっとも難しいプログラミング言語だと思います。特に、モダンなプログラミング言語なら、自動で行ってくれるメモリ管理も、自らで行わなくてはならないのは、初心者には難しいことだと思います。しかし、技術の幅を持たせるために、苦労して学ぶ価値があります。

まとめ:クロスプラットフォーム開発が当たり前の時代に

クロスプラットフォーム開発されていない純粋なiOSアプリは、iOSのシェアと命運を共にすることになります。

そう考えたとき、近年、iOSのシェアがandroidに押されつつあるうえに、中国のスマホメーカーであるHUAWEIが新たなスマホ用OS『Harmony OS(鴻蒙OS)』を開発・市場投入するなど、iOSの先行きに暗い影を落としそうな、ネガティブなニュースが続いているのが実情です。

もちろん、iOSアプリが動くmacOSである、『macOS Catalina』の登場や、新型iPhoneSEの発表のニュースに盛り上がりを見せるなど、暗いニュースばかりではありません。iOSは一定の人気を保っているのは間違いありません。

しかし、今後は、Object-CとSwiftで「androidでは動かない純粋なiOSアプリ」を開発することは、まず推奨されないでしょう。特にビジネスでスマホアプリを開発するのであれば、なおさら、効率アップのためにクロスプラットフォームでの開発です。

今すぐシェアしよう!
今すぐシェアしよう!