読者です 読者をやめる 読者になる 読者になる

「Speee Coffee Meetup #01」を開催しました

f:id:mogmog2:20160809112942j:plain

Speee Coffee Meetup について

8月上旬にコーヒー好きエンジニアが集まってSpeeeのメイン言語であるRubyの勉強会をSpeee本社で開催しました。

美味しいコーヒーを味わいながらコーヒーと技術に関する勉強ができてしまう、 それが Speee Coffee Meetupです!

どんな勉強会なの?

今回はSpeeeにコーヒー豆を卸していただいているOBSCURA COFFEE ROASTERSをはじめ、 珈琲専門「猫廼舎」を開業してしまうほどコーヒーが好きなエンジニア荻野淳也氏、 コーヒーをこよなく愛する株式会社OneBox 取締役CTO 戸塚佑太氏、 Speee社内屈指のコーヒーエンジニア@nisshieeorgが、 スピーカーとしてコーヒー愛や知識の披露、技術LTをしました。

OBSCURA COFFEE ROASTERS、荻野淳也氏が淹れてくださった美味しいコーヒーを テイスティングしながらRubyの技術交流を深めました。

トークについて

弊社エンジニアの@nisshieeorgは「Rails × Elasticsearch」のテーマで登壇しました。

2部構成で、以下についてお話しました。

  • ruby/railsからelasticsearchを扱うgem群の紹介とおさらい
  • elasticsearchを使ったrailsアプリケーション開発フローをなんとかしたい話

ruby/railsからelasticsearchを扱うgem群の紹介とおさらい

こちらについてはスライドをご覧ください。

これからruby/railsを使ってelasticsearchにアクセスするアプリケーションを開発を始めようとされる方向けに、「どんなgemがあるか」「それぞれどのような役割を持っているか」を簡潔にまとめてあります。

elasticsearchを使ったrailsアプリケーション開発フローをなんとかしたい話

7月から、railsとelasticsearchを使ってアプリケーション開発をしており、その中で感じた課題についてお話しました。

そもそもrailsというフレームワークは以下の様な思想を持っています。

  • RDB、テストまで全てrails(及び関連gem)で面倒をみる
  • 実際にDBを動かして、DBを使いながらテストを動かしてしまう
    • mock等のテストテクニックを駆使するのではなく、本物を動かしてしまう

従って、App+DBという最もシンプルなアーキテクチャを持つアプリケーション開発においては、難しいことは極力排除された状態でスピーディーに動くソフトウェアを構築することができるというのが、railsの最大の強みなわけです。

しかし、elasticsearchも使うアプリケーション開発になると、状況が変わってきます。

「実現したい機能を実現する」という点においては、前半で列挙したようなgemを利用することにより、不自由さを感じること無く開発することが可能です。しかし、開発フローについては、現状、rails及びgemがRDBほどに面倒をみてくれる状況はまだできあがっていません。そのため、どうしてもrailsの特長である「圧倒的な初動の速さ」が損なわれてしまうのです。

最近では、elasticsearchをアプリケーションに組み込むという選択肢も一般的になってきたので、この課題を解決するようなgem等が整備されるとみんな幸せになれるはずだし、であれば僕らで作ってみたいという所信表明をさせてもらいました。

懇親会にて

何人か、「ウチもrails × elasticsearchでアプリケーション開発をしている」という方からお声がけいただきました。

(正直、今回の発表は、「みんなどう思ってんだろう?」「みんなどうしてるんだろう?」という疑問をぶつけてみたいという意図もあったので、非常に助かりました!)

やはりみなさん同じように、rails × elasticsearchアプリケーション開発のフローに関する課題を感じているようで、既にプロダクトとして運用をされているところでは、かなり頑張って自前の環境を用意されているようでした。特に、テスト時間が長くなる問題や、一部の操作はelasticsearchのAPIが非同期で処理を完了させることからテストが失敗する問題など、苦労されているそうです。

実際に汎用的なgemを作ろうと思ったらこれらの問題を解決しなければいけないので、非常に難しいチャレンジだとは思いますが、チャレンジする価値は高そうでした。