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

Androidアプリの開発にあたっては、プログラミング言語にJavaを選択するかKotlinを選択するか考えなければなりません。どちらもAndroidアプリの開発に利用される主要なプログラミング言語で、それぞれにメリットやデメリットがあります。
どちらのプログラミング言語を選ぶかは、Androidアプリの開発効率に大きな影響を与えます。また、開発するエンジニアとしてのキャリアや生産性、求人数や年収などにも影響を与えるのです。今回はAndroidアプリの開発にあたってJavaとKotlinのどちらを選択すれば良いのか、それぞれのプログラミング言語を選択するとエンジニアとしてどのようなキャリアを歩めるのかについてご説明します。
Javaとは?

最初にAndroidアプリの開発に利用されるJavaがどのようなプログラミング言語であるのかご説明します。
Javaとは
Javaは長年にわたり企業や教育で広く使われている汎用プログラミング言語です。Oracle社が提供するJDKとコミュニティ版のOpenJDKが広く利用されており、基本的に無料で入手して使えます(※商用サポートや長期サポート版は別途契約が必要な場合があります)。
Androidアプリの開発ができるプログラミング言語ですが、Webアプリケーションの開発や組み込み開発、ロボットへの活用など非常に多くの用途があります。実際、どのような用途でJavaを利用するかによって、実装に必要な知識や開発上の注意点が変わります。
Javaの特徴
Javaはオブジェクト指向のプログラミング言語であり、クラスを活用してシステム開発が可能です。オブジェクト指向の仕組みは設計の整理や再利用に向いているため、大規模なシステム開発でも採用されることが多く、実際に多くの業務系システムやサーバーサイドで利用されています。
また、Androidアプリ以外にも多くの分野で利用されていることから、非常に案件数の多いプログラミング言語です。「Javaを習得しておけば仕事には困らない」といっても過言ではなく、世界的に求められているプログラミング言語のひとつです。
Javaのメリット、デメリット
Javaの大きなメリットは幅広い開発に利用できるプログラミング言語であることです。汎用性の高さを認識して開発されているプログラミング言語であるため、どのようなアプリケーション開発でも可能です。具体的には以下でご説明しますが、使い方をこだわらなければどのようなシステムでも実装できるといえるぐらいです。
一方で代表的なデメリットとしては、コードが冗長になりやすい点が挙げられます。同じ処理を記述する際に行数や型の宣言が多くなりがちで、結果として開発や保守に要する工数が増える場合があります。
とはいえ、JavaはAndroidアプリの開発にあたっては歴史的に広く使用されてきた言語です。。Android開発にJavaを活用する技術資産はこれまでに数多くの蓄積があるため、これらを活用できることはJavaを使用したAndroidアプリ開発における大きなメリットとなります。
Javaでつくれるもの
適切な用途であるかどうかを問わなければ、ほぼすべてのものがJavaで実装できます。Androidアプリだけではなく、WebアプリケーションやWebサーバ、家電製品やIoTの組み込みシステム、電車や工業機械など大きな製品の制御などです。
ただ、記述がやや複雑なプログラミング言語に分類されるため、用途によっては適切な選択ではありません。「Javaで作れるもの」と「Javaで作ったほうが良いもの」は異なるため、その点は意識しておきましょう。
Kotlinとは?

続いてはJavaに対してKotlinとはどのようなプログラミング言語であるのかご説明します。
Kotlinとは
KotlinはJavaを使いやすくするために、Javaを改良して開発されたプログラミング言語です。基本的な文法や記述方法などはJavaと同じであり、実行環境もJavaと同じものが利用できます。
ただ、KotlinはJavaよりもシンプルにソースコードを記述できるように配慮されています。Javaはプログラミング言語の中でも冗長な記述が求められるものに分類されるため、そのような課題を解消できるような仕組みが整っているのです。
Kotlinの特徴
KotlinはJetBrains社が設計したモダンなプログラミング言語で、Javaと高い互換性を持ちながら記述を簡潔にすることを目的としています。基本的な文法や実行環境(JVM)はJavaと親和性があり、既存のJavaライブラリやコードと併用できます。
Kotlinはnull安全やデータクラス、拡張関数、コルーチンなど、冗長さを減らし安全に書ける機能を備えています。これにより同じ処理をより短く、読みやすく書けるため生産性向上につながることが多いです。加えてGoogleはAndroid開発において「Kotlinファースト」の方針を打ち出しており、AndroidツールやサンプルはKotlinを念頭に置いて設計されています。
Kotlinのメリット、デメリット
Kotlinのメリットは、同じ処理をより簡潔に書けるため開発・保守の工数が下がる可能性が高い点です。特に非同期処理を扱いやすくするコルーチンや、ボイラープレートを減らす言語機能はAndroid開発での利便性が高く評価されています。
一方でデメリットとしては、2011年に登場した比較的新しい言語であるため、Javaなど歴史の長い言語に比べて業務ノウハウやレガシー向けの事例・ライブラリが相対的に少ない点です。特殊領域で深いノウハウや既成ライブラリを探す際は、Javaより手間がかかる可能性があります。
また、Androidでの採用に伴いAndroid関連の情報は急速に増えていますが、学習や事例の重心がAndroid寄りになりがちである点は意識しておくべきです。
KotlinはJavaと同じく汎用性の高いプログラミング言語ではありますが、現時点ではAndroidアプリ以外に用いられる事例は非常に少ない状態です。Kotlinを習得してAndroidアプリ以外も開発したいと考えている人は注意しておきましょう。
Kotlinでつくれるもの
Kotlinで作れるものはJavaと大差ありません。汎用的なプログラミング言語であるため、幅広いプログラムの実装に利用できます。
ただ、事実としては上記でも触れたとおりAndroidアプリの開発が中心です。Webアプリケーションなども見られますが、まだまだ少ないといわざるを得ません。本来はロボットの制御などにも利用できる言語ですが、まだそこまで利用が広がっていないのです。
JavaとKotlinを徹底比較

JavaとKotlinではどのような違いがあるのか、いくつもの観点から順に比較していきます。
生産性、開発速度
Androidアプリ開発においては、Kotlinを使うことで同じ処理を短く安全に記述でき、生産性が向上しやすい傾向があります。具体的にはnull安全やデータクラス、拡張関数、コルーチンといった言語機能がボイラープレートを減らし、バグを減らしやすくします。GoogleもAndroid開発でのKotlinの採用を強く推しており、新しいサンプルやAPIではKotlinを第一に考慮する設計が進んでいます。
そもそも、Javaは記述が冗長になりがちで、場合によっては開発速度に影響が出ることがある言語です。ライブラリが多いなどのメリットはありますが、Androidアプリ開発においてはそのようなメリットを最大限活かせるわけではありません。単純にコーディングしやすい言語が開発速度を高め生産性の向上につながるため、Kotlinに優位性があると言えます。
コンパイル速度、レスポンスタイム
コンパイル時間はプロジェクト構成・ビルドツール(Gradle 設定、インクリメンタルビルドなど)や使っているアノテーションプロセッサ(kapt/ksp等)によって大きく変わります。過去にはKotlinのフルビルドが遅いケースが指摘されましたが、コンパイラやビルドツール側の改善が続いており、実際の差は条件次第です。具体的なベンチマークを示す場合は、比較条件(JDK/Gradleバージョン、プロジェクト規模)を明記してください。
実行時(レスポンスタイム)についても、JIT最適化やJVM実装、アプリ設計に依存するため一概に「どちらが速い」と断定できません。用途ごとに測定して判断するのが適切です。
汎用性
どちらも汎用性の高い言語であり、用途の広がり自体は大きく変わりません。Javaの長年の普及により多数の既存事例やライブラリがある一方、KotlinはJVM上で動作するほか、マルチプラットフォームやNative/JSターゲットといった選択肢も広がってきています。用途選定は「既存資産」「性能要件」「開発体制」で決めるのが現実的です。
具体的にはAndroidアプリの開発だけではなく、Webアプリケーションの開発やサーバーサイドアプリケーションの開発に利用されています。また、機械の制御などにも利用できるプログラミング言語で、非常に多くの用途があると考えるべきです。
汎用性についてはどちらが高いと言い切れるものではありません。まだまだ、実際に利用されている事例としてはKotlinはJavaより劣ってしまう部分がありますが、実装できる内容で評価すると汎用性には大差ないのです。
開発環境
主要なIDEについては、どちらの言語も複数の選択肢があります。Android開発では現在Android Studio(IntelliJベース)が標準で、Kotlin向けのサポートが手厚いです。Javaは歴史的にEclipseも広く使われましたが、IntelliJ/Android Studioでも強力にサポートされています。エディタやプラグインの違いはありますが、実務ではIDEよりもビルド設定やライブラリの選択が生産性に与える影響が大きいことが多いです。
どちらも実行環境としてJDK(JVM)が利用される点は共通で、KotlinはJVM向けのバイトコードにコンパイルされてJDK上で動作します。そのため、純粋に統合開発環境の種類、細かくいうならば「エディタの種類」が違う程度と考えて差し支えありません。
人材の希少性・年収・求人件数
国内ではJavaエンジニアの母数が大きく、求人数は多い傾向にあります。一方、KotlinはAndroid分野での需要が高まりつつあるものの、言語単体の募集はJavaに比べて少ないケースが見られます。
学習の難易度
Kotlinは文法上ボイラープレートを減らす設計がされているため、初心者にとって「読みやすく」「短く書ける」利点があり、学習しやすい面があります。しかしプラットフォーム(Android/API/ライブラリ)の知識は共通で必要になるため、Javaの基礎概念を押さえておくと学習がスムーズです。
年収
年収はいくつかの求人サイトで公開されているデータを平均してみると、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開発においては、Kotlinを第一候補に検討することが推奨されます。言語機能が生産性と品質に寄与するケースが多く、Googleの推奨とも整合します。ただし既存のJava資産やチーム事情によっては段階的な導入・併存運用が現実的です。
また、Androidアプリ開発にはKotlinが多用される時代であり、ナレッジが世界的に集約されています。つまり、何かしら問題が起きた場合でも、Webなどで情報を簡単に収集できるのです。日本では「Kotlinでの開発は心配」と感じる声もありますが、Kotlinの採用は確実に進んでいます。新規プロジェクトではKotlinを第一に検討するのが現実的である一方、既存資産やチーム事情を踏まえた柔軟な判断が重要です。
Androidエンジニアの将来性
AndroidOSが利用されなくなる可能性は近い将来にはなく、Androidエンジニアの将来性は明るいと考えられます。これはJavaを扱うエンジニアもKotlinを扱うエンジニアも同じだと考えて良いでしょう。
ただ、Androidエンジニアとしての将来性をさらに輝かせたいならば、JavaだけではなくKotlinも扱えるようになるべきです。これからはAndroidアプリの開発にKotlinが利用されると考えられ、Kotlinでの実装ができないと案件の選択肢が減る可能性があります。
まとめ
Androidアプリの開発に利用されるJavaとKotlinについてご説明しました。KotlinはJavaを改良して開発されたプログラミング言語であり、基本的な部分はJavaに似ているプログラミング言語でもあります。Javaで開発した経験のある人ならば、Kotlinをスムーズに理解できるでしょう。
どちらのプログラミング言語にもメリットとデメリットがありますが、Androidアプリの開発にはKotlinがおすすめです。Javaよりも少ない記述でAndroidアプリの実装ができるため、効率よくプログラミングができます。エンジニアには開発効率が求められるため、Kotlinのように効率良い開発ができるプログラミング言語は積極的に利用すべきです。