こちらはKotlinアドベントカレンダーの16日目の記事です。
はじめに
いきなりですが、僕はKotlinが好きです。
なんてったってNull安全だし書いていて気持ちが良いからです。
Javaのライブラリ使えるけど、ダルくないし。
、、、という風に主観で口語的に説明するのはとても簡単なのですが、
客観的にKotlinを見た時どういえば気に入ってもらえるか。
どうしたら流行るのかなぁっていうのを真剣に考えました。
まず比較対象ですが、同じ界隈ということで考えるとJVM言語が思い浮かびます。
そもそも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」を選定します。
※言語仕様に関してはあまり言及しないつもりです
Kotlinホントに流行ってるの?
主観で言ってもしょうがないので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は登場したばかりです。
なんで流行ってないの?
ということで、先ほどの統計情報を元に流行っていないということで仮定します。
では、なぜ流行っていないのかという要因分析に入ります。
考えられるのは以下のとおりです。
Kotlinは2014年12月現在、0.9.66が最新バージョンです。
メジャーバージョンのない言語はなかなか使いにくいというところもあるでしょう。
ScalaにはplayやScalatra、Skiny、Groovyであれば、
Grails、playなどのフレームワークがあります。
JavaだったらSpring、JSFなど一般的ですよね。(あえて、Strutsは出しません)
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冊
でした。
どうしたら流行るの?
流行らせるということは実は簡単なのではないかと思っています。
なぜなら、流行っていない理由が覆りさえすれば良いのだから。
ということで、流行る方法を考えると以下のようになります。
こればっかりは待つしか無い。予定では、来年の春頃にリリースとされています。
サーバーサイドのフレームワークを作るか、もしくは使用例を作っていくしか無いですね。
現状を一旦整理しましょう。
・サーバーサイド
今現在、KotlinにもWebフレームワークはあります。
wasabi、Kara、node.ktなど。
そのあたりはパトさんのスライドに詳しく書いてあります。
http://www.slideshare.net/chariderpato/kotlinweb
Spekというテスト用ライブラリもあります。
ただ、キラーフレームワークはこれだ!っていうのはなかなか。。。
とりあえずこれから全部使ってみます。はい。
個人的にはJavaのフレームワークで動かすのも良いかなとは思います。
Spring Bootとか。モデルケースさえ出来てしまえば良いと思うのです。
SinatraみたいなKotra的なのとか作ったら反応あるかもしれない。
・Android
意外とあります。
(というかKotlin言語自体がAndroidに対してのKiller Frameworkならぬ、
かの、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
認知度を上げるためにはアウトプットを増やす、情報を増やすしか無いので、 前後の内容と相関してきます。
コミュニティの発達も重要ですね。最近JJUG(Japan Java User Group)の
色々に参加させて頂いて感じています。
勉強会、ハンズオンなどもう少し活発にやっていかないとなぁと。(自分はどのポジションなのやら)
ということで、ぜひKotlinユーザーグループに参加してください!
入門サイトに関してはたろうさんのサイトがあるので、協力できることがあれば、
協力していこうと思います。
僕個人としてはその他、Tipsをアウトプットしてきたい。
あと、逆引きサイトをつくろうと思っています。アンオフィシャルですが。
本は、たろうさん期待してます!
まとめ
今回はKotlinの人気向上について、統計情報を元に分析、解決法の検討までを行いました。
結論としてはサーバーサイドフレームワークの充実、使用例の充実、情報の充実
などが今後の課題として取り組んでいかなければならない点だと思います。
突発的な人気というか、時代のメインストリームになってほしいとは僕は思っていません。
JVM言語としての選択肢として検討されるレベルでの基盤を構築していければ良いです。
そうすれば、みなさんの引き出しを増やす結果になると思っています。
2015年3月9日追記
宣言していたとおり、Kotlinの逆引きサイトを現在作成しています。
サイト名として「逆引きKotlin」というそのままの名前で公開していますので、
良かったら見てほしいなと思います笑
こちらからみれます
逆引きKotlin
これでKotlin人口増える一助になればなぁ、、、的な。
0 件のコメント:
コメントを投稿