去年度作ったgem

Railsでサービスを開発する中で感じたストレスを解決するためgemを作ってはプロダクトに取り込むってことをいくつかやったのでその紹介。

acb

ActiveRecordのインターフェイスからデータのCSVをシームレスに発行してくれるgem。

複雑なデータの組み合わせだと諦めて生SQLを書いてしまった結果、テーブルを何十個もJoinしなきゃいけなくクエリが激重みたいなことを解決したくて作った。 Ruby側でデータの索引方法を定義でき、ActiveRecordのpreloadを使って読み込みのクエリを単純化することでDB側の負荷が減り結構な速度で出力できるようになった。

rubocop-grape

grapeというAPIを簡単に作成できるgemがある。 こってこてのDSLに対して日本語ドキュメントが充実してないため、フォーマットがぐちゃぐちゃだったのを解決したくて作った。

詳しくはこちら

actionslack

アプリケーションからSlack通知を飛ばすのに、メッセージをcontrollerだったりmodelだったり至るところで組み立てており 難読化していたのでそれをまとめる目的で作成。

結果、見通しが良くなった。

おわり

実は今日リリースしたgemがある。 active_record_polylineというgemでGoogle Mapとかでよくみる移動経路を扱うPolylineという規格をActiveRecordで簡単に扱えるようにしてくれる。 位置情報をその都度単一のレコードとして記録してしまうと、レコード数が瀑速で増加してしまう。 そこで位置情報の配列を文字列にエンコーディングするPolylineという規格を使うことで一定期間の移動経路を保存できるようにした。 ただし、保存される情報にタイムスタンプは含まれないので単純に経路しか分からず、「この時間にここにいた」という情報は 別途控えておく必要がある。