Github定点観測（Kotlin）　その１（2017年６月）


#『Google、KotlinをAndroidアプリ開発言語に選定――I/O会場から大喝采』

...ということで、Android界隈を中心にこれからKotlinがじわじわと盛り上がっていくものと思われる。

![github_017061.png](https://techcrunchjp.files.wordpress.com/2017/05/2017-05-18-google-io-2017-0300.jpg)
出典:
http://jp.techcrunch.com/2017/05/18/20170517google-makes-kotlin-a-first-class-language-for-writing-android-apps/

言語としてのKotlinについては，（Javaプログラマでなくとも）良記事[JavaプログラマのためのKotlin入門](http://qiita.com/koher/items/bcc58c01c6ff2ece658f)あたりをお勧めするとして、ここでは、本日(2017年6月1日JST午後1時)時点での、Github上でメジャーなKotlinプロジェクトを眺めておくことにしたい。

※これは久々にkotlinが気になっている自分向けのメモ書きなので、随時追記とする。
## （追記）"Androidアプリ開発言語に選定"がどのくらいバズったのか...

定点観測するなら、Googleトレンドも使おう的なコメントをいただいた。たしかに、Googleトレンドを使うと、時系列・各国別に興味深い比較を行える。

この２ヶ月ほどの間に起きたこと:
![scala_kotlin.PNG](https://qiita-image-store.s3.amazonaws.com/0/16455/edef2ace-6f9c-ead8-5ec6-bd7f86a91d81.png)

"Androidアプリ開発言語に選定"のインパクトは、Googleトレンド的には、Kotlinが瞬間値でScalaを超えるほどのものであったらしい。JetBrains社のマーケティング戦略、ひとまずは成功というところで、今後はどうなるのかが気になるところ。興味ある人は、以下からいろいろ調べてみよう。
https://trends.google.co.jp/trends/explore?date=today%203-m&q=kotlin


（参考）KotlinとScalaとの関係が気になる人は以下も。
http://qiita.com/kmizu/items/248bcf30c44595e6d091

#GitHub Kotlinプロジェクトのスクショ
半年とか１年とか後には、Kotlinプロジェクトのスター数ぐっと増えてるんじゃないかと期待して、メモ的に上位スター数３０のスクリーンショットを貼っておく（クリックして拡大）。


![github_017061.png](https://qiita-image-store.s3.amazonaws.com/0/16455/6bac5f09-c168-bf9a-89bc-77e512ed9ec3.png)


#目についたところ
##①Android向けライブラリ
AndroidStudio開発がKotlinのもっとも一般的な使われ方であろうこともあり、github上でメジャーなKotlinプロジェクトの多くはAndroid向けライブラリである。中でも、5.9kスターのankoはダントツ*(ふだんKotlinを使っていない私も名前は知っていた)*。
以下、SuperSLiM(2kスター)、RxKotlin(1.9kスター)、Twidere-Android(1.2kスター)、Multi-Selection(984スター)と続く。その他にも、言語名はJavaだがKotlinで（も）書かれているライブラリにもメジャーなものはあるかもしれない。

[付記]
ankoの概説。とっつきやすいDSLだね。
http://dev.classmethod.jp/smartphone/android/kotlin_anko_tutorial/

個人的には、オールドファッションなTwitterクライアントとしてGooglePlayにも公開されているTwidere-Androidと、ウクライナの実力派チームが公開しているMulti-Selectionその他のKotlinライブラリが気になった。

##②Kotlin啓蒙系
新興言語であるKotlinは、まだまだ知ってもらう取り組みが必要。
ということで、Kotlin情報を集約したawesome-kotlin(1.7kスター)、入門チュートリアルKotlin-Tutorials(1.4k)、ワークショップに関するkotlin-koan(931スター)、JetBrains社によるkotlin-examples(803スター)など、啓蒙系（？）のプロジェクトも多くのスターを集めている。

awesome-kotlinのリンク集はこちらからも利用できる。分野別にまとめられていていい感じ。
https://kotlin.link

Kotlin-Tutorialsは、中文版のみで1000スター超え。中国では日本以上にKotlinは盛り上がっているのだろうか？

##③その他
個人的に気になったのは、、JetBrains社によるkotlin-native(1.2kスター)、gradle-script-kotlin(688スター)、corda(683スター）。

Kotlinからネイティブコードを作成できるkotlin-native。まだまだこれからの取り組みなのだろうが、iOS開発や組込開発でKotlinが使えるようになったら素敵。
公式のアナウンスを見るに、（口）約束はしてくれている:
>We are currently working on the core technology for Kotlin/Native which is the same for all target platforms (compiler, core runtime and library). As a matter of possible future work, we are considering the following possible use cases:

> - iOS applications (reusing code with Android)
> - Embedded systems/IoT (e.g., Arduino and beyond)
> - Data analysis and Scientific Computing
> - Server-side and Microservices (low-footprint executables, utilizing the power of coroutines)
> - Game Development

出典　[Kotlin/Native Tech Preview: Kotlin without a VM](https://blog.jetbrains.com/kotlin/2017/04/kotlinnative-tech-preview-kotlin-without-a-vm/)


gradle-script-kotlinは、Groovy製のビルドツールとして有名なgradleのKotlinサポート版。昨年くらいからgradleをkotlinで書くという試みが始まっているらしく、気になっている。

そして、cordaは、金融機関向けの分散型台帳フレームワーク(R3社開発)。活用例は、以下など
株式会社みずほフィナンシャルグループ他のプレスリリース:
[【FinTech】ブロックチェーンを活用した実貿易取引の実施について～海外ITサービスプロバイダーとの協働による取り組み～](https://www.mizuho-fg.co.jp/release/20170426_2release_jp.html)
詳しい人はCordaはブロックチェーンじゃないのでは、とか突っ込みたくなるかもしれないが、バージョン1.0が出てからそんなに時間がたっていないKotlinを金融機関向けのソリューション開発をがっつり使うとは、やるなR3社。
 =>個人的には一番の注目株。

#番外編
その他、kotlinで、github上で気になった動き（追記中）。
##①Spring Framework 5.0でのKotlinサポート
7月にリリース予定のSpring Framework 5.0では公式のKotlinサポートが予定されている。
前々からKotlinでSpringて話題はいろいろあったが、これからの方が楽しみ。
Kotlin routing DSL など、試してみて追ってレポートしたい。

（Spring Framework 5.0）
http://qiita.com/kazuki43zoo/items/1d5d09a5a70a6be696ac

（ Kotlin support in Spring Framework 5.0）
https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0
https://speakerdeck.com/sdeleuze/functional-web-applications-with-spring-and-kotlin

### おまけ　SparkKotlin ～"軽量WAF"SparkのKotlinサポート
Java8向けの軽量webフレームワークsparkがいつのまにか割合とメジャーになって(6.2kスター）、最近、kotlinサポートを表明。spring bootの対抗馬になってくれたら面白い。
https://github.com/perwendel/spark
https://github.com/perwendel/spark-kotlin

関係ないが、Scala製のsparkの方もkotlinDSLサポートしてくれる(orベストプラクティスをどなたか書いてくれる)とうれしいな。

##②SwiftKotlin　～ SwiftコードをけっこうまともなKotlinコードに変換

けっこうな需要がありそうなSwift->Kotlinへのコード・コンバーター。
https://github.com/angelolloqui/SwiftKotlin
主な実行環境のiOS/Android間の相違があるため完全な変換はとてもむりだろうが、作者の方は、現時点の実装でも、大抵のSwiftコードをけっこうまともな(a pretty decent)Kotlinコードに変換できるよ、と言っている。実装例:
http://angelolloqui.com/blog/38-Swift-vs-Kotlin-for-real-iOS-Android-apps
Swiftをがっつり書く立場になったら試してみたい。

#続きは
年末頃に。それまではcordaを勉強してみる予定。
Kotlinのコードは見た目にいや味が少なくていいね。