圧倒亭グランパのブログ

30年後の自分にもわかるように書くブログ

Rubyアソシエーションのイベントで、Crystal言語について発表しました

以下のイベントにて、Crystal言語について発表しました。

rubyassociation.doorkeeper.jp

 

タイトルは 「Crystalのこれまでの歩みと v1.0 に向けたロードマップ」 です。

 

 

Matzさんの発表の後ということですごく緊張しましたが、Crystalについて話す機会をいただき、こちらも大変勉強になりました。主催者の方、会場をご提供いただいた株式会社クラウドワークスさん、そのほか関係者の皆様、いろいろとありがとうございました。

以下、このイベントを通していろんな方と話したこと、思ったことをメモします。

 

Ruby3の型チェックについての構想

  • 書きやすさ重視
  • 型は書きたくない、考えたくない
  • 全てをチェックしようとはせず、推測できるところだけする
    • わからないところはスルー、というアプローチ
    • 検知できるエラーはある
    • これは書きやすさ重視のRubyらしいと思った
  • 確かにCrystalを書いていると [] of String とか {} of String => String とか @hoge : Array(String) とかが至る所で出てくるので、その分「書きやすさ」は犠牲になっている気がする
    • 代わりに得ているのが、厳密に近い型チェック
  • 型チェックについてCrystalとRuby3の住み分けはどうなるのかなと思っていたが、これを聞いてハッキリわかった気がする
  • Rubyは本当に「人」に寄り添っているんだなと思った

 

言語の成長について

  • 「Crystalの主戦場がいまいちハッキリしない。『Goでいいじゃん!』に対して何も言えない。」という話をMatzさんとしたとき、「Rubyも『Pythonでいいじゃん!』と言われたよ。10年くらい。」という話を聞いて、なるほどーと思った
    • そのトンネルを抜けたきっかけが、RailsとGem
    • やはり何かキラーアプリ・ライブラリが言語の爆発的な成長のきっかけになるんだなと思った
    • 「『Goでいいじゃん!』に対して何も言えない。」というのは、自分がまだCrystalについて深く理解していないという側面ももちろんある
  • では、GoやSwift, Rust, Kotlinなどはそういった「下積み時代」的なものはなく、短期間で一気に普及した印象があるが、それはなぜか
    • やはりバックに大きな企業がいるのはでかい
    • 安心感が違う。今後も使われ続けるだろうという安心感が大きい
    • このように大きな企業がバックにある言語は、いち開発者から発足した言語とはかなり異なる成長曲線になるよね
  • Crystalにもやはりキラーアプリやキラーライブラリがほしい
    • 大きなところが採用し、強力な採用事例ができるにはどうしたらいいか
    • やはりキラーアプリやキラーライブラリが必要かなと
    • Crystalの特徴を活かしたアプリ/ライブラリに期待
      • C Binding ?
        • 素晴らしいCのライブラリのAPIがあるが、そこを活用するのは現状なかなか敷居が高いのではないか(個人の感想です)
        • そこの架け橋になるのであれば、Crystalらしいライブラリができてくるのではないか
      • Macros ?
        • まだ使いこなせていないが、もしかしたら強力な黒魔術ですごいライブラリができるかもしれない
      • etc… ?
    • その他、個人的には Parallelism の性能と安定性が鍵だと思う
      • ここで突出できれば、「Crystalの得意分野」ができてくるのではないか
      • Rubyほどではないが)書きやすさに加え、パフォーマンスもピカイチ、となると、普及のきっかけになると思う

 

Crystalの普及具合について

  • 予想通り、触ったことのある方は5%いかないくらいだった
  • 今回の発表で興味を持っていただけたら嬉しい
  • いろいろ話して改めて思ったが、「ライブラリを開発したい!」や「言語実装に自分の爪痕を残したい!」という人にとっては、今はブルーオーシャンだと思う
    • 「こんなライブラリを作りたいなーと思っても、Rubyには既にあるし。。。」というのは、モチベーション下がるよね、という話をした
    • 現Crystalでは「RubyにあってCrystalには無いもの」がたくさんあるので、チャンスだと思う
    • 「この機能ないの?不採用!」ではなく「あれ?この機能ないのか。つくるかー」という流れに乗ろう(まさに自分がそう)

 

松江市OSSにかける情熱がすごい

  • Rubyアソシエーションの方々といろいろお話した
  • 松江市の実情をいろいろお聞きした
  • 行政がこれだけOSSに力を入れているのはすごい
  • 自分の業界の人たちは何かと都心部に集まりがちだが、このように力を入れているところもある、ということを具体的にお聞き出来たのは良かった
  • そういった情報は、日々働いている中で都心部の膨大な情報に埋もれがちだなとも思った(自分の情報収集能力の問題もあるけど)
  • 周辺情報を調べてみようと思った

 

とりあえずは以上です。

 

今回、イベントに参加できて本当に良かったです。Rubyもさらに好きになりましたし、Crystalもさらに好きになりました。というか、「プログラミング言語」そのものがさらに好きになりました。なので、「Crystalは好きで普及して欲しいけど、そのために他の言語をdisる」というのは自分の考えとは全くマッチしない、ということもハッキリとわかりました。正直、RubyとCrystalを並べた時、このあたりの心情があいまいでモヤッとしていたのですが、今回の経験で、RubyとCrystalは比較するものではないし、それぞれに良さがあるし、それぞれ素晴らしいプログラミング言語だなと思いました。これからもどんどん書きまくっていこうと思います。

 

今度は「OSC(オープンソースカンファレンス)のLTとかどう?」という話題もあったので、どこかでまたCrystalの話をしてみたいですね。それまでに、コンパイラあたりは読んでおきたいと思っています。

Happy Crystalling 🎉