RubyKaigiを通じて得た学びとは?【3社エンジニアLT】
はじめに登壇したのは、Sansan株式会社の石畑翔平氏だ。石畑氏はまず、RubyKaigi 2019の感想として「とにかくご飯がおいしかった」「ノベルティが豪華だった」「貴重な講演をたくさん聴けた」とユーモアを交えて語り、会場を和ませる。そのうえで、RubyKaigiの影響を受け、石畑氏が後日に使用したというRubyライブラリ「Ruby Curses」「Committee」について紹介していった。
「Ruby Curses」はTerminalの操作を行えるライブラリだ。石畑氏は「このライブラリを使って、文字色を自由に変えられるテキストエディタを作ろう」と考え、試しに実装してみたという。使用した感想として「『Ruby Curses』はカーソルの操作が非常に簡単。また、他にもWindowやFormの定義などのIFが用意されており、便利なライブラリ」と語った。
石畑氏は次に、Open APIでのAPIリクエスト・レスポンスの検証を可能にするライブラリ「Committee」の詳細について解説していく。利用における注意点として「『Committee』はOpenAPIのver 3.0.0にのみ対応していた」と話したところ、なんと会場に来ていたCommittee制作者のおおた氏がその場でコーディングを行い、OpenAPI3のパッチバージョンを上げても動くように変更。修正版をすぐにgit pushするという熱い展開となった。
次に登壇したのは、ラクスル株式会社の小林寛武氏。小林氏は、Samuel Williams氏のセッションである「Fibers Are the Right Solution」について振り返る。「Fibers Are the Right Solution」では、Rubyで書かれたWebアプリケーションのスケーラビリティ改善のためにFiberが有効であると解説されていた。
FiberはRuby1.9から登場した機能だ。「Thread(糸)よりも軽量」という意味でFiber(繊維)と名付けられている。コンピューターサイエンスに存在する「継続(プログラムのある時点において、処理されていない残りのプログラム)」という概念を変数として扱えるように実装された機能である。
Fiberを用いることで、非同期型のイベント駆動処理を実現してくれるアプリケーションサーバーが「Falcon」である。「Falcon」は1つのリクエストを軽量な1つのFiberとして処理し、ブロッキングが発生したら他のリクエストを処理することで、サーバー全体の処理プロセスを止めることなく動作してくれる。
小林氏はRubyKaigi後、「Falcon」を実際に使用してパフォーマンスを計測したとのこと。計測結果や使い勝手についての情報を会場の方々に共有していた。
株式会社ZOZOテクノロジーズの田島克哉氏は、RubyKaigiで同社のブースに展示した「ファッションチェックランキング」アプリについて発表した。ZOZOテクノロジーズではDroidKaigi 2019の際に「ファッションチェックアプリ」を作成した。これはデモアプリで、撮影されたファッションスナップがファッションコーディネートアプリ「WEAR」でどれだけ「いいね」されそうか採点するというものである。
「ファッションチェックランキング」アプリはその結果をTwitterに投稿できる仕様になっており、Lambda上で動くRubyスクリプトがTwitterから定期的に結果をクローリングしてデータをDynamo DBに格納する。そのデータを用いて、Web上にランキングを表示する作りになっている。
田島氏はRuby Kaigi 2019の最中に起きた、「ファッションチェックランキング」アプリに関する「裏話」について振り返っていく。イベント中に起きたトラブルやその対応策を、具体的な技術ノウハウとともに解説していた。
中でも、「Lambda上のRubyスクリプトは、CloudWatchEventをトリガーにすると1分間に1回までしか呼び出せない。より高頻度でスクリプトを叩くため、ALBのヘルスチェックをトリガーにしてLambdaをコールする方法を使った(※)」という裏話には、多くの参加者から驚きの声がこぼれた。
※ただし、田島氏曰く「ヘルスチェックは本来そういう用途で使うべきではないのでマネしないでください」とのこと。