Androidアプリでプログラミングを学ぶ際、どの言語を選ぶのが良いかわかりにくいです。特に初学者の方やネイティブアプリを普段開発しない方は迷いますよね。
ここでは、Androidのアプリをどの言語で選ぶのが良いかをまとめています。学習途中で、他の言語を選べばよかったといったことが無く安心して学べるように各言語の特徴を紹介します。
Androidアプリ(ネイティブアプリ)とWebアプリの違い
まず、AndroidアプリとWebアプリの違いを把握しておきましょう。
一言でいうとwebアプリはブラウザ上で動くアプリ。それに対しandroidアプリのようなネイティブアプリはスマホやパソコンのos上で動きます。どちらが優れているということは無く、それぞれの構成上からくるメリットデメリットがあります。
目次
ネイティブアプリのメリットとデメリット
ネイティブアプリのメリットは、OS上で動くため下記のようなメリットがあります。
- カメラや加速度センサーなどスマホの機能などを使いやすい。
- サクサク動く
- プッシュ機能を実装しやすい
- ネット回線切断時でも動作する
ネイティブアプリはスマホやパソコン上で動作するアプリの事を言います。スマホやPCにダウンロードをしてインストールするタイプのものです。スマホやパソコン上でプログラムが動作しているために、カメラや各種センサーやメモリなど様々なデバイスにアクセスすることが出来ます。さらに、インターネット回線が無くても動かせることが出来ます。
しかし、デメリットとしては下記のようなことが挙げられます。
- ダウンロードしないと使えない
- os別で開発する必要がある事が多い
- osのバージョンによっては動作しなく
ネイティブで動作する反面、ダウンロードしてインストールをしないと使えません。そのため、特にスマホのアプリなどは容量の制限などもあるためインストールしてもらうこと自体にハードルがあります。
そして、ネイティブアプリはインストールするOSの違いや更にはそのバージョンの違いがあるため、Webアプリにはない開発の手間が発生します。
Webアプリのメリットとデメリット
それに対しWebアプリは下記のようなメリットがあります。
- ダウンロードする必要がない
- OS の違いを気にする必要はない
- バージョンを複数管理する必要がない
Webアプリは基本的にはWebサーバーというものがないと動作しません。JavaScriptにより、ブラウザ上でもある程度のプログラムは動作しますが、データや主な処理はサーバーで行われていて、処理結果をブラウザで表示しています。
そのため、ブラウザさえあればどこでもアプリケーションを使うことが出来ます。以前はブラウザの違いによって動作が大きく変わることもありましたが、現在ではそこまで違いはなく動作します。また、プログラムに変更がある場合にも、サーバーにあるプログラムを更新するだけで済みます。
やはり、Web アプリにもデメリットはあります。
- ネイティブアプリに比べると、どうしても処理が遅い
- カメラや加速度センサーといったブラウザ以外のリソースにアクセスしにくい
スマホやパソコンからデータを入力し、いったんサーバーにデータを送り処理結果を受け取るという形になるため、どうしてもネイティブアプリよりは処理に時間がかかります。何ミリ秒という単位ですが、実際に動かすと少し気になる方も多いです。
また、ブラウザ上で動作しているだけであるため、例えばスマホに保存されている画像や動画、カメラの機能などを操作することはできないため、アプリの機能に様々な制限がかかります。
Androidアプリを作る言語の違い
Androidアプリという場合、基本的にはネイティブアプリの事を指します。ネイティブアプリであるためWebに特化したPHPなどの言語で開発することは基本的にはありません。
現在Androidアプリを開発する場合にはJava,Kotlin,C#,JavaScript(React Native),Dartなどといった言語で開発されています。これらの言語の学びやすさなどを見ていきましょう。
Java(Android Studio)
Javaは情報が豊富であるため、学びやすい言語です。
Android Studioを使う場合JavaかKotlinで開発することになります。Java自体が古くからある言語であるため、書籍やインターネット上にJavaに関連する情報が豊富にあります。
また、JavaはWebアプリケーションやデスクトップアプリの開発もされてきているので、Android以外の開発にも今後役立つ可能性があります。
Kotlin(Android Studio)
Androidの開発に関してはKotlinで始めると最新の技術を学習しながら身に付けることができます。
KotlinはJavaよりも書くコード量が少なくできると言われています。またJavaとの親和性が高く、Javaで書かれたファイルとKotlinで書かれたファイルが混在する形でプロジェクトを作れます。
Googleが推奨している言語のため、今後の将来性も見込めるのでKotlinから学習を始めても後悔する可能性は低いと思われます。
ただ、結局のところJavaで書かれたコードも理解する必要が出てくることがあります。結局はKotlinもJavaも使えるに越したことは無いためJavaとKotlinどちらを先に学習するかだけの問題であることが良く言われます。
C#(Xamarin)
C#単体であれば初めて学ぶとした場合には良いかもしれません。しかし、Android開発でプログラミングをする場合にはXamarinというプラットフォームを利用する必要があり、あまり情報が多くないため初学者にはとっつきにくい言語です。
XamarinはC#でAndroidアプリやiOSアプリなどを開発するためのプラットフォームです。そのためC#のみでそれぞれのアプリを開発することが出来ます。
しかし、全て同じソースコードでAndroidもiOSも動くものを作れるわけではありません。その際にはAndroidのプラットフォームの知識やiOSのプラットフォームの知識も必要となります。
両方を知っている複数のプラットフォームの知識を持つ人が分業で作業する場合には便利なプラットフォームであるため、初学者には向いていません。
JavaScript(React Native)
Xamarin同様に初学者には少し難しいですが、JavaScript自体は再注目されWebアプリでもネイティブアプリでも役に立つ知識です。結果的に学べることがとても多いのでチャレンジする価値が高い言語です。
React NativeはWeb開発の知識があればネイティブアプリも作れるというフレームワークです。JavaScriptはWebアプリ開発にも必須の技術であり、且つ現在ではネイティブアプリも開発できるようになっているためとても学習に適した言語です。
しかしながら、このReact NativeでAndroidアプリを開発するには、JavaかKotlinの知識が多少必要です。
Dart(Flutter)
DartはXamarinと近いもので、iOSとAndroidの両方のアプリを開発できるFlutterというクロスプラットフォームで使われる言語です。こちらも初学者には向いていない言語です。
やはり共通部分はだいぶあるものの、共通化できない部分は結局AndroidやiOSで作る必要が出てきてしまいます。また日本語の資料はまだあまり多くないため少々ハードルが高いです。
Androidプログラミングはどの言語で学習するのが良いか
現状ではAndroidでプログラミングの学習を始めるの場合、Javaで学習をすすめるのが良いです。WebアプリもAndroidアプリも含め新しい技術を追い続けたいという場合にはJavaScript(React Native)も良いです。
上記までで簡単に解説した通り、Androidのアプリ開発を行う際には、結局はJavaかKotlinの知識が必要になってきます。そのため、Javaを選ぶかKotlinを選ぶかということになります。
JavaとKotlinに関しては、現在はまだJavaの方が情報量も多いです。またプログラミングスクールなどでも教えてきた実績が長い分、学びやすい教材などもそろっていると考えられます。
また、JavaはWebアプリ開発にも採用されることが多いです。現状では、開発案件も検索サイトで見る限りJavaの方が多いです。Kotlinはまだ案件としては少ないようです。
どうしても入社したい企業がKotlinを推奨していたりする場合には別ですが、基本的にはAndroidアプリでプログラミングを学習するにはJavaが良いと考えられます。
言語 | レバテックフリーランス | 案件ナビ |
---|---|---|
Java | 2185 | 4314 |
Kotlin | 231 | 0 |
出典:レバテックフリーランス
https://freelance.levtech.jp/project/search/
出典:案件ナビ
https://www.anken-navi.jp/anken/navi/AnvAnkJobListAction.htm
まとめ
いかがでしたでしょうか、基本的にはAndroidアプリで学習をする場合の情報ですが、やはりJavaは古くから人気のある言語であったために良い本やスクールなども多いので、初学者にとても向いている言語です。
プログラミングは一つの言語をある程度学べば比較的新しい言語を学ぶのが簡単になります。将来性や案件の多さなどは初めは深く考えず、学ぶことをお勧めします。