ガジェット通信 GetNews

見たことのないものを見に行こう

体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

実践的なテーマの発表も増えた「東京Crystal勉強会」第3回の様子をレポート!

東京 Crystal 勉強会 #3 in 恵比寿

この「東京 Crystal 勉強会」は、日本のCrystalユーザーコミュニティであるCrystal-JPが主催している勉強会です。まだ発足して1年足らずのコミュニティですが、定期的に勉強会を開催しており、今回は1月22日に開催されたその第3回の様子をレポートします。

前回の第2回勉強会もこちらの記事でレポートしているので、ぜひ合わせてご覧ください。

今回は、運営メンバーの草野 (rosylilly) さんが所属する恵比寿のクックパッド株式会社さんでの開催となりました。会場が有名なキッチン&ラウンジということで、「一度ここに来てみたかった」という方も多くいらっしゃったようです。

勉強会は、まず最初に2つのトークセッションがあって、それから3名の方によるLTという流れで進行しました。これからその内容を紹介していきます。

Crystalで実際のウェブサービスは作れるのか?

まずはCrystal-JP主催者でもあるpine613さんが登壇します。「Crystal で実際のウェブサービスは作れるのか?」というタイトルの発表で、実際にCrystalを使ってWebサービスを構築し、運用していることについて話をしてくれました。

最初の発表者ということもあり、実際に作ったWebサービスの話をする前に、簡単に現在のCrystalを取り巻く状況についての説明です。

コンパイラの全面的な書き直し

v1.0のリリースに向けて、Crystalのコンパイラを全面的に書き直すという大規模な改革が進められています。これは、「コンパイル速度が遅い」といったいくつかの問題を解決するためのものです。

現状のCrystalのコンパイラは、グローバルにソースコードを解析することで変数などの型を判別するというユニークなアプローチをとっており、それによって型を制約することなく柔軟なプログラミングができるようになっているのですが、一方で、そのことが原因でコンパイルに長い時間がかかったり、REPLの開発ができないという難点もありました。

そこで、型の明示的な制約をある程度プログラマーに課すことで、プログラムの効率的な解析を可能にし、上記の難点を解決するという方針で進められています。これは、v1.0では必ず実用的なプログラミング言語にしたい、という意志の現れだと感じます。

デファクトを目指したWAFの出現

WAF (Web Application Framework) にもデファクトスタンダードとなる可能性を秘めたフレームワークが登場してきたようです。KemalとFrostというのがそれで、それぞれSinatraとRuby on RailsにインスパイアされたWAFとなっています。

やはり、現代のプログラミング言語において、優れたWAFの存在は最も気になる点の1つとなるでしょう。CrystalはHTTPリクエストの処理で非常に良好なベンチマークを記録しているので、その実行速度を活かせるWAFの登場はとても嬉しいニュースだと思います。

これから紹介するWebサービスは、上記したKemalを利用して構築したそうです。また、もう一方のFrostについては、この次に登壇するetmnkさんが紹介してくれます。

依存ライブラリを可視化する「Shards Rocks」

pine613さんがCrystalで構築したのは「Shards Rocks」というWebサービスで、プロジェクトの依存ライブラリを解析して可視化するサービスです。

既存の類似サービスとしてGemnasiumなどがありますが、そのCrystal版と言えば、ご存知の方はどういったサービスなのかすぐに理解できるのではないでしょうか。

Shards Rocksのシステム構成

Shards Rocksのシステムは以下の構成で構築されているそうです。

また、これを実現するためのCrystalのライブラリとして、

WAF: Kemal
MySQL: crystal-mysql
Redis: crystal-redis

を利用しているとのことでした。

そして、実際にこれらの構成でサービスを開発した感想として以下をあげられていました。

Kemalは非常に高速で実用的なWAFである半面、まだORMやSessionのサポートがされていないため、構築できるサービスの幅には制限があること
crystal-mysqlはまだ開発途上でバグも多く、型安全でないなどの難点があること
crystal-redisは非常に完成度が高く、大きな問題もなく利用できること
バックグラウンドワーカーのライブラリがまだ存在しないこと (Shards RocksではGoで実装)

現状のCrystalの実用性は?

最後に、実際にWebサービスを構築した経験から、「現状のCrystalの実用性」についてのまとめがありました。その内容によると、Crystalの言語それ自体や、Shardsというパッケージ管理システムは安心して利用できるように改善されており、実運用の可能性が現実的に見えてきた段階であるとのことです。

1 2 3次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。

山寺宏一&高木渉で『ポプテピピック』

GetNews girl / GetNews boy