Androidアプリの開発なら、JavaとKotlinどっち?

Androidアプリの開発にあたっては、プログラミング言語にJavaを選択するかKotlinを選択するか考えなければなりません。どちらもAndroidアプリの開発に利用される主要なプログラミング言語で、それぞれにメリットやデメリットがあります。
どちらのプログラミング言語を選ぶかは、Androidアプリの開発効率に大きな影響を与えます。また、開発するエンジニアとしてのキャリアや生産性、求人数や年収などにも影響を与えるのです。今回はAndroidアプリの開発にあたってJavaとKotlinのどちらを選択すれば良いのか、それぞれのプログラミング言語を選択するとエンジニアとしてどのようなキャリアを歩めるのかについてご説明します。
Javaとは?
最初にAndroidアプリの開発に利用されるJavaがどのようなプログラミング言語であるのかご説明します。
Javaとは
Javaは汎用機向けに開発されたプログラミング言語でOracle社が管理、提供しています。ベンダーが管理しているプログラミング言語ですが無料で利用可能であり、世界中で特に利用されているプログラミング言語です。
Androidアプリの開発ができるプログラミング言語ですが、Webアプリケーションの開発や組み込み開発、ロボットへの活用など非常に多くの用途があります。実際、どのような用途でJavaを利用するかによって、実装に必要な知識が異なるぐらいです。
Javaの特徴
Javaはオブジェクト指向のプログラミング言語であり、クラスを活用してシステム開発が可能です。オブジェクト指向であることから大規模なシステム開発にも適用でき、実際に多くのシステムが開発されています。
また、Androidアプリ以外にも多くの分野で利用されていることから、非常に案件数の多いプログラミングです。「Javaを習得しておけば仕事には困らない」といっても過言ではなく、世界的に求められているプログラミング言語のひとつです。
Javaのメリット、デメリット
Javaの大きなメリットは幅広い開発に利用できるプログラミング言語であることです。汎用性の高さを認識して開発されているプログラミング言語であるため、どのようなアプリケーション開発でも可能です。具体的には以下でご説明しますが、使い方をこだわらなければどのようなシステムでも実装できるといえるぐらいです。
ただ、幅広いアプリケーション開発ができる反面、動作速度が遅いというデメリットがあります。Javaの実行環境は様々なプログラムが実行できるようになっており、規模が大きいからです。
とはいえ、Androidアプリの開発にあたっては主にJavaが使われていることに間違いありません。Javaがスムーズに実行されるように最適化されているため、デメリットとしては小さいのです。
Javaでつくれるもの
適切な用途であるかどうかを問わなければ、ほぼすべてのものがJavaで実装できます。Androidアプリだけではなく、WebアプリケーションやWebサーバ、家電製品やIoTの組み込みシステム、電車や工業機械など大きな製品の制御などです。
ただ、Javaは動作が重いプログラミング言語に分類されるため、用途によっては適切な選択ではありません。「Javaで作れるもの」と「Javaで作ったほうが良いもの」は異なるため、その点は意識しておきましょう。
Kotlinとは?
続いてはJavaに対してKotlinとはどのようなプログラミング言語であるのかご説明します。
Kotlinとは
KotlinはJavaを使いやすくするために、Javaを改良して開発されたプログラミング言語です。基本的な文法や記述方法などはJavaと同じであり、実行環境もJavaと同じものが利用できます。
ただ、KotlinはJavaよりもシンプルにソースコードを記述できるように配慮されています。Javaはプログラミング言語の中でも冗長な記述が求められるものに分類されるため、そのような課題を解消できるような仕組みが整っているのです。
Kotlinの特徴
KotlinはAndroidアプリをより効率よく作成できるプログラミング言語です。Javaよりもシンプルにソースコードを記述できるように考えられているため、基本的にはKotlinを利用したほうが生産性の向上につながります。Javaを置き換えるために生み出されたプログラミング言語だと考えても差し支えありません。
ただ、シンプルに記述できるプログラミング言語ではあるものの、コンパイルはJavaよりもKotlinのほうが遅い傾向にあります。これはKotlinがJavaよりもコンパイル時のNullチェックなどが丁寧であるからです。なお、コンパイルしてからの実行速度については大差ありません。
Kotlinのメリット、デメリット
Kotlinのメリットは上記でもご説明した通りJavaで開発するよりもAndroidアプリをスムーズに開発できることです。開発速度を重視するならばJavaではなくKotlinを選択したほうがよいでしょう。また、これからAndroidアプリの開発に向けてプログラミングを習得する場合もKotlinを選択したほうが短期間で習得できるはずです。
ただ、Kotlinにはメリットだけではなくデメリットもあります。例えば、日本ではまだまだ普及途中のプログラミング言語であるため、日本語で提供されている情報が限られています。どうしても日本語で情報を収集したい場合は、限られたソースから情報を集めるしかありません。
また、KotlinはJavaと同じく汎用性の高いプログラミング言語ではありますが、現時点ではAndroidアプリ以外の利用方法が限られています。海外では利用されているケースがありますが、日本国内ではほとんど見受けられません。Kotlinを習得してAndroidアプリ以外も開発したいと考えている人は注意しておきましょう。
Kotlinでつくれるもの
Kotlinで作れるものはJavaと大差ありません。汎用的なプログラミング言語であるため、幅広いプログラムの実装に利用できます。
ただ、事実としては上記でも触れたとおりAndroidアプリの開発が中心です。Webアプリケーションなども見られますが、まだまだ少ないといわざるを得ません。本来はロボットの制御などにも利用できる言語ですが、まだそこまで利用が広がっていないのです。
JavaとKotlinを徹底比較
JavaとKotlinではどのような違いがあるのか、いくつもの観点から順に比較していきます。
生産性、開発速度
Androidアプリの生産性はKotlinを利用した方が高められます。Javaよりもシンプルにコーディングできるプログラミング言語であるため、短時間でAndroidアプリを完成させられるでしょう。コーディングに必要な時間の短縮は、開発全体のスピードアップにつながります。
そもそも、JavaはAndroidアプリの開発に限らずコーディングルールが複雑で開発速度の遅い言語です。ライブラリが多いなどのメリットはありますが、Androidアプリ開発においてはそのようなメリットを最大限活かせるわけではありません。単純にコーディングしやすい言語が開発速度を高め生産性の向上につながるため、Kotlinを積極的に活用しましょう。
コンパイル速度、レスポンスタイム
JavaとKotlinではコンパイルに必要な時間が大きく異なります。開発したAndroidアプリの内容やソースコードの量に左右されるものの、KotlinはJavaの2倍以上の時間が必要になると考えてよいでしょう。プログラミング言語の仕様上、どうしてもコンパイル速度の低下は避けられません。
ただ、レスポンスタイムについては若干ですがKotlinのほうが高速です。これはJavaが下位互換性を重視するあまり、実行環境の規模が大きくなってしまっていることに起因します。コンパイルした結果の問題ではなく実行環境の問題によって、レスポンスタイムはKotlinのほうが優れているのです。
汎用性
どちらも汎用性の高いプログラミング言語であり、利便性については大差ないと考えても良いでしょう。そもそもJavaは汎用的なプログラミング言語であるため、Javaを改良したKotlinも汎用性の高いプログラミング言語となっているのです。
具体的にはAndroidアプリの開発だけではなく、Webアプリケーションの開発やサーバーサイドアプリケーションの開発に利用されています。また、機械の制御などにも利用できるプログラミング言語で、非常に多くの用途があると考えるべきです。
汎用性についてはどちらが高いと言い切れるものではありません。まだまだ、実際に利用されている事例としてはKotlinはJavaより劣ってしまう部分がありますが、実装できる内容で評価すると汎用性には大差ないのです。
開発環境
主要な統合開発環境はJavaとKotlinによって異なります。JavaはEclipseと呼ばれるソフトウェアが利用され、KotlinはIntelliJと呼ばれるソフトウェアが利用されています。
ただ、どちらも実行環境にはJDKが利用されていて、Kotlinで実装したものもJavaとして実行される仕組みです。そのため、純粋に統合開発環境の種類、細かくいうならば「エディタの種類」が違う程度と考えて差し支えありません。
人材の希少性
Javaは世界的に利用されているプログラミング言語で日本でも数多くのシステムが稼働しています。そのため、扱えるエンジニアの数が多く、Javaエンジニアについては希少性がないと考えて良いでしょう。
それに対してKotlinは日本で発展中のプログラミング言語であり、エンジニアの数も限られています。そのため、エンジニアの希少性という観点ではKotlinエンジニアのほうがはるかに高いです。視点を海外に向けると状況は異なりますが、国内では貴重な人材といえます。
学習の難易度
KotlinはJavaを改良して生み出されたプログラミング言語であるため、Javaよりも実装しやすいように工夫されています。Javaはプログラミング言語の中でも学習難易度が高いと考えられていますが、Kotlinになればそのような負担が大きく軽減されます。今までどちらのプログラミング言語も学んだことがないならば、Kotlinのほうが圧倒的に習得しやすいでしょう。
年収
年収はいくつかの求人サイトで公開されているデータを平均してみると、Javaが約490万円でKotlinが約560万円でした。サンプリングした値ですが、Kotlinのほうが高年収を期待できます。
これはJavaのエンジニアは数多く存在するのに対して、Kotlinのエンジニアは少ないことが背景にあります。使いこなせるエンジニアの数が減ると、それだけ単価は上がるのです。
ただ、KotlinはAndroidアプリ開発が中心であるのに対して、Javaは幅広い開発の案件が含まれています。Javaの中でも専門的な業界の案件は単価が高くなる傾向にあり、それらを除外してAndroidアプリ開発だけで比較すると、JavaとKotlinの年収差はさらに大きくなるはずです。
求人件数
求人数もJavaとKotlinをサンプリングしてみると、Javaが500件から1,800件であるのに対してKotlinが200件程度でした。また、Kotlinの求人はKotlinだけではなく「Javaも扱えるエンジニア」を探すものが多くあり、Kotlinだけのエンジニアを求めるものは100件ほどでした。
KotlinはJavaと似ているプログラミング言語ということもあり、Javaの案件も含めて対応してもらいたい案件が多いようです。「Kotlinだけを使いたい」と考えるならば、Androidアプリ開発の案件をピンポイントで狙ったほうが良いでしょう。
将来性
Javaは非常に多くのシステムが開発されていて、この先、無くならないプログラミング言語といっても過言ではないでしょう。将来性は明るく安定した仕事のできるプログラミング言語です。
Kotlinはこれから普及が期待できるプログラミング言語であり、Javaと同様に将来性は明るいと考えられます。ただ、トレンドがどのように変化するかを注視して、適切な用途でKotlinを利用できるようになるべきです。
Androidアプリの開発には、JavaよりKotlinが適している
Androidアプリの開発にはJavaよりもKotlinを利用すべき時代になっています。Kotlinで実装することでコーディングの負担を減らせるなど、生産性の向上に大きな効果を発揮してくれるからです。
また、Androidアプリ開発にはKotlinが多用される時代であり、ナレッジが世界的に集約されています。つまり、何かしら問題が起きた場合でも、Webなどで情報を簡単に収集できるのです。日本ではまだ利用数が少なく「Kotlinでの開発は心配」と思われることもありますが、これからはKotlinの時代と考えましょう。
Androidエンジニアの将来性
AndroidOSが利用されなくなる可能性は近い将来にはなく、Androidエンジニアの将来性は明るいと考えられます。これはJavaを扱うエンジニアもKotlinを扱うエンジニアも同じだと考えて良いでしょう。
ただ、エンジニアとしての将来性をさらに輝かせたいならば、JavaだけではなくKotlinも扱えるようになるべきです。これからはAndroidアプリの開発にKotlinが利用されると考えられ、Kotlinでの実装ができないと案件の選択肢が減る可能性があります。
まとめ
Androidアプリの開発に利用されるJavaとKotlinについてご説明しました。KotlinはJavaを改良して開発されたプログラミング言語であり、基本的な部分はJavaに似ているプログラミング言語でもあります。Javaで開発した経験のある人ならば、Kotlinをスムーズに理解できるでしょう。
どちらのプログラミング言語にもメリットとデメリットがありますが、Androidアプリの開発にはKotlinがおすすめです。Javaよりも少ない記述でAndroidアプリの実装ができるため、効率よくプログラミングができます。エンジニアには開発効率が求められるため、Kotlinのように効率良い開発ができるプログラミング言語は積極的に利用すべきです。