先日行われた Rails Developers Meetup 2019で発表された、Ruby on Railsの正体と向き合い方 が話題になっていたので、ひかくてき長くRuby on Railsを使ってきた私も、Ruby on Railsに付いて書きたいと思います。
私が最初に触れたRuby on Railsはバージョン 1.2 でした。その当時はJavaやPerlを使っていたので、ジェネレーターでひな形を作り、 データベース定義からジェネレーターがMVC(Mode, View, Controller)のコードやデータベース作成用のマイグレーションファイルも作られ、魔法のように手早くアプリが作れてしまうのに驚きました。
そして直後にある簡単なアプリで実際に使ってみました。ルールがフレームワークの中にあり、設定ファイルもごくわずかで、確かに Java+Strutsの10倍の生産性があると確信しました。またテストやマイグレーション(RDB定義の追加・変更)がフレームワークに内蔵されているのにも関心しました。
次の ボロ ライディング ショップのECサイト で本格的にRuby on Railsで使いました。開始時のRuby on Railsはバージョン 2.3 だったと思います、そこら10年に渡りこのサイトでは 3.X → 4.X とバージョンアップし、近々 5.2 に上げようと思っています。
ボロ ライディング ショップのECサイト の開発ではお客様はITに明るくないので、プロトタイプを作りながら進めました。プロトタイプ開発には生産性の高さが本当に生きてきます。プロトタイプを作りお客様と話しを進める事で見えてなかったお客さまのビジネスモデルが見えて来てたり、そうするとRDBのテーブルも変更になるわけですが、その際にマイグレーション機能がとてもありがたかったです。
私のイメージでは Ruby on Rails はバージョン 2.3 で完成していたと思います。現在でも View/Controllerはほぼそのままです。だだしModel(ActiveRecord)はバージョン3でAPI体系が現在のものに成り格段に使いやすくなったと思います。
ただし、バージョン 3では MVCのモジュールを入れ替え可能にする改造が行われました。その結果ERB以外のViewやActiveRecord以外もORMが使えるようになりましたが、フレームワークのコードが増え性能も落ちてサーバーのメモリー等を増強しないとサイトの性能が下がる問題に直面しました。ただし、ERB以外のViewを使っているプロジェクトは有りましたが、ActiveRecord以外のModelを使っているプロジェクトはごく僅かだったと思われます。
その後の バージョン 4 で性能面でのデグレードは改善されました。実は ボロ ライディング ショップでは、開発環境では 2 → 3 → 4 と上げて行きましたが。リリースされたサイトは 2 → 4 と上がっています。理由は上に書いた性能面でも問題があったからです。
しかし、この頃になるとクラウドサービスが使えるようになったので専用サーバーからクラウドへの移行も行い、性能面での厳しい要求はなくなりました。もちろん運用コストを考えるとフレームワークが軽い方が良いですが優先順位は下がったと思います。
私が主体的に関わったサイトはいずれも小規模なものだったので、本当に Ruby on Rails の恩恵を受けていたと思います。 ただし大きなRuby on Railsプロジェクトに参加してたときは、確かに アーキテクチャ的に色々な個所に綻びが生じていたものもありました。
Ruby on Railsの正体と向き合い方 でも触れていたように、 ECサイトのような比較的簡単なサイトには Ruby on Railsは非常に向いていると思います。スタートアップ企業が素早くサービスを完成し、高速に発展させて行くのには Ruby on Rails は現在でも最適なフレームワークだと思います。