Ruby on Rails は Ruby で動いていますが、
Rails のようにフルスタックで動くものを javascript (typescript) で動かそうというのが、
RedwoodJS です。
RedwoodJS
https://redwoodjs.com
2021年5月現在でバージョンは
v0.32.2
です。
React、GraphQL、Prismaを組み合わせたフルスタックフレームワーク
RedwoodJS:JAMstackフレームワークの中でユニークにする5つの機能
https://ichi.pro/redwoodjs-jamstack-fure-mu-wa-ku-no-naka-de-yuni-ku-ni-suru-5-tsu-no-kino-261443639644972
Redwood – Ruby on RailsのエクスペリエンスをJavaScriptで実現
https://www.infoq.com/jp/news/2020/12/redwood-ruby-rails-javascript/
これはまさにJavascript時代のRailsとも言うべきもので、次のような移り変わりを実現します。
REST => GraphQL,
Sprockets => Babel/webpack,
VM => Lambda,
Caching => Static site,
ERb => React,
Active Record => Prisma,
Rspec => Jest,
routes.rb => Routes.js
Rubyは今後廃れるか
なんだかんだ私も Ruby on Rails で 5年くらい開発してたので、
平均的な人よりは Ruby のことも Rails のことも知ってるつもりです。
で、感想なんですが、
小・中規模のプログラム/プロジェクトだと Ruby でいいと思うんですが、
大規模になると、やっぱりコンパイル/型チェックがあった方がいいなと。
Ruby って実行したときにエラーが起こる場合が多いんですよね。
例えば、変数名、1文字だけ間違えててエラーとか笑
コンパイルすると、実行前にエラーがわかることが多い。
それって、要はコンパイル=テストみたいなもんなんですよね。
つまり、コンパイルできる言語だと、その分 Ruby におけるテストを書く負担が減る。
Rust なんてコンパイルを厳しくしてマルチスレッドにおける予期しない変数書き換えを防ぎますよね。
これって、コンパイル条件を厳しくする代わりに、ヒューマンうっかりエラーを無くそうって試みだと思うんです。
いくら熟練のプログラマだって、ミスするときはミスします。スレッドで予期しないタイミングで他の変数を書き換える処理とか書いちゃいます。
さらに、このプログラムを他の人が引き継いだりしたら、完全にその動作を把握するのって難しいですよね?ちょっと修正したらなんかよくわからない不具合出てしまって、よくわからん。みたいな。
だったら、もうガチガチに制約を課してその中でプログラミングしましょうよ。
今流行ってる Lint とか prettier みたいなコード整形ツールも同じ方向を向いていると思います。
コードの書き方が人によって違うと、結論のでない宗教論争にもなる。こんな不毛な争いはないです。
だったら、ツールに任せることにして、ツールが出した結果に関しては文句を言わない。
それでいいじゃないですか。そのツールの出力に文句があるなら、別の整形ツールに乗り換えてもよし。
そうやって人類のテクノロジは発展していくのだと思います。
長くなりましたが、 ruby にはいくつか不満があるので、 typescript にするとコンパイルがあるから、いいと思うんですよね。
ちょっと ruby の不満集をあげてみますw
やっぱりこれからは、 typescript, go, rust 等のコンパイル言語による web開発の時代が来たと感じます。
Ruby のココがダメ
https://qiita.com/scivola/items/17470c52641d3ffa1650
Rubyは遅いという先入観を持っている人たちが今でもいるようですが、どのように反論すべきですか?
https://jp.quora.com/Ruby-ha-osoi-toiu-sennyuukan-wo-ji-tte-iru-nin-tachi-ga-ima-demo-iru-you-desuga-dono-you-ni-hanron-sube-ki-desu-ka
なぜrubyは他の言語と比べて遅いのでしょうか?
https://jp.quora.com/naze-ruby-ha-hokano-gengo-to-kurabe-te-osoi-node-shou-ka
Ruby経験者がRustを触って比較してみた 2020冬
https://zenn.dev/masaki_murano/articles/e648831684fac7
「Railsは終わった」と言われる理由
https://qiita.com/klriutsa/items/86ac5e94ec99c0d95b61
Ruby2系はチームの幸福度を最大化できなかった
https://qiita.com/klriutsa/items/452666251e7179f37de6
コメント