# Re:Railsをオワコン扱いする人が増えたのはなぜでしょう?
> [!warning] 完全に脊髄反射で書いてます。熟考したら見解が変わるかも 🙏
[Railsをオワコン扱いする人が増えたのはなぜでしょう?に対する末永 克 (Tsuyoshi Suenaga)さんの回答 - Quora](https://jp.quora.com/Rails%E3%82%92%E3%82%AA%E3%83%AF%E3%82%B3%E3%83%B3%E6%89%B1%E3%81%84%E3%81%99%E3%82%8B%E4%BA%BA%E3%81%8C%E5%A2%97%E3%81%88%E3%81%9F%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%97%E3%82%87%E3%81%86/answers/1477743766920906)
```
自分が今のRails(とRuby)が残念だと思った主な点は以下2つです。
1. Railsがリリースされた当時から長い時間が経過したにも関わらず、解決しようと取り組んでいる問題が当時から変わっていない
2. Webで見かける「Rails(とRuby)は終わっていない!」という意見は、改良など必要無く今のままで十分でこれからもこのままで行こうという姿勢にしか見えず、時代に合わせてこれから進化して行くだろう展望が感じられない
```
## 1. Railsがリリースされた当時から長い時間が経過したにも関わらず、解決しようと取り組んでいる問題が当時から変わっていない
- _Railsのチュートリアルの最初で書いてあるのはDRY(Don't Repeat Yourself)の原則とCoC(設定より規約)ですが、RailsはWebアプリ界隈の(リリース当時の)問題を解決してます!ってことを言ってるですね…(中略)…それなのにフレームワークの特徴としてそれら2つをチュートリアルガイドの最初の方に書いてあることに、自分はすごく違和感を感じてしまいました。_
- チュートリアルは使い方を指導するものであって、思想を布教するためのものではない
- web アプリケーションを(まずは)さっと作ることが目的
- _そして時代は移り変わり現在、プログラムをクラスやコンポーネントで分割するのは当然_
- Rails 登場以前からそうなっていた
- それはプログラミングパラダイムの話であり、ここでは関係ないのでは
- そこは問題ではない
- ソフトウェア開発において取り組む最大の問題は「複雑性」への対処(個人の感想です)
- それこそ [公式サイト](https://rubyonrails.org/) のトップにはこう書かれている
- "Compress the complexity of modern web apps."
- DRY や CoC はその構成要素にすぎない
- (余談だけど、その下の "Ruby on Rails scales from HELLO WORLD to IPO." もよくない?)
- _なぜなら今流行りのWebフレームワークはもうみんな別の問題に取り組んでいるからです。詳しくは[こちら](https://qiita.com/takagimeow/items/ac814c1e5b5d9e8a76e1 "qiita.com")を読むと大体の流れはつかめると思いますが、Railsが取り組んでる問題はもう昔話なんです_
- それらの問題なら Rails はすでに取り組んできていた
- "Progress over stability" ([The Rails Doctrine](https://rubyonrails.org/doctrine) より)が示すように、かなり攻め気な機能を取り込んできた
- [RJS](https://magazine.rubyist.net/articles/0014/0014-RubyOnRails.html) とか
- _そして悪いことにRailsは新しく発生している問題に取り組もうとする姿勢が感じられないんです_
- それってあなたの感想ですよね
- _レールから外れたとき難易度が爆上がりする問題もきっとまたエレガントで驚くような方法で解決してくれているのだろう…と内心めちゃくちゃ期待していたのですが、Railsの答えはそれらに対して「対応しない」でした_
- それはごめん
- ただ、レールから外れる必要がどれくらいあるのか
- _Rails=斬新で革新的で最先端と言うイメージを持っていた自分には、とてもショックでした_
- それってあなたの感想ですよね
- ただ、その文脈で「Rails はオワコン」はわかる
## 2. Webで見かける「Rails(とRuby)は終わっていない!」という意見は、改良など必要無く今のままで十分でこれからもこのままで行こうという姿勢にしか見えず、時代に合わせてこれから進化して行くだろう展望が感じられない
- _今からすると笑っちゃう話ですが、「Java以外の言語は消える!」「JavaでOSがなくなる!」と言う感じの本が結構な数出版されてたんですよ_
- 商業の話
- ここでの「出版」と序盤に出てくる「公式」と終盤に出てくる「コミュニティ」を混ぜて話してるのは故意なのかな
- 『2000 年問題 日本壊滅』と同じ
- 研究者たちはそんなに問題視してなかった
- 今だと、AI 関連
- _PHPはバージョンが上がるたび少しずつ改良され使いやすくなり、Pythonなんかは外部ライブラリの充実とGIL(グローバルインタプリタロック)を無効化して速度の改善に取り組んでます_
- PHP はゲインロス効果(ヤンキー理論)
- Python のライブラリはユーザーの数と層の話
- なので、これをもって「Ruby オワコン」はわかる
- _何が言いたいかというと、いろんな言語やフレームワークが時代に合わせて変化しているのに、Rails(とRuby)にはその兆候が印象として感じられないのです_
- 「時代に合わせた変化」とは?
- 上の例は時代に合わせた変化ではない
- _Rustという最近成長中の言語は、スピードは早いしメモリ安全性が高くてとても良いのですが学習のハードルがものすごく高いんです。そこでインストールを簡単にできるようにしたり、学習が簡単にできるよう様々なドキュメントや[クイズのような感じで勉強できるソフト](https://github.com/rust-lang/rustlings "github.com")を揃え、さらにエディタの補完機能を充実させるため取り組んで、学習の敷居を低くしようと頑張ってます_
- 結局、そこを求めているのかな
- _それに対してRailsはどうなんでしょう?公式のチュートリアルは一つだけでしかも難しい、、、と聞いたのでやってみたのですが、フルスタックのWebアプリを開発しデプロイした経験がないと多分大部分の意味がわからないんじゃないか?と思いました_
- 「フルスタックであること」も Rails で重要なもののひとつ
- 新進気鋭の言語+フレームワークで、実装、テスト、デプロイ、保守やってみるとどうなるか
- 優秀なチュートリアルが大量にあるのに、公式として出す必要があるのか
- ただ、「公式」 = 「コミュニティ」なので、コミュニティの合う合わないはある
- それが全時代的だと感じての「Ruby オワコン」はわかる
- _そもそもRubyのコンセプトはプログラミングを楽しく・プログラマーを幸せにするんじゃなかったの?難易度高くて初心者お断りってRailsっていつからそんなフレームワークになったの?と_
- 言語仕様の話とごっちゃになっている
- Ruby は「こんな感じで書けば動きそう」で動く
- DSL を書きやすい
- 強力なメタプログラミング
- _何より自分的に一番ショックだったのは、VSCodeのプラグインのインストール回数。今の時点でRubyより歴史が浅く世間的にはドマイナー言語であろうRust用のプラグイン…(中略)…Rust に大負けなんですよ…これは確実にRubyの使用者が減ってるってことです_
- 歴史の話をするなら、VS Code (やエディタ)の歴史も加味する必要があるのでは
- この情報だけでいうと、「Ruby はプラグインが必要ないくらい楽に書ける」も真になってしまう
- 繰り返すが、ユーザーが少ない(減ってきている)ので「Ruby オワコン」はわかる
- _これらの現実に対してコミュニティーが問題解決に取り組む姿勢が感じられず、逆に現状を擁護する発言が目立つのを見てると、どうしても内輪だけで盛り上がってるオワコンと言う言葉が脳裏をかすめてしまいます_
- 逆にいうと「〜オワコン」と他を貶めることで自分をアピールするコミュニティもどうなんだろう
- 「巨人の肩の上に乗る」ことが重要では
- "Better Java" や "Better C" みたいな
## 結論
- _結論を言うとRails(とRuby)は数字を見る限り使われなくなってきてると思いますが、作ってる人・使ってる人たちにはそれが見えてないもしくは見ようとしていないのが「オワコン扱い」されてるホントの理由なんじゃないでしょうか?_
- 数字についてはその通り
- コミュニティの合う合わないはそれぞれ
- _Railsが登場したときと今ではいろんなものが変わりすぎてます。当時では考えられないほど型推論が実用的になったため、動的型付言語は静的型付言語に比べて不利な点が多くなってます_
- これはオワコンの(直接的な)原因ではない
- Python もオワコンになるのかな
- PHP は言語仕様がぶっ壊れているが、言語開発者は「ぶっ壊れてるけど、それが通した?世界中で動いてるだろ?」というスタンス
- 最高!
- _それと今回チュートリアルが楽しくなかったんですよ。昔あの分厚いRails本を読んでたときはとても楽しかったのですが、今回はなんと言うか淡々と作業をやらされてる感が強くて、初めてRailsに触れた時に感動したScaffoldコマンド一発でCRUD完成!みたいなワクワクがなかったんですね。(個人的にはRustの方が大変だけどずっと楽しかったし中毒性が高かったです)_
- Haskell へようこそ!
- _Railsを最強にしているActiveRecordですが、未だに匹敵するほど高性能で使いやすいものは存在しません_
- 「フルスタックであること」だと思う
- _とここまで書いておいてなんですが、多分自分はRails(とRuby)が好きなんですよ。実は今回ホントにがっかりしてもうRubyとRailsからは完全に離れようと思ったんです。けど一晩寝たらもう少し取り組んでみようかな?って気持ちになった上にこれだけ長文書いちゃうんだから、何とかなって欲しいと思ってるんだと思います_
- 今度、ご飯行きましょう!
- _そもそもの設計思想が古いのでホントにどうにかなるんだろうか…いやなって欲しいなぁ_
- 設計思想が古い → 同意
- むしろ、他の言語やフレームワークが後追いして追いついてきたので
- Ruby についていえば、他言語のいいとこ取りなので、巨人すげえ
- 時代に対して設計思想が古い → そんなことない
- "Ruby on Rails scales from HELLO WORLD to IPO." は誇大(すぎる)広告ではない気がする
- ちなみに、Rust についての言及があるということは、そもそも web アプリケーション開発の話ではないのかな
## (付録)個人的な所感
- Ruby と Rails のエンジニアまじ減ってる問題
- 採用業務や委託業務に絡んでると致命的
- Go + TypeScript にしました
- プログラミング分野では LLM がだいぶ優秀
- 静的型付け言語のほうがメリットを享受できそう
- Go + TypeScript にしました
- プログラミングは趣味になるんじゃないかなー
- フィルムカメラみたいな
- Haskell やろう
- オブジェクト指向はオワコンっぽい
- Backend + Frontend の構成とは相性悪いような
- function 単位のアーキテクチャになってる
- これについては「時代」と関連する
- DX (開発者体験じゃなくてデジタルトランスフォーメーションのほう)推進に乗っかるなら
- 次に盛り上がるプログラミングパラダイムは何でしょうね
- 新しいものではなく、過去の論文で発表されてたものにハードウェアが追いついた的なことがよくある
- 今だと「確率」を扱えると良い気がする
- 自動運転とか
- 確率的プログラミング (Probabilistic Programming)
- [Pyro](https://pyro.ai/)
- 量子コンピューターのアルゴリズムも「確率」
- ただそれは、既存のパラダイムの置き換えではない
- ちなみに、量子コンピューターも古典的コンピューターを置き換えはしない
- RSA 暗号の解読が有名だけど、それはアルゴリズムが見つかってるというだけで、すべてが高速化するわけではない