LoginSignup
6
3

More than 5 years have passed since last update.

こよいはKotlin REPLナイト。

Last updated at Posted at 2017-06-02

なんとなくの想定

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
で、あたりかな。。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3