Railsとの決別:プロローグ

#Tech

Railsとの決別:プロローグ

2010年からRuby on Railsを利用していた筆者は、初期開発の速さと手軽さには感銘を受けたものの、アプリケーションが大規模化するにつれて複雑性への対処が困難になることに気づいた。

Railsの「Convention over Configuration」が初期段階では有効だが、ビジネスの成長やチームの規模拡大に伴い、その限界が現れる。

多くのRails開発者は、ビジネスロジックと現実世界との整合性を失い、複雑さに対応できなくなる。

そこで筆者は、Domain-Driven Design(DDD)やイベント駆動型アプローチなど、より洗練された複雑性への対処法をArkencyで学ぶ決意をした。

Ruby on Rails(以下、Rails)は、その開発の容易さとエレガンスから、多くのスタートアップやWebサービスで長年利用されてきました。しかし、プロジェクトが成長し、規模が大きくなるにつれて、当初の「Railsのやり方(Rails-way)」が抱える限界が顕在化しているという指摘がなされています。本記事では、Railsが大規模開発で直面する課題と、その乗り越え方について解説します。

初期開発の加速と限界

Railsは「設定より規約(Convention over configuration)」をモットーとしており、初期段階での開発を劇的に加速させます。データベースからのデータの保存や検証といった基本的な作業をフレームワークが肩代わりしてくれるため、開発者はすぐにプロダクトを立ち上げることが可能です。しかし、プロジェクトが成長し、コードベースが複雑化すると、この初期の「Railsのガイド」が、複雑なレガシーシステムを扱う上では機能しなくなるという課題があります。

ビジネスと技術の乖離

大規模なRailsアプリケーションでは、技術的な実装とビジネス要件の間にズレが生じやすいことが指摘されています。例えば、「チャーン(解約率)」というビジネス用語を実装する際、マーケティング部門の定義と、開発者がコードに落とし込む際の具体的な実装(例:`User#cancelled_at`)が乖離することがあります。この「電話ゲーム」のような情報伝達のロスが、開発の遅延や手戻りの原因となっています。

抽象化の弊害と複雑性の増大

Railsの設計パターンや抽象化は、開発者がビジネスロジックから集中するための有効なツールです。しかし、それが過剰になると「断熱材」となり、コードが現実のビジネスプロセスから乖離してしまいます。また、開発者が経験を積むにつれて、命名規則やサービスオブジェクトの設計など、技術的な選択肢のバリエーションが増え、かえってシステム全体の複雑性を増大させている現状が問題視されています。

Rails-wayからの脱却の必要性

Railsのやり方は、初期の立ち上げフェーズでは非常に強力ですが、アプリが巨大化するにつれて、コードの振る舞いが現実世界のビジネスプロセスを反映しにくくなります。この複雑性の壁を乗り越えるためには、単にRailsの枠組みに留まるのではなく、より高度な設計思想(例:ドメイン駆動設計)を取り入れ、技術とビジネスの整合性を保つ視点への転換が必要だと提言されています。

原文の冒頭を表示(英語・3段落のみ)

In 2010, I started working with Ruby on Rails. Coming from the PHP environment, I was immediately amazed by the elegance of Ruby and how fast you can build working things with Rails. The framework took the burden of configuration off our shoulders, making it super easy and pleasant to save, validate, and pull data from the database.

16 years later, nothing really has changed. Ruby and Rails still evoke the same excitement about building a brand-new project. With the recent rise of AI, the time required to implement initial features has decreased dramatically.

The question is not whether Rails helps to build applications really fast. It helps, no doubt about it. The question is how to work with Rails as the business and team grow, with more and more features shipped every week and complexity rising.

※ 著作権に配慮し、引用は冒頭3段落までです。続きは元記事をご覧ください。

元記事を読む ↗