ほのぼのしたエンジニアのブログ

触った技術についてまとめていくブログです。

Kotlinを使ってみる

どうもShZgZです。

 

非常に暑く、我が家付近では雨が続いております。

皆さんはいかがお過ごしでしょうか?

 

私は普段Javaエンジニアとして働いていますが、今回はちょっと遅くなりましたが、Kotlinを触ってみようかと思ってます。

 

発表されたのは2011年7月20日とのことですが、その頃は全然知りませんでした。

(そもそもその頃はエンジニアですらありませんでした。)

とはいえ、一昨年くらいからちょいちょい話は聞いていて、今回GoogleさんがkotlinをAndroidの公式言語に追加するということがありました。

 

そのため、ちょっくら触ってみようというわけです。

仕事ではAndroidには全く関わりがありませんが、どうにもJavaとの互換性が高く、Javaよりもコード量が少なくて済むとかなんとか。期待に胸が膨らみます。

 

それではまずはやはりコンパイラを入れるところからやっていきます。

因みにOSはMac OS Xです。

 

インストールですが、MacでHomebrewが入ってれば以下のコマンドで一発です。Homebrew — macOS 用パッケージマネージャー

(因みにですが、ココでブラウザでも実行できます。)

brew install kotlin

 

簡単に文法とか確認するだけならREPLが一番 ♪

ただJava(Version 1.8)にはありません。1.9で追加されるとのことですがまだありません。

しかしKotlinにはREPLがあるということなので以下のコマンドよりREPLを実行

$ kotlinc-jvm

Welcome to Kotlin version 1.0.1 (JRE 1.8.0_60-b27)

Type :help for help, :quit for quit

>>>

それではいつものやつやってみます。

Javaならこんなんですね。

System.out.println("こんにちわ。Javaの世界 !!");

 Kotlinではこんな感じらしいです。

println("こんにちわ。Kotlinの世界!!") 

 お分かりでしょうか?

そうです!!

とうとう標準出力メソッド(println)がデフォルトで使えるようになりました。

もう一つ比較で、

Javaならこんな感じ(注:ソースはイメージです。)

>>> static void test(String str){

... System.out.println("Hello, " + str + "!!");

... }

>>> test("TEST");

 Hello, TEST!!

Kotlinだとこんなのになります。

>>> fun test(str : String){

... println("Hello, $str!!")

... }

>>> test("TEST")

Hello, TEST!!

ここまでのぱっと見の相違点として

・ まずメソッド定義がfunになった。楽しそう!!

・返り値の型がいらんくなった。あえて書くならvoidじゃなくてUnitにするらしい、↓みたいに。

fun test(str : String): Unit {

 ・printlnの中で引数を引用する際に"$引数名"でよくなった。JavaでもString.formatとか使えばいけたけど、これがデフォルトのprintなのは結構助かりそう

・そして、セミコロンがいらん。セミコロンがいらん。

 

とりあえず今回はこれくらいで。

 

 今回は簡単な出力しか試さなかったけど、他の方々が書いてるコードを見るとJavaで書くよりも結構短くなってる印象です。

Javaとの完全互換(Javaで作ったクラスをKotlinで呼べて、Kotlinで作ったクラスをJavaで呼べるとかとか)であることから平行した開発も出来る。Kotlinへの移行を考える際も最悪Javaに戻れるっていう安心感もある。

ただ、今日までエンジニアで出向いた現場でJavaのバージョンは大体1.7以下だった。(今の現場は1.8だけど、1.8で追加されたStreamとか使いまくるとあまり周りから良い顔はされない。まぁ悪い顔されるわけでも無い)

それから考えると、もうすぐJavaは1.9が出て(今のところ2017年9月まで延期っぽい)、Kotlinも盛り上がってきてるけど、SESで出向く先のちょっと大きめの会社の下請けでは採用されるのには結構時間が掛かりそう。

とりあえず個人的にはもうちょっと使ってってみようかと思います。