2014/12/16 このエントリーをはてなブックマークに追加 はてなブックマーク - 【JVM Language Trend】Kotlinについて本気出して考えてみた

【JVM Language Trend】Kotlinについて本気出して考えてみた




こちらはKotlinアドベントカレンダーの16日目の記事です。






いきなりですが、僕はKotlinが好きです。
なんてったってNull安全だし書いていて気持ちが良いからです。
Javaのライブラリ使えるけど、ダルくないし。


、、、という風に主観で口語的に説明するのはとても簡単なのですが、
客観的にKotlinを見た時どういえば気に入ってもらえるか。
どうしたら流行るのかなぁっていうのを真剣に考えました。


まず比較対象ですが、同じ界隈ということで考えるとJVM言語が思い浮かびます。







簡単に言うと、JVM上で動く言語です。詳しく言うと以下のとおり。

computer programming languages that are used to produce software 
that runs on the Java Virtual Machine (JVM). 

Some of these languages are interpreted by a Java program, 
and some are compiled to Java bytecode 
and JIT-compiled during execution as regular Java programs to improve performance.




どんな種類があるかというとこんな感じ。

Apart from the Java language itself, the most common or well-known JVM languages are:

Clojure, a functional Lisp dialect
Groovy, a programming and scripting language
Scala, an object-oriented and functional programming language
JRuby, an implementation of Ruby
Jython, an implementation of Python



ということで、Wikipediaから引用しましたが、

代表的なのは(というと語弊があるかもしれませんが)Clojure、Groovy、Scalaです。
その他にもたくさんあります。Ceylonとかもそうですね。そこに参入してきたのがKotlinです。

今回は、比較対象として「Kotlin」「Scala」「Groovy」「Clojure」を選定します。
※言語仕様に関してはあまり言及しないつもりです






主観で言ってもしょうがないのでGoogleさんの統計情報を使います。
以下の図はKotlin、Groovy、Clojure、ScalaのGoogleの収集した情報動向の比較です。








Scalaの一人勝ち状態ですね。
Groovyも人気があるのがわかります。もしかしたらビルドツールである、
gradleなどの影響もあるかもしれません。

Clojureもコアなファンは多いです。
見ての通り4言語の中だとKotlinが一番人気がないことが分かります。


JRubyやJythonどうなのよ?って気になる人はGoogle Trendsで調べてみてください。
まぁまぁって感じになっています。





次に発表された時期(not リリース)。

・Kotlin 2011年
・Clojure 2007年
・Scala 2003年
・Groovy 2003年




言語の歴史的に見ても、まだKotlinは登場したばかりです。






ということで、先ほどの統計情報を元に流行っていないということで仮定します。
では、なぜ流行っていないのかという要因分析に入ります。
考えられるのは以下のとおりです。


▼ver1.0がリリースされていない

Kotlinは2014年12月現在、0.9.66が最新バージョンです。
メジャーバージョンのない言語はなかなか使いにくいというところもあるでしょう。

▼フレームワークが少ない

ScalaにはplayScalatraSkiny、Groovyであれば、
Grailsplayなどのフレームワークがあります。
JavaだったらSpring、JSFなど一般的ですよね。(あえて、Strutsは出しません)
Kotlinにはまだこういったキラーフレームワーク的なものが無いのです。


▼プロダクトでのKotlinの採用実績が少ない

国内で言うと、今のところAndroidで利用されているレベルです。
たしか、クックパッドの方がプロダクトレベルで採用を検討しているらしいとか。
そのぐらいです。あと、Web系(サーバーサイド)の事例が無いのではないかと思います。


▼選定の際に選択肢にまず入っていない

知名度が低いですね。結局、言語の歴史とか周辺のフレームワークとかが関連づいてくるところです。



▼情報が少ない


Scala、Groovy、Clojureなどに比べると情報が少ないです。
例のごとく、Googleさんの件数を比較してみます。

Kotlin 約 450,000 件
Groovy 約 39,900,000 件
Clojure 約 806,000 件
Scala 約 626,000,000 件

※なお、検索結果の棲み分けはしていません。(Kotlin駆逐艦隊webとか、WebサービスのGroovyとかの情報も含まれてしまっていると思います)


言語 入門 逆引き APIリファレンス 書籍
Kotlin
Groovy
Scala
Clojure


ちなみに、Amazonで調べたところ、関連のある本(技術雑誌なども含む)は
Clojure11冊
Scala34冊
Groovy7冊
でした。




流行らせるということは実は簡単なのではないかと思っています。
なぜなら、流行っていない理由が覆りさえすれば良いのだから。

ということで、流行る方法を考えると以下のようになります。

▼ver1.0を待つ

こればっかりは待つしか無い。予定では、来年の春頃にリリースとされています。


▼キラーフレームワークが登場する



サーバーサイドのフレームワークを作るか、もしくは使用例を作っていくしか無いですね。


現状を一旦整理しましょう。

・サーバーサイド

今現在、KotlinにもWebフレームワークはあります。
wasabiKaranode.ktなど。

そのあたりはパトさんのスライドに詳しく書いてあります。
http://www.slideshare.net/chariderpato/kotlinweb

Spekというテスト用ライブラリもあります。

ただ、キラーフレームワークはこれだ!っていうのはなかなか。。。
とりあえずこれから全部使ってみます。はい。
個人的にはJavaのフレームワークで動かすのも良いかなとは思います。
Spring Bootとか。モデルケースさえ出来てしまえば良いと思うのです。

SinatraみたいなKotra的なのとか作ったら反応あるかもしれない。



・Android

意外とあります。
(というかKotlin言語自体がAndroidに対してのKiller Frameworkならぬ、 Killer Languageだと僕は思ってますが。)

かの、Jake Wharton氏のKotterKnife
KotlinAndroidLib
あと、RoboGuiceはKotlinでも普通に使えますし。
Android annotationsは使えないらしいですけど。




ということで結論は、
・サーバーサイドに関しては決め手にかけるのでモデルケースを築いていく必要がある。
・Androidは充分このままで問題なし



▼プロダクトでの採用実績を増やす



増やすしか無いですね。僕個人としてはTwitterクライアントを今更ながらKotlinで作る予定です。
僕が作ったわけではありませんが、現状の実績的なものの紹介


国内
しおしおさんのIntelliJ IDEAプラグイン
パトさんのバッテリーウィジェットアプリ
クックパッド八木さんのRSSリーダー


海外
Using Kotlin for the Front-End Web
Industrial Geodetic Systems
Kotlin in backend, data processing and service development
Prezi.com
Using Kotlin in data processing pipeline, ElasticSearch plugins, and IDE plugins
Bremeld Corp SA
Medication Control - Android Application
Igor Fomin
Data schema compiler for TL language implemented in Kotlin
Telegram
Facebook Game with over 10K users daily. Written in Java and all new code in Kotlin
Wrestler.Unstoppable
Android Application used internally
Android Application. Using Kotlin since M2
Uncopt LLC
Using Kotlin to build a new Vertical Product with team of five
GMC
True Fool. A Durak card game for Android written in Kotlin and libGDX
JackOfHearts



▼Kotlinの認知度を上げる


認知度を上げるためにはアウトプットを増やす、情報を増やすしか無いので、 前後の内容と相関してきます。
コミュニティの発達も重要ですね。最近JJUG(Japan Java User Group)の
色々に参加させて頂いて感じています。

勉強会、ハンズオンなどもう少し活発にやっていかないとなぁと。(自分はどのポジションなのやら)


ということで、ぜひKotlinユーザーグループに参加してください!



▼入門サイトの充実、逆引きサイトの充実



入門サイトに関してはたろうさんのサイトがあるので、協力できることがあれば、
協力していこうと思います。
僕個人としてはその他、Tipsをアウトプットしてきたい。
あと、逆引きサイトをつくろうと思っています。アンオフィシャルですが。



▼Kotlin関連書籍の出版



本は、たろうさん期待してます!











今回はKotlinの人気向上について、統計情報を元に分析、解決法の検討までを行いました。
結論としてはサーバーサイドフレームワークの充実、使用例の充実、情報の充実
などが今後の課題として取り組んでいかなければならない点だと思います。

突発的な人気というか、時代のメインストリームになってほしいとは僕は思っていません。
JVM言語としての選択肢として検討されるレベルでの基盤を構築していければ良いです。
そうすれば、みなさんの引き出しを増やす結果になると思っています。




2015年3月9日追記


宣言していたとおり、Kotlinの逆引きサイトを現在作成しています。
サイト名として「逆引きKotlin」というそのままの名前で公開していますので、
良かったら見てほしいなと思います笑

こちらからみれます
逆引きKotlin

これでKotlin人口増える一助になればなぁ、、、的な。




















0 件のコメント:

コメントを投稿