イントロダクション
かれこれ3年前からRailsエンジニアだったはずの私harakazu_nanfgは、どうやらこの11月からサーバーサイドKotlinを使ったエンジニアになりそうなので、先日よりKotlinの学習を始めた。
また、学習本には「Kotlinハンズオン」を採用しており、この記事はそれらの前半を要約したものである。
ちなみに、私はC言語は好きだが、Javaに関しては何も知らない。
(なお、私は「JavaScriptとJava」は「メロンとメロンパン」くらい違うという比喩が好きである)
Kotlinとは?
2011年にチェコのJetBrain社によって開発されたプログラミング言語。
「Android = Kotlin」の印象が強い。
しかし、実際にはJava同様、サーバーサイドなどでも使用されている汎用性の高い言語である。
Kotlinの特徴
Java仮想マシンで動く
Kotlinは「JVM言語」と呼ばれるものの1つ。
JVM言語とは、、、
→ Java仮想マシン上で動くプログラミング言語のこと。
Kotlin,Javaの他には、「Scala, Clojure, Groovy」などがある。
[参照] JVM上で動作する言語の一覧 -wiki
https://ja.wikipedia.org/wiki/JVM%E4%B8%8A%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%99%E3%82%8B%E8%A8%80%E8%AA%9E%E3%81%AE%E4%B8%80%E8%A6%A7
Javaとの互換性
Kotlinのコードをビルドして生成されるのは、Javaのクラスファイルである。
なのでKotlinは「Javaのプログラムを作る言語」なのだと考えて良い。
また、クラスファイルが互換があるということは、つまり「Javaのクラスファイルがそのまま使える」ということでもある。
Javaをベースにした文法
Kotlinの基本文法は、Javaのそれをベースに設計されている。
全く同じではないが、Javaを分かっていれば比較的簡単に習得できるはず。
Kotlinの文法は「Javaをより使いやすくする」ことを念頭において作られている。
いわば、「Javaの理想的な将来」をイメージした言語だと言えるだろう。
簡潔に書ける
プログラミング言語としてのKotlinの最大の特徴は「コーディングの簡潔さ」。
なので、Kotlinでコードを書くと、Javaよりもはるかにシンプルに記述できることが分かるはず。
安全性
Javaなどのオブジェクトを多用する言語では、変数にオブジェクトが参照されていないことに起因する問題がよく起こる。
一方、Kotlinではnullセーフティな作りになっている。
JavaとKotlinの違い
Kotlinは「理想のJava」である。
Javaをよりシンプルに、そして強力に、さらに安全にしていくとどうなる?
その一つの答えがKotlinだと言っても良い。
それでは、具体的にどのような点が違うのか。
型推論の採用
Javaは、Java10から型推論が導入されたが、Kotlinでは標準で型推論が用意されている。
Kotlinでは、これを使った変数宣言の方が圧倒的に多いだろう。
また、Javaには定数がなく、static finalなどで代用しているが、Kotlinには標準で定数が備えられている。
これにより、堅牢なプログラムの作成ができるだろう。
簡潔なクラス
クラス宣言に直接引数を指定するプライマリコンストラクタ。
メソッドの名前付き引数や初期値の指定。
フィールドを廃止して、全てプロパティにする。
単に簡潔なだけでなく、Kotlinは、わかりやすく安全であることがわかる。
強力なオブジェクト
Kotlinには、Javaにはないオブジェクトが色々と用意されている。
例えば、クラス内にstaticデータをまとめた「コンパニオンオブジェクト」や、データだけをまとめる「データクラス」など。
一度使うとJavaには戻れなくなる。
null safetyとオプショナル
もっともKotlinの良さを感じるのは「nullに関する扱い方」である。
Kotlinでは変数にnullを代入できない。
また「nullである可能性のある変数」「nullでは絶対にできない変数」などの指定をしてコードを書くことで、nullをうまく処理できる。
Kotlinで開発可能な世界
Android開発は当然!
Kotlinを学ぶための最初の一歩としてAndroid開発は良い選択。
ただし、Androidは独自のAPIを持っているため、ここで得た知識はAndroid以外で利用できないだろう。
PCのアプリ開発
何度もいうように、KotlinはJavaの互換性がある。
なので、当然PCのデスクトップアプリも開発できる。
Webのクライアント&サーバー開発
Kotlinには、JavaScriptに変換する機能があり、Kotlinを使ってWebのクライアント開発をすることもできる。
また、サーバーサイドの開発ももちろんできる。
Kotlinには「Ktor」というフレームワークが用意されており、これによりサーバープログラムを作成できる。