スマートフォンアプリを開発したいと思った時に、まず考えるのは、どのプラットフォーム(AndroidまたはiOS)にアプリを提供するかでしょう。また、どんなジャンルのアプリを作るかも考えるべきポイントです。
それらによって、利用すべきプログラミング言語やフレームワークは異なります。今回は、その参考にして欲しい内容です。
iOS向けに作りたい
あなたがmacOSを持っていて、iOS(iPhone、iPad)向けにアプリを開発したいなら選択肢としてはSwiftになるでしょう。
Swift
SwiftはAppleが公式に提供するiOS向けのアプリ開発言語になります。Objective-Cという言語も利用できますが、今からはじめるならSwiftを選んだ方が良いでしょう(情報量、今後の継続性として)。
Swiftはゲームからユーティリティアプリまで幅広く使われています。特化した分野はありませんが、どのようなアプリでも開発できる強力なプログラミング言語になります。
Android向けに作りたい
Android向けにアプリを開発する場合、特に開発環境は制限なく選択できます。Android Studioが利用できれば良いので、Windows/macOS/Linuxと自由にデスクトップ環境を選択できます。
そしてプログラミング言語としてはJavaまたはKotlinになります。
Java
Javaは長い歴史を持ったプログラミング言語です。継続的にメンテナンス、バージョンアップが行われており、個人から企業まで幅広い開発者によって使われています。
情報量も多く、学ぶための教材も数多くあります。若干書き方が冗長的に感じる部分もありますが、初学者でもミスなく書けたり、誰が書いても分かりやすいといった点が魅力です。
Kotlin
KotlinはJetbrain社によって開発されているプログラミング言語になります。KotlinとJavaは相互変換可能で、Java向けに作られているライブラリをKotlinでも利用できます。
KotlinはJavaで感じる冗長的な部分を排除することで、すっきりとしたプログラミング言語ができます。よりモダンな書き方ができるので、初学者にとって分かりやすいプログラミング言語でしょう。
iOS、Android両方に対応したい
iOS、Androidのどちらかではなく、両方に対応したいと考える人は多いでしょう。そうした希望を実現するフレームワーク(仕組み)は多数あります。
Flutter
FlutterはDartというプログラミング言語向けのフレームワークです。AndroidとiOSはもちろん、Webやデスクトップ向けにもアプリを開発できます。
DartはJavaScriptに似た言語体系になります。型を指定できるので、コーディング上のミスや実行時のエラーを減らせます。できあがるアプリはネイティブなので、実行時の速度が速いのも魅力です。
Flutter - Build apps for any screen
React Native
React NativeはLearn once, write anywhere(一度学べば、どこでも書ける)をテーマとしたReactを利用したフレームワークです。プログラミング言語としてはJavaScriptやTypeScriptを利用できます。
React NativeはReact Native for Webという仕組みもあり、Webアプリケーションも開発できます。Flutterよりも若干メモリ消費量が多いという課題がよく聞かれますが、JavaScriptでスマートフォンアプリが開発できるのは魅力的です。
React Native · Learn once, write anywhere
Apache Cordova
CordovaはWeb技術(HTML/JavaScript/CSS)でアプリ開発できるフレームワークになります。OSネイティブの機能が必要な場合には、プラグインという仕組みで機能を呼び出します。
Cordovaで利用する言語はJavaScriptやTypeScriptです。React Nativeとの違いは、React NativeがJavaScriptのみなのに対して、CordovaはHTMLやCSSも利用する点にあるでしょう。
.NET MAUI
.NET MAUIはMicrosoftの提供する.NETを使ってスマートフォンアプリやデスクトップアプリを開発できるフレームワークです。開発言語としてはC#を利用します。
.NET MAUIはUIをXMLで作成します。また、開発する際のIDEとしてVisual Studioを利用します。Visual StudioはmacOS向けの提供終了が発表されており、Windowsユーザー向けになるでしょう。
.NET MAUI とは - .NET MAUI | Microsoft Learn
RubyMotion
RubyMotionはRubyというプログラミング言語でiOS/Androidアプリ、macOSアプリを開発できるフレームワークです。最近はあまり開発が活発ではないようです。
RubyMotionは有料のフレームワークであり、その点が他と異なります。今後の開発継続に若干難がありそうなので、Rubyが大好きという方以外は選びづらいかも知れません。
iOS、Android、OS X アプリを Ruby で。 | RubyMotion
ゲームを開発したい
これまで紹介したフレームワーク/プログラミング言語でもゲームアプリは開発できます。しかし、ゲームでは物理演算や3Dなど、独自の仕組みが必要です。そうした点も、ゲームに適したフレームワークを利用すれば素早く開発できます。
Unity
UnityはWindows、macOSに対応したゲーム開発エンジンです。メインは3Dですが、2Dゲームの開発にも利用できます。最近ではゲーム以外にもVRなどでも利用されます。
UnityはC#を利用して開発します。機能やプラグインが多いので、ほとんどコードを書かずにUIやアクションを実装できるでしょう。そして、細かい部分をC#で実装するイメージです。
Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
Unreal Engine
Unreal Engineは3Dゲームを開発できるゲームエンジンです。開発言語はC++を利用します。映画のような3Dをリアルタイムに描画するエンジンを備えています。
高度な3Dゲームを開発する際にお勧めです。
最も強力なリアルタイム 3D 制作プラットフォーム - Unreal Engine
Cocos2d-x
Cocos2d-xはオープンソースのゲームエンジンで、元々はC/C++で開発されています。iOSやAndroid向けに3Dゲームを開発できます。他にもJavaScriptやHTML5向けなどにポーティング(移植)されています。
そのため、利用できる言語は幅広くなります。C/C++はもちろん、JavaScriptも利用できます。
Cocos2d-x - Mature, lightweight, open cross-platform solution
まとめ
今回はスマートフォンアプリを開発できるプログラミング言語について紹介しました。これからプログラミング言語を学ぶ際の参考にしてください。
ニフクラ mobile backendはiOS(Swift/Objective-C)、Android(Java/Kotlin)をはじめ、UnityやCordovaで使えるSDKを提供しています。公式ではありませんが、FlutterやReact Native対応のSDKもあります。ぜひあなたのアプリ開発に活かしてください。