はじめに
2~3ヶ月前 「Railsは終わった」と言われる理由 という記事を読みました。
Railsが流行した要因とそれらの現状についてよく考察された記事ですが、
それでもなお私がRailsを使っている理由は健在だったので、ラーメン食って寝て忘れてました。
昨日
Railsの最新情報をチェックするためにGoogleで検索をかけると...
そこには あのPHPですら受けたことがないような仕打ちを受けるRails公式サイトの姿 がありました。
「Railsを今使っている理由を書かかなきゃ!」 そう使命感を感じた私はここまで記事を書き、ビール飲んで寝ました。
これが昨日のことです。
Railsは終わったのか?
Railsが登場した 平成中期 に比べウェブに高機能な仕組みが要求される 令和 においては、Railsでそれらの要求を満たすことが難しくなっています。
難しくなったと言うと語弊が生じるのでより厳密に表現すると、Node.js等を筆頭にブラウザ向けのアプリをより効率的に開発できる仕組みが整いつつあります。
ウェブの高機能化とその要求を満たす技術の登場により、Railsのチュートリアルでよく紹介されるような バックエンドからクライアントサイドまで一貫して作成する手法自体が終わったと感じています。
私も直近の業務数件ではRailsでWebページのレンダリングを行っていません。
(バックエンドをRails / フロントエンドにNuxt.js等)
Railsの真価
バックエンドからクライアントサイドまで一貫して作るイメージが強いRailsですが、Railsの真価とはそこにないと考えています。
- ActiveRecord
- 強力なDBスキーマ管理とORMの提供
- ActiveModel
- 値の検証などデータをモデル化する基本的な機能の提供
- ActionMailer
- ActionViewを利用した保守性の高いメール送信機能の提供
- ActiveJob
- バックエンドを自由に選択可能な非同期処理機能の提供
- ActionController
- Rackを利用してバックエンドを自由に選択可能なHTTPリクエスト処理機能の提供
- ActionView
- HTMLに限定されないレンダリング機能の提供
- ActiveSupport
- WEBに最適化した言語拡張 / タイムゾーン / 多言語化対応 .. 等の提供
- RSpec/Capybara
- 強力なテストフレームワーク
どれもWeb開発に必要な基本的な機能です。
これらの機能を別々のパッケージで実現する場合
- パッケージの選択
- パッケージの動作検証
- パッケージの整合性確認(依存パッケージなど)
- パッケージのテスト手法の検討
- パッケージのバージョンアップ (2に戻る)
- パッケージのメンテナンスがされなくなったら1に戻ってコードを再実装
これだけの手間がパッケージの数だけかかります。
また、基本的な機能にもかかわらず、プロジェクトごとに利用するパッケージが異なると言う状態はエンジニアの生産性を低下させます。
Railsの真価は Web開発に必要な基本的機能が全て揃い、その機能全てがローカルで動作してテストを書く仕組みが存在すること にあると考えています。
銀の弾丸ではなくなった
それ一つでウェブの機能全てが完結する銀の弾丸のようなRailsは終わりました。
しかし、Web開発のための基本セット(フレームワーク)としてのRailsはまだ終わらないと思います。
俺達の戦いはこれからだ!!!!!
おわりに
RubyもRailsも好きなので紹介したいポイントは他にもたくさんありますが一番伝えたいことだけ書きました。