これからスマートフォンやタブレット向けにアプリを開発したい方が覚えるべきプログラミング言語は何でしょうか。目的や作りたいアプリによって変わってきますが、その選択肢を知っておくのは大事なことです。
より良い開発体験を獲得するためにも、最初に手を着けるべきプログラミング言語は何か知っておきましょう。
iOS向けに開発したい
あなたがmacOSを持っていて、まずはiOS向けに開発したいというのであればSwiftやObjective-Cといったプログラミング言語が選択肢になるでしょう。どちらも無料で利用できます。また、開発環境としてのXcodeも無料です。
Objective-CはSwiftの前に存在していたプログラミング言語で、今後を考えるとSwiftで開発をはじめる方が良いでしょう。また、SwiftであればmacOSを持っていなくともiPad向けにリリースされているSwift Playgroundアプリを使った開発も可能です。
Android向けに開発したい
あなたがWindowsやmacOS、Linuxを持っていて、Android向けにアプリ開発を行いたいのであればJavaまたはKotlinが選択肢になります。もちろんどちらも無料のプログラミング言語ですし、開発環境であるAndroid StudioはWindows/macOS/Linux向けに無料で提供されています。
元々AndroidアプリはJavaでしか開発できませんでしたが、Kotlinも公式の開発言語として追加されています。KotlinもJava VM(仮想マシン)上で動作し、Javaコードからの変換が可能です。JavaとKotlinどちらを選ぶかは、個人やチームの好みや体制に依存するでしょう。
複数の環境向けに開発したい
iOSとAndroid、どちらでも動作するアプリを開発したい場合にも、幾つかの選択肢があります。
JavaScript/TypeScriptで開発したい
JavaScriptは世界中で人気のあるプログラミング言語であり、開発者人口も多いです。そんなJavaScriptや、そのスーパーセットであるTypeScriptを使ってアプリ開発を行いたい場合には、3つの選択肢があります。
Cordova
CordovaはWeb技術(HTML/JavaScript/CSS)を使ってアプリ開発を行います。UIはHTMLとCSSで記述して、ロジックはJavaScriptを使います。Web技術だけでは足りない機能(アプリ内課金やプッシュ通知など)はCordovaプラグインと呼ばれる機能によって実現します。
ここ数年HTMLの機能は拡充しており、アプリ特有の機能に頼る機会は減りつつあります。2023年にはiOSにもWeb Push機能が実装されるとあって、さらにその流れは強まるはずです。
React Native
React NativeはWeb技術は使わず、JavaScriptだけでUIやロジックを記述します。スマートフォンにあるJavaScriptエンジンを使って実行する仕組みを取っているので、Cordovaを使った場合よりもパフォーマンスに優れていると言われています。
ReactはWebアプリケーションを開発するのに利用されるフレームワークであり、React Nativeはそのネイティブアプリ版になります。Reactの知見で開発できるので、React経験者であればReact Nativeの習得は容易でしょう。
NativeScript
NativeScriptはJavaScriptの中にスマートフォンネイティブの機能を組み込んだフレームワークになります。言語体系としてはTypeScriptになります。画面はXMLベースで作られていますが、Vue.jsやAngularと組み合わせて利用することもできます。
まだ開発途上ではあるのですが、着実に開発は進められているので今後盛り上がる可能性がありそうです。
C#で開発したい
C#もまた開発者人口の多い言語です。特に企業向けシステムなどでの利用が多いでしょう。また、Unity(後述)によってゲーム周りでの開発者も急増しています。
Unity
Unityは2Dや3Dゲームを開発するのに特化した開発環境です。UIや多くのロジックをコードレス(コードを書かずに)で実装できますが、コードが必要な場合にはC#で記述します。
ビルド先はiOS/Androidの他、Web、デスクトップ、据え置きゲーム筐体などが選択できます。Unityを利用して開発することで、多くのプラットフォーム向けにゲームをリリースできるのが大きな利点でしょう。
.NET MAUI
元々Xamarinとして知られていましたが、現在は.NET MAUIという名前になっています。Microsoft社の提供する開発環境であるVisual Studioで利用できるフレームワークです。.NET MAUIはスマートフォン向けはもちろんmacOSやWindows向けにも開発できます。
.NET MAUIではC#とともにXAMLを利用します。XAMLについては.NETを使ったアプリケーション開発を行ったことがある方であれば使い慣れているでしょう。.NET経験者にお勧めのフレームワークになります。
それ以外の言語で開発したい
JavaScriptとC#以外の選択肢では以下が挙げられます。
Dart/Flutter
DartはGoogleが開発しているプログラミング言語で、そのスマートフォン向けフレームワークとしてFlutterが知られています。FlutterはiOS/Android/Web/macOS/Windows/Linux向けに開発できるフレームワークになります。
Dart自体は元々JavaScriptを模して作られていたということもあり、言語体系は似ています(型付けがあるのでTypeScriptの方が近いかも知れません)。JavaScriptを学んだ方であれば、習得はさほど難しくないでしょう。
Kotlin/Native
Kotlin/NativeはAndroidとiOSで共通化できるロジックを1つのコードで実現できるフレームワークです。つまりUIは共通化できないので、それぞれ実装する必要があります。
Kotlin/Native自体はiOS/Androidの他、Windows/macOS/Linuxなどで動作します。マルチプラットフォームで動作するフレームワークの場合、iOSとAndroidでのUI差異や動作の違いで苦労することがあるので、ロジックだけ共通化するというアプローチはありかも知れません。
まとめ
執筆時点で選択できるプログラミング言語としては、以下になるでしょう。
言語 | iOS | Android |
---|---|---|
Swift | ○ | × |
Objective-C | ○ | × |
Java | × | ○ |
Kotlin | ○(Kotlin/Nativeにて) | ○ |
JavaScript(Cordova) | ○ | ○ |
JavaScript(React Native) | ○ | ○ |
JavaScript(Native Script) | ○ | ○ |
Dart(Flutter) | ○ | ○ |
C#(Unity) | ○ | ○ |
C#(.NET MAUI) | ○ | ○ |
個々のフレームワークでも使いやすさや、書きやすさで違いがあります。自分にあったフレームワークを選んでください。