なんとなくの想定
Androidガリガリ書きまっせ、的な人ではない、
「ITに興味はないけどエンジニアになってしまった新人」のような人が、
Andfroid型の開発が人手不足っぽいシチュエーションに置かれていて、
ついに、kotlinがどうとかを聞いてしまったあたりをイメージ。
はしょって書くので、対象読者は、ググるはまぁ人並みか、それ以上にデキる人。
正直、内容は概ねkotlin公式のこのチュートリアルそのもの。
https://kotlinlang.org/docs/tutorials/command-line.html
...書いた翌朝に知ったんだけれどね。このチュートリアルは現実的で
そのまんまでいいと思うんだけれど、まぁ以下は主にAndroid向けなJVM言語kotlinが生まれたきっかけを軽く知っておくための雑文。
ゆるくkotlinをはじめる、1つのプラン
今は昔、ITバブルの頃に当時のJavaにイラッときたギークたちが生み出した
2つの言語、GroovyとScala。
- Java-> オブジェクト指向なスクリプト言語Groovy
- Java-> ハイブリッド言語(オブジェクト指向+関数型言語)Scala
Android向け言語として売り出し中のKotlinは、
両言語の10年ほどの歴史をうま〜く取り込んで、
ついに Annroidの公式開発言語のひひとつにまでなった。
そのあたりのGroovy使いやScala使いな人たちからすると、
なんだかしたたがだねぇ、、という思いもあるようだけれど、
「Kotlin=ことりん」というネーミングから
Java家の「ちゃっかり末娘ことりん」くらいに思って、
いいとこどり言語を知っておくのも悪くない。
そのためには、Groovy使いやScala使いな人たちが
kotlinを触ってみているさまをみておくといい。
「groovy kotlin」「scala kotlin」と検索してみると
いろいろな情報が出てくるよ。ちょっと古い情報も有効活用しよう。
ということで、本日は、Groovy使いな方の
Kotlinにチャレンジしてみる(HelloWorld)
からスタートしてみる。
sdkmanでkotlinインストール
kotlinをはじめ、さまざまなJava上の言語・ツールはgroovy製のsdkmanというツールで最新版をさくっとインストールできる(参考)。
注. windowsの場合は、Bash on Windowsなどで、まずはcurlを使えるようにしておこう(参考)。
SDKMANのインストールは以下だけで大丈夫
curl -s api.sdkman.io | bashというコマンドを実行すればOKです。
インストールが終わったら、ターミナルの再起動...
その後は
sdk list kotlin
で、「Available Kotlin Versions」のリストを軽く見て、kotlin最新版 のインストールだ:
sdk install kotlin
Javaがないと怒られたり、Javaが古い人はJavaも最新版にしておこう:
sdk install java
KotlinでREPL
Kotlinインストール後は、kotlinc-jvmというちょっと長ったらしいコマンドでkotlinのREPLを試すことができる。
REPLとは...を書くと長くなりそうなので、要するに、以下のようにコードの実行結果をすぐに確認できるコマンドラインツールだよと言っておく。以下のようなもの。
$ kotlinc-jvm
Welcome to Kotlin version 1.1.2-2 (JRE 1.8.0_131-b11)
Type :help for help, :quit for quit
>>> 1+2
3
>>> println("Hello Kotlin!")
Hello Kotlin!
>>>
REPLは仕事中に電卓かわりに使ったりするたぐいのものだけれど(必要にかられて、ちょっとした処理を書く際にはpyhtonかgroovyのREPLがおすすめかな。)、もちろん、斜め読みしたkotlinの文法をお試しする用途にも使える。
英語で公式を読むテンションがなかったら、
Kotlinの公式リファレンスを日本語化してみた[前編]
を起点に、日本語化されたドキュメントを当たってみるのが良いと思う。
ここでは、いわゆるラムダ式関連を試しておこう。
以下のコード「(1):」のとこと「(2):」のとこの出力が
どうなるか分かるかな?
val lst = listOf(1, 2, 3, -4, 4)
var sum = 0
lst.forEach {sum += it}
print("(1): $sum")
lst.filter { it > 0 }.forEach { sum += it}
print("(2): $sum")
こうしたお試しにREPLはぴったりだ。
上のコードをREPLを貼り付けてみよう。
>>>val lst = listOf(1, 2, 3, -4, 4)
>>> var sum = 0
>>> lst.forEach {sum += it}
>>> print("(1): $sum")
(1): 6>>>
>>> lst.filter { it > 0 }.forEach { sum += it}
>>> print("(2): $sum")
(2): 16
>>> sum
16
どうなっているのかは、(1, 2, 3, -4, 4)のところの足し算・引き算ができれば分かるよね。
ひとつのキモはforEach {sum += it}とったところだ。 「it」って何という疑問がある人は、groovy itで解決されるかもしれない。変数宣言のvalとvar の方はscalaね。
その他、どんどんお試しコードをkotlinにREPLに貼り付けていってみよう。
(REPLの終了は、Ctrl+Cとかね)
要するに
「Javaとkotlin使えます、android開発したいです」、ていうよりも、
「Java使えます、あと、groovy, scala,kotlinなどを勉強してみました」という方が
意識高い子だな、と思われそうだということね。
今回はこれまでにして、次回は、
おっさんほいほいのJava6時代のサーブレットをkotlin
で、あたりかな。。