Railsで書き直す
(dirkjonker.bearblog.dev)-
ブログの始まり
- 2022年に通関申告書を作成するアプリケーションの開発を始めた。
- 複数の言語とフレームワークを評価した結果、Ruby on Railsで開発することに決めた。
- Railsに慣れていたため、他の選択肢より10倍速く開発できた。
-
バージョン2の開発
- RustとSvelteKitを使って、アプリケーションの第2バージョンの開発を始めた。
- 当初は高速で良かったが、必要な機能の10%しか実装できなかった。
- Railsに匹敵するRustのフレームワークがなく、多くの時間を要した。
-
Rustの利点
- Rustの性能と、エラーなくコンパイルできる利点を実感した。
- Rubyではランタイムエラーが頻繁に発生し、Rustの必要性を感じた。
-
フロントエンドの変化
- Railsのフロントエンドに不満を感じ、SvelteKitへ移行することにした。
- 新しいスタックで一部のページを素早く移行できたが、デプロイは複雑になった。
-
開発の現実
- Railsの部分は引き続き有用な機能を追加しながら進化していった。
- RustとSvelteへの移行は、ユーザーに直接的な価値を提供しないことに気づいた。
-
決断の難しさ
- 新しいスタックを諦め、Railsに戻ることを決断した。
- チームメンバーがRailsを学ぶよう促した。
-
Railsの利点
- Railsは多くの成功した企業の基盤であり、多数のライブラリとエコシステムを提供している。
- プロダクト開発に集中できるようにしてくれる。
-
教訓
- 新しい言語やフレームワークを学ぶことは、多くの洞察を与えてくれる。
- Webアプリケーション開発では、多くの選択と妥協が必要になる。
- Railsに戻るのは良い決断であり、生産性を高めた。
-
RubyとRailsの欠点
- ランタイムの問題はテストで解決可能だ。
- コードが複雑になるのは開発者の問題であり、うまく整理する必要がある。
- Railsは十分に高速で、Turboとキャッシュによって性能を改善できる。
-
結論
- 完璧な言語やフレームワークはなく、それぞれの長所と短所を理解して活用すべきだ。
- Railsは良い選択であり、他の多くのフレームワークも優れている。
2件のコメント
Rubyで書き直す
Railsで書き直す
Hacker Newsの意見
Rails、Django、Laravel は、Web アプリ開発において他のスタックよりはるかに先を行っている。これらは反復的な作業を処理し、要件をよく理解しており、アプリケーションを構築する際の妨げにならない。Web 開発はすでに解決済みの問題だと思っており、JavaScript 関連技術は大企業の資金によって主導される傾向がある
17年間 Rails を使ってきたが、今でも愛用しており、好んでいる。コードの分離が簡単なので、ファイルのヘッダーが不必要に長くならない。ロジックとマークアップを分離すれば独立してテストできるため、バグ追跡がしやすくなる
Rust は非常に賢い人たちが作った言語だが、型理論とメモリ割り当てに重点が置かれているため、一般的な開発者には理解しづらい。Rust 関連のブログ記事を読んでも半分くらいしか理解できない
Ruby と Rails に対する不満は減った。完璧な言語やフレームワークはなく、強みと弱みを理解して対処すべきだ
Rust で大規模な Web アプリケーションを素早く書くのは難しい。Rails で書かれた大規模アプリケーションは高速には動かず、バグが多く、保守や拡張が難しい場合がある。Java、C#、Go のような言語は、Rails と同じくらい素早く作業を終えられ、Rust と同じくらい高速に動作する
NextJS や SvelteKit のような技術が JS 開発者の間で人気なのは、Node.JS のバックエンド開発体験の問題を解決するからだ。Rails は 2006 年に、アプリケーション構築のための包括的なソリューションを革新的に提供した
AdonisJS を Rails の TS 代替としてテスト中だ。Rails や Laravel に似ており、スタックのあらゆる部分を決めなければならない負担を軽減してくれる
Rust が Web バックエンドに向いていないという意見には混乱する。小さなサービスでは良い経験をしたし、大きなアプリケーションを構築すると複雑さが増すかもしれないが、Rust は大規模コードベースで必要な自信を与えてくれる
Django と似た経験をしており、パフォーマンスの問題は主に Django 自体ではなくデータベースクエリで発生する
2010 年でもないのに、なぜ Rails を使うのか疑問だ。Java(Spring)、Go、Node のような多くの代替がある。Rust を使うのは C++ を選ぶのと同じくらい奇妙な選択だ