Androidエンジニアとして歩み始めた新卒に迫りくるKotlinについて

# はじめに
この投稿はアイスタイル [Advent Calendar 2017](https://qiita.com/advent-calendar/2017/istyle)の21日目の記事です。 

はじめまして！
今年の9月からAndroidエンジニアとして歩み始めた新卒エンジニアです。

今日までの約3ヵ月、Androidと格闘し続けた結果、まだまだ覚えることばかりではありますが、
ベースとなる知識や有名なライブラリを覚えることができました。（~~できてるはず~~）

Androidアプリの開発は**Java**が使用されています。今も昔もAndroidといえばJavaだと思っていました。
しかし、最近**Kotlin**という言語でも開発できることを知り色々調べた結果、
Kotlinを知っている人なら、たぶん皆さん知っている通称**「赤べこ本」**を買って勉強し始めた次第です。

今回は、学ぼうと思った経緯とKotlinとJavaのここから違うという点について書きたいと思います。
（~~まだ、Kotlinについて話せるほど知識がないとも言います~~）

# なぜKotlinを学び始めたのか
## Android Studio 3.0からKotlinが公式にサポートされた
Kotlinは2017年5月に「Google I/O 2017」で公式でのサポートが発表されAndroid Studio 3.0からサポートされているのだそう。
Kotlinに関する公式ブログの記事、
[KOTLIN BLOG - " Kotlin on Android. Now official "](https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/)
には喜びが感じられる文章と公式にサポートされた旨が書かれていました。
> "Today, at the Google I/O keynote, the Android team announced first-class support for Kotlin. We believe this is a great step for Kotlin, and fantastic news for Android developers as well as the rest of our community. We’re thrilled with the opportunities this opens up."

ちなみに調べてみるとAndroid Studio 2.X系でもKotlinは使用できたようですが、その場合はライブラリの導入などが必要だったようです。

## 開発言語として採用されはじめているのだそう
調べてみるとサイバーエージェントさんでは、2年ほど前、2015年にはKotlinが採用されたアプリがあったそう。
もう少し調べてみるとこんな記事があった。
[Android Developers Blog - " Update on Kotlin for Android "](https://android-developers.googleblog.com/2017/11/update-on-kotlin-for-android.html)

> "Today is the beginning of KotlinConf. It's been almost 6 months since we announced Kotlin as a first-class language for Android at Google I/O. During this period, the number of apps on Google Play using Kotlin has more than doubled. More than 17% of the projects in Android Studio 3.0 are now using Kotlin. We are really excited about the strong momentum, and we are thrilled that Android developers all over the world are discovering the joy of Kotlin programming."

伝えたい部分だけ要約すると、Android Studio 3.0でKotlinを公式サポートしてから6ヵ月。Android Studio 3.0で開発されているプロジェクトの17%でKotlinが使用されているのだそう。（英語に自信がないので、間違ってるぞというご意見は大歓迎です）


## 結論として
Googleが公式にサポートを表明して、Android Studio 3.0では公式にサポートされてKotlinファイルもネイティブで作成できるようになったし、Kotlin採用率も増えているようなので、Kotlinが書けないとAndroidアプリエンジニアとして将来が不安になったのでやるしかないと奮い立ったわけです。

# そもそもKotlinって？  
今さら？書くの遅くない？と思う方は多いかもしれませんが、Kotlinについて簡単に説明します。

- IDEの開発元で有名なJetBrains社で開発された言語
- Javaと同じJVM上で動作
- Javaでやってしまいがちなミスを未然に防ぐことができる設計
- 静的型オブジェクト指向言語

なのだそう。ちゃんと書けばもっと書くことあるだろ！ってツッコミは間違いなく飛んでくる内容ですが、許してください。

# 少しだけKotlinを見てみる
タイトルの通り少しくらいコードを書いてそれっぽい記事にしたいと思い、そもそも変数の宣言方法とかからこんな感じで違いますという紹介を少しだけしたいと思います。

言語が変われば変数の宣言方法が違うなんていうのは、当たり前の話ですがJavaとKotlinを比べると、
Javaでは　`int a = 3`　という感じで **型 変数名 = 式** の形式で変数を宣言しました。Kotlinでは図のように宣言します。

![var.png](https://qiita-image-store.s3.amazonaws.com/0/213898/68fa3097-1cc6-f2eb-b4c0-c5e4c41e97bb.png)

fun ~は関数の記述になるので、いったん置いておいて**<var or val> 変数名 : 型 = 式**で変数の宣言や初期化を行います。
次に配列の場合は

![array.png](https://qiita-image-store.s3.amazonaws.com/0/213898/5c0d620c-3d5c-e6e6-8ee5-da3ec2d29322.png)

**arrayOfNulls<型>(配列長)**の式を使用する。なんだかメソッドを使用しているように見えるがこの辺の理解をするところまで、まだ学びが進んでいないのでKotlinをちゃんと語れるようになったら、しっかり書きたいと思います。
調べると他にも配列の宣言方法はあるようだが、これでも配列が作成できるようなので今回は割愛する。

# おわりに
自分がKotlinを始めようと思った理由という自分語りのような内容になってしまった気もしますが、この記事を読んだ方が自分と同じようにKotlinを学んでみようと思い、Kotlin界隈がさらに賑わう日が来る助けになれば幸いです。

明日は[@sugimotor](https://qiita.com/sugimotor)さんです！