/note/tech

Railsは技術的負債である

Railsを使うと、初速は早くなる。それは間違いないと思う。一方で、RailsはVierwからDBまで密結合したフレームワークなので、「段階的なアップグレード」とかがむずかしい。ヴァージョンをあげるときには一気にエイヤであげる必要が出てきがちである。さらに、プロダクトが巨大になってくると結局様々な工夫を凝らしてViewからDBまでの間を疎結合にしていくことになる。そうなってくると、「これRailsである意味あるんだっけ」となって、段階的なアップグレードのしにくさや気をぬくと密結合な設計になるという欠点が目立ってくる。

これは、まさに技術的負債そのものである。ここでわたしが「技術的負債」を「単なる悪いもの」として扱っているわけではないことに注意してほしい。Railsを使うというのは、そういう将来の負債を借り入れて、その借金を使って早くプロダクトを世の中に届けるという判断をしている、ということだ、ということを言っているのであって、「借金してでも早く出したい」という判断が合理的で正しい場合ってのは、腐るほどある。

ただ、Railsを選ぶときに、「今俺たちは借金をしているんだ」って思いながら選んでほしい。その感覚がないと、プロダクトが軌道にのったあとも借金を返すためのリソースを捻出しないまま、破綻したコードベースに消耗してプログラマがどんどん逃げて言って最後にはプロダクトが潰れて終わるので。

関連: