Java
Ruby
Python
Go
crystal

Crystal 言語の 2017年を振り返ってみて

・Crystal 言語の 2015年とそれまでの生い立ちを振り返ってみて
・Crystal 言語の 2016年を振り返ってみて
・Crystal 言語周辺の 2017年は?(妄想)
・ドラマ仕立てで見た、Crystal 言語の2017年の継続として書きました。

Crystalプログラミング言語 (日本語Crystal言語)の特徴は、"Fast as C, Slick as Ruby" です。
Crystalプログラム言語は、私が長年待ち焦がれていた言語です。
それは多くの方が同様に感じていると信じています。
振り返ってみるとプログラム言語は、ソフトウェア工学の初期から最も基本的で進展を支える技術の一つとして、多くの企業、研究機関が取り組んできました。したがって、いまさらまた新しい言語?と感じられる方も多い分野だと感じられるかもしれません。一方でプログラム言語は、実際100種どころか多種多様多岐にわたり存在します。いまもまた新言語提案が、活発に続いているのも一面です。
いったいなにが、求められ何が不足しているのでしょうか?

まず時代の変化は何でしょうか? 
それはシリコン革命です。端的に言うと、30年で100万倍の、ある意味破壊的変化がシリコン革命の実態です。
今もシリコン革命が続いています。100万倍高性能低コストになったマイコンを利用するソフトウェアもまさに100万倍大規模になりました。そしてその開発コストは競争のため上昇しませんでした。極端に言うと100万倍効率的、または付加価値を付けるソフトウェア開発がもとめられてきました。
ソフトウェア開発の効率化の極致はソフトウェアを書かないこと、です。
ライブラリ化やオープンソースでの再利用や、高度な概念を複数行ではなく1行で書く抽象化をおこなうことが、時代とともにますます要求され盛んになりました。プログラム言語には、その時代の変化、高度化への対応要求はこれからもシリコン革命が続く限り永遠に続きます。

話が、逸れてきましたが、プログラム言語に期待要求される言葉があります。
Less Noise, Less Ceremony, Less Magic spelling
Easy to Learn, Easy to Read, Easy to Think, Easy to Communicate, Easy to ReUse,
Easy to make EcoSystem, Easy to make SelfEnergizing, Easy to make SelfHosting, Easy to make ScaleUp

つまり
クリーンで、より抽象記述拡張していける、将来へのスケーラビリテイを持った言語 ということになります。
Crystal言語は、その可能性を秘めた、原石の一つではないでしょうか?

本題に入ります。

まず、2016年以前の生い立ちを振り返ります。

Crystal言語 開発の歴史は、
2016年4月に開発元の アルゼンチンにあるManastech社初めての Blog The story behind #CrystalLang 掲載により、詳細に明らかにされました。
2011年6月 Ary Borenszweig さんの考案で始まり、その後主として Juan Wajnerman さん、 Brian J. Cardiff さんが加わり、2012年9月 GitHub で公開され、ご存知のようなプロジェクトに発展しました。
2013年11月 当初Rubyで開発されてきましたが、Rubyでのコンパイラ記述からCrystal言語で記述のセルフホストがここで立ち上がりました。
2014年6月 Ver 0.1 がリリースされ、このあたりから本格的にグローバルに関心が高まっていきます。
2014年10月 Twitter #Crystallang 発足
2015年3月 Jhassさん Play.crystal-Lang.org を公開、ここからWeb での簡単トライやデイスカッション(例 IRC CHAT #crystal-lang)で対象コードを共有しやすくなりました。
   またysbaddadenさんが Crystalshards でGitライブラリ初公開(自動検索)登録はこの時点約 50 でしたが、これらは現在まで発展の基礎になっています。
このころRubyのパパ Matzさんが、盛んにCrysyal言語をTwitterで紹介し、火付け役となりました。これらの経緯から、のちにMatz さんは Crystal言語の Grandpa と呼ばれます。
2015年6月 RosylillyさんがPine613さんと 日本での勉強会など立ち上げを提案、日本での認知が広がりました。
2015年12月 「20年目のRubyの真実」インタビューで 笹田さん、Matzさんが Crystalに言及、ここからRuby3*3の可能性が広がったともいえます。UnionType の概念と実装はCrystal言語が初めてで、これが2017年現在でも唯一で、ユニークでかつProof of Conceptの実証が進展しています。
この2016年ころから、プロダクション利用の事例が報告されるようになりました。コンパイラであることから、Ver1.0以前にもかかわらずワンバイナリーのメリットで、ライブラリとの依存関係が少ないことがプロダクション利用メリットとして出ています。
またアルファ版にもかかわらず、かなりコンパイラやライブラリの信頼度が高いと見られている理由に、①セルフホストでコンパイラやライブラリ自体が言語仕様やライブラリの実績であること。②Ruby文化であるTDDが徹底されていること③そのTDDも変更ゴールを明確にしレビューし易い 10行程度の小さく明確な目的設定とその実装で運営され、テストSpecドリブンと、当然ながらDEvOP/CIがうまく回っていることが挙げられます。このポリシーは作者Aryさんが明確に述べ、ずっと実践されてきています。
2016年にはいってConcurrent機能をサポートするfiber実装が入りました。Go言語で採用され実績のあるCSP理論を踏襲しています。これもCrystal言語が多くの賛同を得る要因の一つです。大雑把に言ってシングルスレッドのバイナリはOS管理でCPUの30%程度負荷で稼働します。マルチスレッドにすることで、100%近くに上がり、3倍高速化できる事が報告されています。並列化機能はまだ実装されていません。並列化は難しくいかなる場合でもパフォーマンスが上がるわけではありません。難しいため2017年でも、Erlang/elixirだけが実装実績を持っています。並列化ではCPU負荷がおよそ300%程度に上がると報告されています(i5,i7 の場合)ので、まだ3倍以上高速化の可能性が残っています。Crystal言語はシステムレベルの記述ハンドリングもできることから、設計者が危険を承知の上で注意深く実装するのであれば、OSプロセスを並列に実行しさらにスループットを上げることは現在でもできます。現にTechenPowerベンチマークでは、80CPUコアをベースとしてC,C++らの並み居る強豪がカリカリチューニングをして競争している中で、Crysatal言語は、トップの50%に並ぶパフォーマンスを実現しています。

2016年にはさらに重要な決断が入りました。少し長くなりますが、意義を含め再掲します。
2016年5月 The new global type inference algorithm が実装された。コンパイル速度は期待されたほど大きく変化していないが、将来の高速コンパイラ実現とREPL実装への布石がされた。型宣言が一部記述が必要になることに対する賛否議論はあったが、結果を見ると Soft Typing的で大きな記述負担の変化はないことが報告され、また型推定が準形式的になることは、プログラム言語全体がよりロバストになり、2015 年にbug 指摘やenhance 要望がペンデイングされていた案件がスムーズに解決され、織り込まれた。また新規バグ指摘に対する発見と修正の速度が速くなった。さらに言語仕様がより準形式的に見えることで、新たな言語仕様拡張強化検討が飛躍的に早まった。これに関しては、Crystal言語の新機能追加の考え方が明らかに変わった。2015年まではRubyのバージョンアップでの機能追加の様子を見て織り込んでいこうという慎重トーンであって、コンカレント機能対応なども消極的(慎重)であったが、このコンパイラ構造改定以降は吹っ切れたように進化を織り込むようになりました。
2016年事項の最後ですが、この年 Crystal-JP 有志で”Crystalの本”秋葉原 技術書店で30部販売されました、これは3時間で売り切れて、急きょPDFダウンロード販売を開始!とその場で決まりました。

 さて 本題の Crystal 言語の 2017年です

最初に、2017年をおおまかにまとめると、Crystal言語という新言語がグローバルに認められていくための試練の年であった、といえます。新言語が普及浸透していくためにはビジネスとして成立拡大していく必要があります。その期待とある意味冷徹な現実があり、そしてコミュニテイがそれにどう立ち向かうのか、この記事を書いているのは2018年4月後半ですが、その時点で振り返って書いているからこそ言える表現だと思います。
さて2017年1月から振り返ってみます。

・New Year に合わせて Crystal new year resolutions for 2017: 1.0 がMANAS社Santiago Palladinoさんにより、公式blog公表されました。期待に応えようと Ver1.0 に向けた決意ともいえます。

 
・世界中で、20か所以上 Crystal言語のコミュニテイやミーテイングが、行われるようになってきました

 
・ユーザからコンパイラに切り込む人があらわれてきました!


 
・アメリカで、ユーザを拡大する試みが、MANAS社主催で始まりました。
ニューヨークと、サンフランシスコで実施されます


 
・Google TechTalk を利用したMANAS社のプレゼンも始まり、Manas社がCrystal言語でのビジネスを立ち上げたいという熱意が伝わってきます。


 
・TensorFlow を Crystal言語から扱える取り組みも始まりました


 
・Artificial Neural Network などへも対応が広がり、こういった分野が得意分野の一つである認識が広がりました。


 


 


 


 
・ゲノム解析分野での応用も出てきました


   


 

・Cryastal言語に関連して仕事をしたいという機会もこのころより拡大してきました。
 Kemal の作者である Serder氏のその後ですが、2018年4月 実現しました。 RainForesta社へ参加し、そこから Crystal言語のCoreTeam 活動への参加が実現しました。


 
・Taichiro Suzuki(TBRAND)さんは、高速な webフレームワーク ROUTERを開発しました。


 
・Webによる Q&Aの機会などが広がります。これら着実な活動は、熱心なユーザ発掘につながっていきます。


 


  
・日本では技術書店で Crystal Book#2 が完売となりました!


 
@make_now_justさんは、以前からCrystal コミュニテイで The king of Formatter of the Year と呼ばれてきましたが、パッチモンスターとも呼ばれたりします。


 
@at_grandpa さんが Matzさんと並んでCrystal言語をアピールされています


 
・straight-shoota さんは2016年後半から参加され、熱心に取り組まれています。


 
・Crystal CODECAMP SFがMANAS社主催で初めて行われました。かなり突っ込んだ内容を、かつコミュニテイメンバーが集まって討議するという意味で、意義深い出来事でした。


 


 


 


 


  
・このころ、舞台裏では逆にCrystal言語の開発普及で、暗雲が立ち込めていたと、いえます。
上記のManas社の行動がビジネス的に成立していたかというと、厳しい現実が突き付けられます。春ごろより、Crystal言語開発に向けられるCoreTeamのパワーが明らかに減り、コミットやプルリク、バグ発見、対策のペースが急激に落ち、コミュニテイから懸念が指摘され始めました。従来見せてきた驚異的なコミット、プルリク、バグ対策は、ほぼ作者のAryさんのスーパーマン的行動によってなされてきました。Crystal言語は近年の新言語では驚異的と思える、認知度の向上/普及の速さが、GitHub の存在とも重なって、進んできました。MANAS社で割ける時間とコミュニテイからの期待の大きさからのプレッシャーも大きかったと、Aryさんが、のちに述べられています。この経緯詳細は、ドラマ仕立てで見た、Crystal 言語の2017年をご覧ください。
結果として、Crystal言語の作者 AryさんはManas社を去り、のちに提携企業から CoreTeamではない参加の形で、半年後カムバックされてこられ、現在に至ります。2017年Crystal言語開発はそれ以前のAryさんの驚異的な行動ペースと比べると、明らかに半年停滞しましたが、コミュニテイや賛同し支援する企業は着実に拡大発展しています。結果足元を見直す良い年であった、と歴史にとどめる年となると思います。

Crysatal言語のような新技術分野では、関心をもって、取り組む時間のある学生さんが世界中にはいます。当初から参加している@Jhassさんをはじめユニークなスキルを持った人が、若い時期から集まってきているのもCrystal言語コミュニテイの面白いところでもあります。


 


 


 
・RX14さんも学生です。windowsへのポーテイングが年末ですが、Rx14さんの取り組みで見えてきました。2018年前半は、ちょっと一休みになっています..


  
・8月には、なんと TiobeINdexでCryst al言語がRustを抜いてプログラム言語利用ランキング32位に入るという神風が吹きました。これはのちに検索条件の間違いであるということで50位以下に戻りましたが、Crystalコミュニテイの知名度がぐんと上がったことは間違いありません! 

 
・技術書店でのCrystalの本は#3になりました


 


 
・RX14さんがwindowsへのポーテイングを進められ、2018年が期待できる年になりそうです 


 


 
・Crystal言語開発のこの1年をコミットからどうだったかをまとめたblogです


 
・こちらも2017年のまとめです


・頼もしい応援記事です
Why Crystal is the most promising programming language of 2018


2017年をまとめると

ジェットコースタのようにドラマティックな面もある年でした。
ちょっとタイムマシンに乗って半年先を見てみましょう。
2018年4月ちょっとまえより Kemalの作者Serdarさんがコアチームに参加。関係者の強力なタッグによりほんのひと月で、2017年にペンデイングになっていたほとんどのissueがmerge/closeされました! 昨年の停滞を挽回しています。またManas社 CEOの Wajiさんが久しぶりに ISSUE回答に顔を出し、待望されている並列実装をなんと3か月で実装する計画があると漏らしてしまいました。Crystal言語はManas社で開発言語に利用されています。Crystal言語ビジネスが持続可能な上向きになってきた模様です。 以上 タイムマシンから見えた未来でした。
2018年も、もっとドラマチックな1年のようですよ。

完了

で私は、技術書店#4で脱落しています。とほほ...

参考リンク

日本語 Code Examples
https://code-examples.net/ja/docs/crystal/index