ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

モバイルアプリ開発をどの言語ではじめるか

現在、モバイルアプリ開発を行う手段は数多く存在します。どの言語を使って開発を行えば良いか、迷ってしまう人もいるのではないでしょうか。そこでこの記事では、最初の取っかかりになるべくモバイルアプリ開発をどの言語で行うのが良いのか、その特性と合わせて紹介します。

Swift

日本ではAndroidよりもシェアが高いのがiOS(iPhone/iPad/Apple Watch/Apple TV向け)です。そのiOS向けにアプリを開発する際に公式サポートされているのがSwiftになります。SwiftはiOS上で実行されるネイティブ言語になるので、iOS向けとして最もパフォーマンスが出る言語になるでしょう。そのため、ゲームやユーティリティまで幅広いアプリ開発に利用できます。

Swiftで開発を行う場合には、以下の2つの方法があります。

macOS

macOSが搭載された端末(MacBook Pro/MacBook Air/iMac/macminiなど)を購入し、Xcodeをインストールします(無料)。Xcodeを使えばSwiftを使ったiOSアプリ開発をはじめられます。

iPad

iPadOS 15.2以降のiPadで、Swift Playgroundsアプリをインストールすると、iPadでiOSアプリ開発を行えるようになります。デバッグ機能が弱かったり、画面が小さいこともあってXcodeほど洗練はされていませんが、アプリストアへの申請も可能です。

Objective-C

Objective-CはSwift登場以前はデフォルトのiOSアプリ開発言語でした。現在でも利用は可能ですが、AppleとしてはSwiftへの移行を促しているように感じます。とはいえ、今なお公式サポートされている言語であり、iOS向けには最もパフォーマンスが出る言語になります。パフォーマンスが求められる場合には採用を検討すべき言語でしょう。

開発する際にはSwiftと同様にXcodeをインストールしたmacOSが必要です。なおiPadはSwiftでのみサポートしており、Objective-Cは利用できません。

C/C++

より低レイヤーなC/C++を使ってアプリ開発も可能です。なお、これはiOSだけでなくAndroid向けのアプリ開発に利用することもできます。UI周りまですべてC/C++で実装するのは大変ですが、iOS/Androidアプリで共通のロジックを実装する例は多々あります。

Java

JavaはAndroidアプリ開発の基本言語になります。最も開発者が多く、エコシステムも充実している言語なので、情報はとても多いでしょう。特にパフォーマンスが求められる場合に使われたり、ゲームからユーティリティまで幅広いアプリ開発に利用されます。

開発を行う場合にはAndroid Studio(無料)をインストールし、Android SDKなどをインストールします。デスクトップマシンのOSはWindows/macOS/Linux/ChromeOSが利用できます。

Kotlin

KotlinはGoogleではなくJetBrain社が開発している言語になります。Androidアプリ開発言語として公式にサポートされています。Javaよりもコード量が少なく、よりモダンに書けるので人気があります。こちらもJavaと同様にパフォーマンスが出る言語になります。

Kotlinで開発する場合もAndroid Studioを使うのが基本になります。

JavaScript

JavaScriptはWebブラウザのみならず、幅広いプラットフォームで利用されているプログラミング言語です。初学者向けにもよく使われます。そんなJavaScriptでアプリ開発を行う場合、フレームワークが幾つか分かれます。

WebブラウザやJavaScriptエンジンを介して実行される分、ネイティブ言語と比べてパフォーマンスが落ちる傾向があります。そのため、ゲームなどの高いパフォーマンスが求められるジャンルでは採用が難しいかも知れません。その反面、iOS/Android両方に対応できるので、1つのコードで複数のプラットフォームに対応できるのが利点です。

Cordova

CordovaはWeb技術(HTML/JavaScript/CSS)を使ってアプリ開発を行います。対象はiOS/Android両方になります。Web技術なので、使い慣れている方も多いでしょう。iOS/Androidのネイティブ機能(アプリ内課金、Bluetoothなど)を使う場合にはCordovaプラグインと呼ばれる技術を使います。

Cordovaで開発を行う場合にはNode.jsをインストールし、パッケージ管理であるnpmを使ってCordovaをインストールします。利用できるOSはWindows/macOS/Linuxです。なお、iOS向けの開発を行う際にはmacOSが必要です。

こうした環境のセットアップをなくしたり、WindowsでもiOS向けの開発を行えるようにするのがMonacaになります。

React Native

React NativeはCordovaとは異なり、Web技術を使わずに直接JavaScriptエンジンを実行します。開発言語はJavaScriptで変わりませんが、そのやり方はCordovaと大きく異なります。ネイティブOSの機能を使う場合には別途ライブラリを経由する点もCordovaと同じです。

React NativeもNode.jsをインストールし、パッケージ管理からReact Nativeをインストールして開発を行います。利用できるOSがWindows/macOS/Linuxであることも、iOS向けの開発を行う際にはmacOSが必要なのも変わりません。なお、Expoというサービスを使うことで、Windowsで開発を行っていても、iOSでプレビュー実行することが可能です。

Dart

DartはGoogleが開発しているプログラミング言語です。JavaScriptに似た言語体系なので、習得するのは難しくないでしょう。スマートフォン以外のプラットフォーム(デスクトップやWeb)向けにも開発できます。DartはFlutterというフレームワークを使ってスマホアプリ開発を行います。

FlutterはWindows/macOS/Linux向けにインストール可能です。そしてFlutterを使うと、Android SDKのインストールなども自動的に行ってくれますので、開発環境を整えるのがとても簡単です。

FlutterはCordova/React Nativeとよく比較されます。その3つの中では最もパフォーマンスが優れているようです。ゲーム開発向けにはFlame Engineのようなものも登場しています。

C

C#はMicrosoftの開発するプログラミング言語です。C#を使ったアプリ開発環境は2つあります。

Unity

Unityは2D/3Dゲーム開発環境です。インディーズゲームから大手まで、とても幅広いゲーム開発に利用されています。オブジェクトの配置などはビジュアル環境で行えますが、ロジックはC#で開発します。

インストールできるOSはWindows/macOS/Linuxになります。WindowsでもUnity Cloud Buildというクラウドでのビルド環境を利用することで、iOS向けのアプリ開発が可能です。

Xamarin

XamarinはC#を使ったAndroid/iOSアプリ開発フレームワークになります。どちらかというと、ビジネスアプリでの利用が多いようです。開発を行う際にはVisual Studioを使うのが基本で、Windows/macOS/Linuxでインストール可能です。

XamarinはAndroid/iOS向けにアプリを開発できます。iOS向けにビルドする際にはmacOSが必要になります。

選定

プログラミング言語を選定する際には、以下の点に注意が必要です。

項目 選択肢
アプリの実行環境 AndroidとiOSのいずれか、または両方
開発環境 Windows/macOS/Linux
アプリのジャンル 高いパフォーマンスが求められるかどうか

Windowsを利用してiOSアプリ開発を行う場合、その選択肢は多くありません。そもそもSwiftやObjective-Cは使えないので、CordovaでMonacaを使うか、UnityでUnity Cloud Buildを使うという方法になるでしょう。

macOSを使う場合には、選択肢はほぼ無制限になります。

アプリの実行環境を考えた場合、AndroidまたはiOSのいずれかだけで良いのか、両方に対応するのかで選択肢が分かれます。いずれかで良いのであれば、ネイティブ言語と呼ばれるSwift/Objective-C/Java/Kotlinが選択肢に上がるでしょう。昔からあるのがObjective-C(iOS向け)とJava(Android向け)で、モダンなのがSwift(iOS向け)とKotlin(Android向け)といった位置づけです。

Android/iOS両方で動作させたい(両環境向けに一度に開発したい)場合には、JavaScript(CordovaまたはReact Native)/Dart(Flutter)/C#(UnityまたはXamarin)が選択肢になります。これらはマルチプラットフォーム対応言語とも呼ばれます。

マルチプラットフォーム対応言語の場合、一般的にネイティブ言語と比べるとパフォーマンスが悪い傾向があります。また、開発できるアプリのジャンルが絞られる場合もあります。例えばUnityはゲームに対してはとても強いフレームワークですが、ビジネスアプリの開発には利用されません。逆にCordovaを使って高グラフィックスな性能の求められるゲーム開発も行われないでしょう。そのように作りたいアプリのジャンルに合わせた選定も必要になります。

まとめ

企業などであれば、さらにメンバーの持っている技術によっても選定が変わるでしょう。しかし、開発するアプリや持っている環境に合わせて最適な言語を選ばないと、プロジェクトの終盤になって致命的な問題に出くわすことにもなりかねません。

個人の趣味ではじめる場合にも、最適な言語ではじめることで、開発時のストレスが抑えられます。ぜひアプリ開発をはじめる際の参考にしてください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。