【入門】Kotlinでできること3選!将来性、需要は?

参照:Kotlin Programming Language
Kotlinは2011年にアンドリー・ブレスラフやドミトリー・ジェメロフによって開発されたプログラミング言語です。複雑なプログラミング言語とされているJavaをより簡単に利用できるよう、Javaを改良したプログラミング言語として公開されました。
2011年に公開されてから10年以上の月日が経ちましたが、意外と知られていないプログラミング言語です。今回はKotlinがどのようなプログラミング言語であり、どのようなメリットやデメリットを持つのか、何が開発できて将来的にはどうなるのかをご説明します。
Kotlinとは?
最初にKotlinがどのようなプログラミング言語であるのか、特徴やメリットとデメリットについてご説明します。
Kotlinの特徴
2011年に開発されたプログラミング言語で、C#やJavaと同じようにオブジェクト指向が採用されています。そもそも、Javaの利便性を高めるために開発されたプログラミング言語であるため、Javaと似ている部分が多数あるのです。
また、言語のパラダイムが似ているだけではなく、KotlinはJVMと呼ばれるJava仮想マシン上で動作します。独自の実行環境を用意しているのではなく、Javaの実行環境で動作するように考えられているのです。そのため、現時点でJavaの実行環境があれば、Kotlinは低いハードルで導入できます。
なお、KotlinはJavaをベースに開発されているものの、全く同じプログラミング言語というわけではありません。例えば、KotlinはJavaよりも簡潔にソースコードを記述できます。具体的なメリットやデメリットについては以下でご説明します。
Kotlinのメリット
システムの実装にKotlinを採用するメリットは以下のとおりです。
ソースコードがシンプルになる
Kotlinを利用してプログラミングすることでソースコードが全体的にシンプルになります。特にJavaと比較すると少ないソースコードでプログラムを記述できるようになるため、読みやすいプログラムで実装できる点がメリットです。
また、プログラムの記述量が少なくなるため、プログラマーの負担を軽減できます。同時に生産性の向上も期待できるため、これらをまとめて大きなメリットだと考えてよいでしょう。
他にも、プログラムをシンプルに記述できるようになるため、初心者でも扱いやすくなります。Javaは複雑なプログラミング言語で初心者が理解するには時間が必要ですが、Kotlinならばそのような問題を解決できます。
NULLの扱いが厳密である
KotlinはJavaなど他のプログラミング言語と比較するとNULLの扱いが厳密です。NULLが許可されている型とそうでは無い型があり、代入に誤りがあるとコンパイルの際にエラーが出力されます。
JavaでもNULLの取り扱いは実装できますが、Kotlinほど厳密な取り扱いではありません。特にコンパイル時には設計上のミスに気づくことができず、実行してからエラーに気づくのです。
しかし、Kotlinならばコンパイルの段階でエラーが出力されるため、実行してから思わぬトラブルがなくなります。完全にトラブルを防げるとは言い切れませんが、JavaよりもNULL関連のエラーが発生し難いのです。
Javaと併用できる
KotlinはJavaを改良して生み出されたプログラミング言語で、Javaとの併用が可能です。時にはKotlinだけで実装することが難しいこともあるため、Javaと組み合わせて実装します。
例えば、KotlinのソースコードにJavaで開発されたライブラリを組み合わせることができます。また、Javaで開発されたアプリケーションの一部をKotlinに置き換えることも可能です。どちらが主体のプログラムであっても併用できる点はメリットでしょう。
ただ、あまりにKotlinとJavaを併用すると、Kotlinのメリットが薄れてしまいます。必要な場合のみJavaと組み合わせるようにして、基本的にはネイティブなKotlinだけで実装すべきです。
Kotlinのデメリット
Kotlinにはデメリットもあるため、その内容もご説明します。
日本語の資料が少ない
日本では導入事例がまだまだ少ないプログラミング言語であるため、日本語の資料が限られています。書籍も発売されていますが、英語を翻訳したものが中心で少々読みづらいかもしれません。
エンジニアとして活躍するためには、資料を集めてKotlinのスキルを高めることが求められます。ただ、現状ではKotlinが主に利用されている英語圏の資料を活用するしかありません。日本語で情報を収集したい人にはやや難易度が高いでしょう。
現状は用途が限られる
Javaを改良したプログラミング言語であるため、Kotlinは汎用的な開発に利用できます。ただ、現状はAndroidアプリの開発が中心でJavaほど汎用的には利用されていません。
これから利用用途が広がっていくとは考えられますが「Androidアプリ以外のエンジニアになりたい」と考えている場合は困る可能性があります。長い目でデメリットが解消されることを待ちましょう。
Kotlinで出来る開発
具体的にKotlinならばどのような開発ができるのかをご紹介します。
Androidアプリ開発
Android端末で動作するアプリケーションの開発ができます。一昔前はスマートフォンを指していましたが、現在ではタブレットやパソコンもAndroidOSが搭載されているものがあるぐらいです。それらすべてのAndroidアプリをKotlinでアプリを開発できます。
開発できるアプリケーションは幅広く、Android環境で動作するアプリケーションにはほぼ対応できると考えてよいでしょう。KotlinはJavaを改良して開発されたプログラミング言語であるため、Javaで実装できている内容はKotlinでも実装できると考えて差し支えありません。
また、KotlinはJavaと非常に互換性の高いプログラミング言語です。そのため、Javaで利用されているライブラリを利用してAndroidアプリを開発することも可能です。Kotlinネイティブのライブラリもまだまだ数が限られていますが、Javaのライブラリも活用することで効率よく開発できます。
なお、Kotlinで開発されたAndroidアプリの代表例にはLINEやYahoo!ニュースなどが挙げられます。
Webアプリケーション開発
Webアプリケーション開発にもKotlinが活用できます。Javaで開発されているWebアプリケーションは数多くあり、それと同様にKotlinでもWebアプリケーションを開発可能です。対応できるWebアプリケーションの種類は数多くあり、Webアプリケーションを開発するためのフレームワークも存在しています。
Webアプリケーション開発についてもJavaのフレームワークやライブラリが利用できるため、幅広い実装が可能です。Javaのフレームワークを導入してしまうとKotlinで開発するメリットが薄れてしまいますが、どうしてもKotlinだけで開発することが難しいならば利用を検討すると良いでしょう。
ただ、KotlinだけでWebアプリケーションを開発するようにすれば、Javaだけで開発するよりも高速な動作が期待できます。仮にフレームワークやライブラリがない分野の実装でも、すべてKotlinで実装した方が良いかもしれません。
サーバーサイド開発
AndroidアプリやWebアプリケーションのようなフロントエンドだけではなく、バックエンドなどのサーバーサイド開発も可能です。Webアプリケーション開発もサーバーサイド開発に含まれる部分がありますが、ここではバックエンドの開発を指していると考えてください。
サーバーサイド開発にKotlinが利用されている理由は、Javaから移行しやすいからです。現状、Webアプリケーションやスマートフォンアプリなどのバックエンド処理をJavaで実装している企業は多くあります。ただ、Javaは難易度の高いプログラミング言語であり、細かく保守する運用に適したプログラミング言語とはいえません。
そこで、サーバーサイド開発をKotlinに移行することで、このような運用に関わる負荷を軽減する企業が増えています。JavaとKotlinでは開発にかかる負担が大きく異なるため、適切なタイミングでJavaからKotlinに移行してしまうのです。
Kotlinでできないこと、不得意なこと
Kotlinは汎用性の高いプログラミング言語ではありますが、以下の通りできないことや不得意なこともあります。
人工知能開発や機械学習
最近のトレンドである人工知能開発や機械学習の実装に適したプログラミング言語ではありません。Kotlinは汎用性の高いプログラミング言語であり「実装が可能である」と言い切れるわけではありませんが、積極的にKotlinでこれらを実装する必要はないでしょう。
このような開発に適していない理由は、Kotlinが数値を高速計算できるプログラミング言語ではないからです。人工知能開発や機械学習の実装では、大量のデータや数値を高速で計算できることが求められます。特に機械学習ではビッグデータの処理などが必要となり、そもそも対応できるプログラミング言語が限られてしまうのです。
Kotlinは汎用性の高いプログラミング言語であるがゆえに、極端に数値計算の速さに特化しているわけではありません。AI開発に対応されるPythonと比較するとその差は歴然です。どうしてもKotlinであることが求められない限りは避けた方が良いでしょう。
高いパフォーマンスが求められる処理
大量のリクエストの高速処理や、多くの帳票の並行出力など、高いパフォーマンスが求められる処理には向いていません。KotlinはJavaと同じ実行環境であり、どうしても実行速度には限界があるからです。
そもそもJavaは下位互換性の高いプログラミング言語で、それに起因して動作が遅い傾向にあります。Kotlinも同様にJavaの下位互換性の影響を受けて、パフォーマンスに応えることは難しくなっているのです。
Kotlinの将来性
現時点では広がりを見せている過程のプログラミング言語であり、これからの発展に期待するプログラミング言語でもあります。将来性に期待できるものであるため、短期的な観点ではなく中長期的な観点でプログラミング言語を評価するようにしましょう。
現時点では多くの現場でJavaが活用されているためこれらがすぐにKotlinへと置き換わる可能性は低いと考えられます。特に日本では新しいプログラミング言語の移行ではなく、可能な限り同じものを利用する傾向があるため、今すぐにJavaからKotlinへと移行する可能性は低いのです。
ただ、上記でも説明したとおり、プログラミング言語としてはJavaよりもKotlinのほうが開発しやすいといえます。そのため、これからは徐々にJavaではなくKotlinが利用されるようになっていくでしょう。数年先の将来を見越して、将来の明るいプログラミング言語だといえるのです。
Kotlinエンジニアの需要
上記でも説明したとおり、これからKotlinの将来性が明るくなるにつれて、Kotlinエンジニアの需要が高まっていくと考えられます。現時点ではJavaが中心ではありますが、これから徐々にKotlinを利用した開発が増えていくでしょう。そのような時代になればKotlinエンジニアは一気に活躍できるようになるのです。
また、現時点でもAndroidアプリの開発についてはJavaではなくKotlinが利用されるようになっています。これらのプログラミング言語では生産性に大きな違いがあるため、新しく開発するAndroidアプリについてはJavaではなくKotlinが採用されているのです。このような案件を狙えば、今すぐにでもKotlinエンジニアとして活躍できるでしょう。
なお、現時点では「Kotlinの案件数が少なくエンジニアとしては活躍しにくい」との状況になってしまうかもしれません。特にAndroidアプリ開発以外の案件に従事したい人は、思うような案件がすぐに見つからない可能性があります。これから徐々に需要は高まっていくため、Androidアプリ開発をするならば通常のJava開発などでつなぎ、その時を待ちましょう。
まとめ
Kotlinでどのような実装ができるかについてご説明しました。現時点ではAndroidアプリの開発に多用されていますが、Javaを改良したプログラミング言語であるためWebアプリケーションやサーバーサイドの開発にも利用できます。汎用性の高いプログラミング言語と考えてよいでしょう。
とはいえ、まだまだ発展途上のプログラミング言語であり、世界的にも用途は限られています。これはKotlinではなくJavaが世界的に継続利用されているからで、これからKotlinへとシフトすることで新しい用途が生まれるのです。どのような実装に利用されるかは、今後のトレンドを注視しておかなければなりません。