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

Rails 5.0.0.1からRails 5.0.1に上げた際のCSVアップロード速度検証

ExcelCSV アップロードというズッ友な組み合わせと、Rails 5.0.1 へのアップグレードについての話。

Rails 5.0.0.1 から Rails 5.0.1 へのアップグレードに際して、CSV アップロードでレコードを生成する処理が遅くなるという Issue が上がっている。

github.com

Issue に対しては kamipo さんによるパッチが既にマージされているが、これがブロッカーで Rails 5.0.2 (あるいは Rails 5.1.0) のリリース待ちというのもいつまでも Ruby 2.4.0 が使えないわけで、実際にどれくらい遅くなるものか検証を行なったのが、先々週かその前くらいのはなし。

結果としては確かに遅くはなるものの、CSV アップロードでレコードを生成する際には、青天井にレコードが生成されないようにアップロード上限数のバリデーションを仕込んでいるので、一度にアップロードする最大件数で何度か検証したところで大きな速度影響はなかった。このあたりの CSV アップロード上限数の話、例えば Pivotal Tracker なんかも一度の CSV アップロード上限数を設けていたと思う。

また、Issue としてはレコード数に比例して遅くなるもので、逆にいうとアップロード件数が小さければ影響も小さい。CSV アップロードというそもそもユーザーに対して多少レスポンスが遅くなるだろうという期待を持たせる UI / UX、かつ、それほど頻繁に使われる機能ではない (、かつ、それほど影響がないことが見れた上述の上限数がある) ということでモンキーパッチを充てたりもせずにアップグレードをしていた。

言い換えるとこの Issue の問題が現実の速度問題として浮上するようであれば、CSV アップロードまわりのバリデーション見直しなどをする機会かもしれない。もちろんアプリケーションの要件や性質によってはモンキーパッチという方針もあるとは思う。