ウォンテッドリー株式会社 / Visit プロダクトチーム Webエンジニア
Object-Oriented Abstraction of Redis Sorted Set
Redis のデータ型の一つである Sorted Set を Ruby から扱う際にオブジェクト指向プログラミングに合わせた抽象化を行うと良いという提案です。 Redis の Sorted Set は Web サービスのランキング表示などで典型的に使われますが、集合演算を活用することで比較的高度な機能も実現することができます。Wantedly Visit の募集を一覧・検索する画面(https://www.wantedly.com/projects)も Redis の Sorted Set をキャッシュと演算の両方に使うことで高速な表示・絞り込みを実現しています。 しかし、Redis のインターフェイスは命令であり Redis を呼び出すコードは手続き的になるため、普通に利用すると非常に冗長になります。ActiveRecord (O/R Mapper) がリレーショナル・モデルとオブジェクト指向の間のミスマッチを解消しているように、RedBlocks というライブラリを使うことで Ruby で自然に取り扱えるようにしました。 Ruby はそれ自体は高速な処理系を持ちませんが、高速な動作が必要な箇所は高速なシステムを抽象化して取り扱うことで活用の幅が広がります。そういった方向性の提案として、Reject Kaigi の場を借りて発表させてもらいました。