この記事は Crystal Advent Calendar 2016 の 21 日目の記事です
こんにちは yahhonobです。
プログラムネタでないのですが、雑談記事を書きます。
東京Crystal勉強会 第1回で RuPyの流れでCrystalは生まれた! という LTをしました。
Ruby、Python のような読み書きしやすくノイズやセレモニーの少ないプログラム言語が好まれ、流れになっていくという現代の考えを、ヨーロッパが言ったRuPy という言葉を使わせてもらいました。
ことしは勉強会に参加できていませんが、MakenowJustさんの提案から Crystal-JP 有志で ”Crystalの本”を共同執筆し秋葉原 技術書店で 30部販売し、予想外の人気で3時間で売り切れ、急きょPDFダウンロード販売を開始しました。
さて、2016年のCrystal言語周辺を振り返って、これからどう期待できるのか、大胆に(?)来年を予想してみたいと思います。
GitHub からみたプログラミング言語の動向で GitHub Top3 Star 総数ランキングが35位にあることを書きました。 TIOBE Index では ”50位から100位の欄” 中に今年初めて現れています(86位)。
#まずRuPyの方向にある Elixirと Crystal言語を比較します。
現在 Elixirはポピュラーになった状況だとして、Crystal言語がこの段階になるのに どれくらいかかるか? ということです。
Git のStar数の変化を比べてみます、こちらがその比較グラフです。Githubには過去の履歴がすべて残っています。
立ち上がりは2年くらいの遅れがありますが、最近は8か月程度の遅れで急激に立ち上がっています! 2015年8月頃Star数が急激に上向きに変わっています。これは Matzさんが Crystal を英語で Tweetしたことが発端で、Hackernews でブレイク!話題爆発したことが認知度を上げた要因だと思います。
あと一年以内で、現在のElixirの状況に Star数から見れば、追いつきそうです。
とは言え、① Elixir は2014年に Ver1.0が公開され、2年がたっている。② Star100+ のリポジトリ数が Elixir が196、Crystal が15と未だ少ない、③ElixirはElixirConf が年に世界数か所で実施される状況になっているが、Crystalは来年2017年に初めて開催されるくらいの広がり、などの状況から、早めに見て 来年いっぱいと予想する Crystal Ver1.0から 1年くらいかかりそうかなと感じます。
#Crystal Ver1.0 は 2017年に出現するのか?
2016 年末に Prarell 対応が顔を出すという期待がありました。あと1週間残すだけとなって、クリスマスプレゼントを期待しています!(2016/12/25)
今年は、夏までの Ver0.16 からVer0.18 でかなりロバストな言語に仕上がってきた、とコミュニテイの皆さん感じています。そのため、その後 StdLib へのプルリクが増加し、かなり安定に向かった改善の動きが加速したと感じます。一方で言語が準形式的になったことで、Ruby にとどまらない言語仕様の今までにない長いデイスカッションやプルリクが増加したのも 2016年後半の特徴でした。 さて2017年どのような方向に収束するのでしょうか? 2016年最後といえる Ver20.3 の特徴は、Bugfix から Enhancement要望が 50%を超える初めての状況になったのは注目できる変化です。 次にCross Platform 対応はどうなるのでしょうか? 後半の目玉のもう一つは、@Ary さんが Man of the Crystal of the Year と呼ぶ @Ysbaddaden さんがARM 向けCross Compile対応を提供したり、LLVM3.9 対応が織り込まれたことで、Win10や Mobile-Phone プラットフォームに近づいていることです。 個人的には Ver1.0 に早くなるより、いつまでもワクワクするような言語の発展が続き、夢を見させ続けてほしい気がします。Crystal言語は、コンパイルすれば1バイナリであり Dependencyの問題が少ないので、ここまでくれば、あまり Ver1.0 が出なくても浸透していく気もします。2017年内にはVer1.0相当にはなりそうな気配です。
#Rust と Crystal の Star数変化を比べてみます
こちらではほぼ2年の遅れで、Rust の状況を追っていますが、2年前の Rust の立ち上がり角度には、まだ追いついていません。
今年のトピックは、やはり6月のロバストな Ver 0.18 の発表で、発表の反応は、かつてない広がりを見せ、Crystal 言語の開発とコミュニテイの広がりが新たな段階へと移行したことを示しました。
これに始まり、8月 @sdogruyolさんが @CODESHIPでAn Introduction to Crystal: Fast as C, Slick as Rubyを掲載し、その@sdogruyolさんの記事が Hacker Newsで取り上げられ、24時間で 400POSTを超える話題になりました。 Crystal を事例に、Cに置き代わる Modern 言語はどうあるべきか?という広い話題作りにできたことが要因で、Go, Rust, Swift 共々の議論の中でも耐えれるほどに Crystal 言語が成長し、認められてきました。
さらに今年は、Matzさんが RubyConf2016 のキーノートで "I like Crystal!" と Crystal 言語に触れるくらい、Rubyコミュニテイで認知度が上がっています。 また直近の出来事で、Hacker News で今年2度目で再び盛り上がっています。注目と認知度が上がっている表れと思います。
#総合的に考えて、来年中(2017)に Ver 1.0、その後2年以内で現在の Rustくらいの認知度とポピュラリテイになる!と期待してよいのではないかと、妄想しています。
#最後に Rust、Elixir、Crystal の Star数上昇度合の履歴比較です。
明日は、@kousuketanihata さんです!
#Crystal 関連リンク
これから Crystal を始める方へ: Crystal 日本語情報まとめ by Pine613 さん
Crystalの本がCrystal-JPからPDF出版されました!
売り上げはささやかですが、Bountysource Crystal 活動支援に寄付される予定です。
購入を考えられるのに以下の目次を参考にしてください
目次
第 1 章 Crystal 開発環境の構築
第 2 章 Ruby とは似て非なる Crystal
第 3 章 Metaprogramming Crystal Introduction
第 4 章 Crystal と Web
第 5 章 Crystal で Lisp 処理系を実装しよう
第 6 章 Crystal の開発過程とコミュニテイの盛り上がりを振り返ってみて
第 7 章 あとがき
#Crystal コミュニテイ
Crystal-JP
Crystal 情報交換用 Slack チーム Crystal-jp
-> 登録:Crystal-jp.slack.com 日本語で Crystal の情報交換を行うチャットルームです。ご自由にお入りください
[Gitter Crystal 情報交換用 Crystal-jp]
(https://gitter.im/crystal-jp/issues)
[Crystalに関する意見や質問、議論などをする場所] (https://github.com/crystal-jp/issues)