・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]
(http://irclog.whitequark.org/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言語のコミュニテイやミーテイングが、行われるようになってきました。
We're proud for everything the #CrystalLang community achieved this year. Here's to another 365 days of coding! #HappyNewYear pic.twitter.com/p6tJvrHswl
— Crystal Language (@CrystalLanguage) 2016年12月31日
・ユーザからコンパイラに切り込む人があらわれてきました!
Slideshare: @CrystalLanguage internals Part1 !https://t.co/jJfq9H40Ne
— NobSuzumura (@yahhonob) 2017年1月5日
・アメリカで、ユーザを拡大する試みが、MANAS社主催で始まりました。
ニューヨークと、サンフランシスコで実施されます
Don't forget to RSVP if you're interested in a #NYC #CrystalLang Meetup https://t.co/bakr3FmTjk
— Crystal Language (@CrystalLanguage) 2017年1月7日
開発から4年、Ruby ライクなコンパイル型新言語Crystal 、コミュニテイが広がりとうとうこの段階に来ました. https://t.co/AZ9C5naCEP
— NobSuzumura (@yahhonob) 2017年1月9日
・Google TechTalk を利用したMANAS社のプレゼンも始まり、Manas社がCrystal言語でのビジネスを立ち上げたいという熱意が伝わってきます。
Watch our #Google Tech Talks presentation by @bcardiff at #GoogleNY https://t.co/WcPoUrxB2f #CrystalLang
— Crystal Language (@CrystalLanguage) 2017年2月2日
・TensorFlow を Crystal言語から扱える取り組みも始まりました
Learning Tensorflow with @CrystalLanguage 😍👍🏻 https://t.co/Qf9mXWGYiw #crystallang
— Serdar Dogruyol セド (@sdogruyol) 2017年3月5日
・Artificial Neural Network などへも対応が広がり、こういった分野が得意分野の一つである認識が広がりました。
bararchy/crystal-fann: FANN (Fast Artifical Neural Network) binding in Crystal: https://t.co/lA1mpLzTXS
— at_grandpa@技術書典4 く-12 (@at_grandpa) 2017年7月3日
The nice folks at @NeuraLegion are using #CrystalInProduction - read their experience at #crystalBlog!https://t.co/OPFXleKeVH
— Crystal Language (@CrystalLanguage) 2017年9月25日
SHAInet - pure crystal neural network https://t.co/kaM0TDpYoi #crystallang
— Crystal [ANN] (@crystallang_ann) 2017年12月24日
We just added ADAM and all usual activation functions to SHAInet.
— NeuraLegion (@NeuraLegion) 2017年12月26日
This means that right now we are starting to work on advanced features like CNN,RNN,GNG,SOM#AI #NeuralNetworks #DeepLearning #MachineLearning https://t.co/XCQcmamTOr
・ゲノム解析分野での応用も出てきました
Crystal being used for genome analysis to diagnoses rare diseases at @diploidgenomics 🎉#crystallang @CrystalLanguage pic..com/W1sABrXC6y
— Serdar Dogruyol セド (@sdogruyol) 2017年7月14日
New #crystalInProduction story: @diploidgenomics uses #crystallang for genome analysis - by Ivo Balbaerthttps://t.co/jUxDCFSAtJ
— Crystal Language (@CrystalLanguage) 2017年10月27日
・Cryastal言語に関連して仕事をしたいという機会もこのころより拡大してきました。
Kemal の作者である Serder氏のその後ですが、2018年4月 実現しました。 RainForesta社へ参加し、そこから Crystal言語のCoreTeam 活動への参加が実現しました。
He's a great developer and looking for full time Crystal positions 👍🏻
— Serdar Dogruyol セド (@sdogruyol) 2017年3月14日
We definitely need a job board for @CrystalLanguage jobs 💯 https://t.co/Zv4R7IdyL7
It's official! I've joined the awesome @CrystalLanguage team 😊
— Serdar Dogruyol セド (@sdogruyol) 2018年4月12日
I feel so honored to be a part of such an incredible project 😇
A million thanks to everyone who made Crystal possible 🙏 pic.twitter.com/DJHMcDDFn1
Today is a very special day in my life 😊
— Serdar Dogruyol セド (@sdogruyol) 2018年3月22日
It's my 29th birthday 🎉
I am officially starting to work remotely at @rainforestqa as a Senior Backend Engineer 🌎💯
・Taichiro Suzuki(TBRAND)さんは、高速な webフレームワーク ROUTERを開発しました。
This is why we should use Crystal #rails #crystallang @CrystalLanguage #kemalcr @crystalkemal https://t.co/364eNBRaLI pic.twitter.com/H6BOlU3lTP
— tbrand (Taichiro Suzuki) (@taichiro_dev) 2017年3月28日
・Webによる Q&Aの機会などが広がります。これら着実な活動は、熱心なユーザ発掘につながっていきます。
If you missed yesterday's Q&A session with the #CrystalLang core team you can now watch it on Youtube! https://t.co/GxqZBqfqhj
— Crystal Language (@CrystalLanguage) 2017年6月1日
🚨 The @CrystalLanguage💎 team is doing an AMA right now! Ever wonder what it takes to create a programming language? https://t.co/DjouTxAagl
— The Practical Dev (@ThePracticalDev) 2017年9月6日
・日本では技術書典で Crystal Book#2 が完売となりました!
完売ありがとうございました!後日、DL版開始予定です! #技術書典 pic.twitter.com/5iWqzsT2s6
— at_grandpa@技術書典4 く-12 (@at_grandpa) 2017年4月9日
・@make_now_justさんは、以前からCrystal コミュニテイで The king of Formatter of the Year と呼ばれてきましたが、パッチモンスターとも呼ばれたりします。
Crystalのパッチモンスターは@make_now_just さんです!@CrystalLanguage //cc @yukihiro_matz @n0kada @_ko1 #ruby #crystallang
— Serdar Dogruyol セド (@sdogruyol) 2017年5月31日
・@at_grandpa さんが Matzさんと並んでCrystal言語をアピールされています
crystalについてお話させていただきます! https://t.co/d3zFRzf76F
— at_grandpa@技術書典4 く-12 (@at_grandpa) 2017年6月9日
・straight-shoota さんは2016年後半から参加され、熱心に取り組まれています。
応援したいissue --- A Tour of Crystal · Issue #4462 · crystal-lang/crystal: https://t.co/mgzdojOzcN
— at_grandpa@技術書典4 く-12 (@at_grandpa) 2017年6月13日
・Crystal CODECAMP SFがMANAS社主催で初めて行われました。かなり突っ込んだ内容を、かつコミュニテイメンバーが集まって討議するという意味で、意義深い出来事でした。
Travelling from Argentina, @waj Crystal co-founder & @ggiraldez, Core Team.
— Crystal Language (@CrystalLanguage) 2017年5月6日
From Turkey @sdogruyol, @crystalkemal creator.#CrystalCodeCamp pic.twitter.com/Gs4qvZSxNG
Proud sponsors of the #CrystalCodeCamp! pic.twitter.com/GaHmZYxuPP
— Manas (@manastech) 2017年5月11日
#CrystalCodeCamp classes are now starting. Happy Crystalling! pic.twitter.com/Wn5ExL9s8u
— Crystal Language (@CrystalLanguage) 2017年5月11日
Oh and btw go find them on #Github! #CrystalCodeCamp pic.twitter.com/eRjXhd6dYZ
— Crystal Language (@CrystalLanguage) 2017年5月13日
Good news! You can now download the #CrystalCodeCamp slides! https://t.co/vdPlw3NXYD #CrystalLang
— Crystal Language (@CrystalLanguage) 2017年5月19日
・このころ、舞台裏では逆にCrystal言語の開発普及で、暗雲が立ち込めていたと、いえます。
上記のManas社の行動がビジネス的に成立していたかというと、厳しい現実が突き付けられます。春ごろより、Crystal言語開発に向けられるCoreTeamのパワーが明らかに減り、コミットやプルリク、バグ発見、対策のペースが急激に落ち、コミュニテイから懸念が指摘され始めました。従来見せてきた驚異的なコミット、プルリク、バグ対策は、ほぼ作者のAryさんのスーパーマン的行動によってなされてきました。Crystal言語は近年の新言語では驚異的と思える、認知度の向上/普及の速さが、GitHub の存在とも重なって、進んできました。MANAS社で割ける時間とコミュニテイからの期待の大きさからのプレッシャーも大きかったと、Aryさんが、のちに述べられています。この経緯詳細は、ドラマ仕立てで見た、Crystal 言語の2017年をご覧ください。
結果として、Crystal言語の作者 AryさんはManas社を去り、のちに提携企業から CoreTeamではない参加の形で、半年後カムバックされてこられ、現在に至ります。2017年Crystal言語開発はそれ以前のAryさんの驚異的な行動ペースと比べると、明らかに半年停滞しましたが、コミュニテイや賛同し支援する企業は着実に拡大発展しています。結果足元を見直す良い年であった、と歴史にとどめる年となると思います。
Crysatal言語のような新技術分野では、関心をもって、取り組む時間のある学生さんが世界中にはいます。当初から参加している@Jhassさんをはじめユニークなスキルを持った人が、若い時期から集まってきているのもCrystal言語コミュニテイの面白いところでもあります。
京都でPerlを書いてるのでCrystalとか書いてる余裕ないです
— さっき作った (@make_now_just) 2017年8月16日
はいプロ 世界一Crystalが上手 Crystal界のtourist Issueの終焉を告げる者 実質コミッター コントリビュートするために生まれてきた男 https://t.co/vBj4WBAD5S
— さっき作った (@make_now_just) 2017年8月23日
1年で150個のPull Requestを出した話。あるいはOSSに継続的にコントリビュートするということについて [Ruby] on @Qiita https://t.co/NkQTVKcEBI
— さっき作った (@make_now_just) 2017年12月25日
・RX14さんも学生です。windowsへのポーテイングが年末ですが、Rx14さんの取り組みで見えてきました。2018年前半は、ちょっと一休みになっています..
WIP usable Windows port for Crystal https://t.co/YxhA9wfU5B by awesome @RX14_chibi 😍 #crystallang @CrystalLanguage
— Serdar Dogruyol セド (@sdogruyol) 2017年12月1日
・8月には、なんと TiobeINdexでCryst al言語がRustを抜いてプログラム言語利用ランキング32位に入るという神風が吹きました。これはのちに検索条件の間違いであるということで50位以下に戻りましたが、Crystalコミュニテイの知名度がぐんと上がったことは間違いありません!
Crystal is getting stronger and going up on TIOBE index https://t.co/RK60MwzF74 💪🚀
— Serdar Dogruyol セド (@sdogruyol) 2017年8月6日
Big jump from 60 to 32 🎉@CrystalLanguage #crystallang
・技術書典でのCrystalの本は#3になりました
え-10です!!!よろしくお願いします! pic.twitter.com/XIXkFN2Arz
— とびゃ (@TobiasGSmollett) 2017年10月22日
crystal-jp設営終わりました。Crystalの本その3を用意しています。
— さっき作った (@make_now_just) 2017年12月29日
キ-19aでお待ちしてます pic.twitter.com/TMGbG8AVij
・RX14さんがwindowsへのポーテイングを進められ、2018年が期待できる年になりそうです
Finally had some time to try out WIP Windows support for Crystal.
— Serdar Dogruyol セド (@sdogruyol) 2018年1月3日
Successfully cross- compiled a "hello world" program on Arch Linux and ran it on a Windows 10 machine 👍✅@CrystalLanguage #crystallang pic.twitter.com/aU7rPIiumX
About 35% of the @CrystalLanguage stdlib spec quite now runs on windows! pic.twitter.com/Z9sQVVhksB
— RX14 (Chris Hobbs) (@RX14_chibi) 2018年1月4日
・Crystal言語開発のこの1年をコミットからどうだったかをまとめたblogです
"This is not a new year's resolution" - read the latest #crystalLang blogposthttps://t.co/vR1LvxlkTf
— Crystal Language (@CrystalLanguage) 2017年12月19日
・こちらも2017年のまとめです
Top 30 shards created in 2017 https://t.co/T7MKnzbWvP by @veelenga #crystallang
— Crystal [ANN] (@crystallang_ann) 2017年12月25日
・頼もしい応援記事です
Why Crystal is the most promising programming language of 2018
I just published “Why Crystal is the most promising programming language of 2018” https://t.co/yFDam2YgCt
— Sam Johnson (@sam0x17) 2018年1月24日
#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