最近巷で話題のKotlin、名前を聞いたけど一体どんな言語なのか?そもそもKotlinなんて名前も聞いたこともないし触ったこともない方向けに自分の勉強含め、解説していきたいと思います。
Kotlinとは?
KotlinはJetBrains社によって開発された静的型付けオブジェクト指向プログラミング言語
。2011年にProject Kotlin
を発表、翌年の2月にApache2 licenseをもとにオープンソース化されました。名前の由来はロシア領のコトリン島。
言語の特徴
- JVMで動作し、Javaで書かれたプログラミングとほぼ変わらない速度でコンパイルできる
- Null safety (NULL安全)
- Javaとの相互運用ができる(Javaのクラスを呼び出したり、KotlinのクラスをJavaで呼び出すことができる)
- Javaより簡潔に記述できる
言語仕様がかなりJavaと似ているところがあるため、Javaプログラマであれば少しの時間であまり違和感なく使えるのではないのでしょうか。私も実際にJavaを習得していて、ある程度Kotlinのリファレンスを流し読みしただけでもすぐにAndroid開発でほぼ不自由なく使用することができました。
また、Javaほどコードが複雑にならない、Null safety
の恩恵でJavaエンジニアをよく苦しめるNullPointerException
を防ぐことができます。それらのことから、Javaよりも学習コストが低く、Javaを取得していないエンジニアでも比較的学びやすい言語です。
開発環境について
Kotlin単体で使用したいならIntelliJ IDEA + 推しのJDK、Android端末などで使用したいならAndroid Studioの使用を推奨します。どちらもエディタはJetBrains社のIntelliJ IDEAを使用しており、かなり強力です。機能としては、
- JavaのコードをKotlinファイルにコピペするとKotolinに変換できる
- 文脈などを考慮したスマート保管
- 文法チェックと充実したリファクタリング
- 見やすいシンタックスハイライト
- dockerやGitHubとの連携 等々...
IntelliJ IDEAは有料版もありますが、Kotlin言語単体での開発であればほぼ問題ないと思います。
JDKに関しては最新であれば基本どのJDKでも大丈夫です。
上記のほかにもコマンドラインで実行環境を構築し、Visal Studio Codeで開発することも可能です。
また、web上での実行ツールもあり、簡単に試すことが可能です。
Kotlinで主にできること
Javaでできることは基本的に何でもできます。その中で主に使われる用途について軽く説明したいと思います。
Android
Android開発がKotlinを使う機会が一番多いのではないかと思われます。
Kotlinは2017年にAndroidの公式言語になっており、急速に開発者の人気を集めていきました。
現在、60%以上
のAndroid開発者がKotlinを採用しており、2019年にGoogleがGoogle I/O 2019 にて「Kotlinファースト」をさらに強化していくということで、その取り組みをしていきました。
例えば、
- 実装をさらに簡潔かつ快適に書けるようになるAndroidXのKotolin固有のAPI(KTX、コルーチンなど)の対応
- サンプルが優先して提示される
- Androidアプリケーション開発を支援する「Android Jetpack」の最新バージョンでの優先した提供
- マルチプラットフォームプロジェクトの対応 (alpha版) 等々...
Java プログラミング言語からの API の使用もサポートしつつ、Kotlin ユーザーを念頭において設計されているようです。
Kotlin+Androidはどのくらい簡潔に書けるのか
簡単なデータを保存しておきたいときによく使用されるSharedPreferencesの比較ですが
Javaのみで記述した場合
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); //Preferencesの取得
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score_key), newHighScore);
editor.commit();
KTX + Kotlinで記述した場合
val pref:SharedPreferences = getPreferences(Context.MODE_PRIVATE) //Preferencesの取得
pref.edit(commit = true){
putInt(getString(R.string.saved_high_score_key), newHighScore)
}
このようにKTX + Kotlinで記述すると、Javaよりも簡潔にわかりやすく自然に記述することができます。
実際に書きやすく、コードを見直した時もどのような処理だったかも分かりやすいため、Android個人的にお勧めします。
また、Android developersでのKotlinのスタートガイドがかなり充実しており、初学者でもかなり手に付けやすい環境になっております。
もう一つの利点として、冒頭でJavaとの相互運用できると言ったように、Kotlinがサポートされる前の古い端末でもAndroidAPIのバージョンが合えば使用できます。
サーバーサイド
サーバーサイドではSpring frameworkが主に使用されています。
Springは再利用性が高く、大規模なサーバー構築などに用いられていきました。
SpringのほかにKtorなどの非同期Webフレームワークも存在します
導入方法
Spring Initializrでテンプレートプロジェクトを作成できます。自動生成されたプロジェクトをIntelliJ IDEAで読み込むと簡単に実行可能になります。
その他
- KotlinDL Deep Learningができる。モデルの作成は非対応だったはず。
- Kotlin for JavaScript KotlinをJavaScriptに変換できる
Hello World
fun main(string: Array<String>){
println("Hello World Kotlin!!")
}
MainClassを作る必要はないです。fun
やclass
に修飾子がついていない場合は暗黙的にpublicになります。
mainの引数はコマンドライン引数。JavaはSystem.out.println
まで必要でしたがKotlinはprintln
だけで簡単に出力ができます。
文法
記述予定