Diary

@ssig33

28 Dec 2020 Mon 12:12

それでも Rails のアップデートをする

Rails 5.0 あたりから DHH らが考える Web 開発と自分の手元にあるソフトウェアの設計の乖離が激しくなっていると感じていて、まあはっきり言えば Rails のアップデートでうれしい、と感じる機会は減っている。

Web アプリケーションフレームワークは Rails のようなフルスタックなものより Sinatra/express 風のシンプルな DSL 風のものが好まれるようになっていて、歴史に Rails が残した影響が何かといえば「assets pipeline を導入したことにより、 Web フロントエンドを別言語から JS/CSS にコンパイルするという習慣を広く普及させた」ということになるのではないか、と感じている(GWT とかまあいろいろあったけど Rails 3.1 によって決定的にこういう考え方は普及したでしょう)。

Action Cable も Webpacker も Active Storage も Action Mailbox もつかってないし、 Action Text は正気の沙汰とは思えないし、 Rails が公式にサポートするずっと前からテストは並列化していた。データベース単位のコネクション切り替えを使うぐらいならリードオンリーなスレーブにつなぐマイクロサービスを導入するほうが楽だなと感じるしそのようにしている。

それでも Rails のアップデートには追従し続けていて、僕がメンテしている Web アプリケーションはだいたいどれも Rails 6.1 で全部テストが通っていて、年明けには多分 Rails 6.1 版をリリースする。

なんでこんなことをしているか、ということなのだけど。 Rails は目玉の機能以外にも当然いろいろと改善が行われていて、まあはっきりと言えばそれで互換性が壊れていく。互換性が壊れると手元のアプリも壊れることになるんだけど、それはだいたい「とても悪い書き方をしていて、意味不明なエッジケースを踏んでいるところ」が壊れる。

メンテナ達は互換性を壊したくて壊してるわけじゃないので、こういうものについて報告すればまあ Rails 側が直るんだけど、鉱山のカナリアのようなもの(?)で、 Rails のアップデートに最速についていくと悪いコードがそのタイミングで明らかになる。

そういうものを直すタイミングとして結構いいきっかけになるので Rails のアップデートには追従し続けている。しかし、まあ、その程度。