5 ポイント 投稿者 GN⁺ 2025-02-24 | 7件のコメント | WhatsAppで共有
  • 最近、筆者は祖父の古いビニールレコードを見つけ、この以前の時代のメディアが今でも問題なく再生できることに驚いた
    • ビニールは音楽配信に大きな変化をもたらし、複製と共有を可能にして、現在に至るまで標準として残っている
    • オーディオ共有の方法は進化したが、初期の方式も今なお機能している
    • 複雑化する世界の中で、多くの人がシンプルさ、安定性、持続性をもたらすビニールへと回帰している
  • Web技術が絶えず変化するなか、古いWebサイトも今なお十分に動作することを忘れがちだ
    • 1990年代のシンプルなテキストWebサイトでさえ、当時と同じように現代のブラウザで読み込まれる
    • Webサイトは時が経つにつれて、CSSによるスタイリング、JavaScriptによるインタラクション、WebSocketによるリアルタイム更新などの追加機能を得てきた
    • しかしその基盤は、今なおページ、フォーム、セッションに置かれている
  • Ruby on Railsは20年前、インタラクティブでデータベース駆動のWebアプリケーションを構築するための統合的なアプローチとして登場した
    • Airbnb、Shopify、GitHub、Instacart、Gusto、Squareなど数多くの成功企業の基盤となり、現在では数兆ドル規模のビジネスがRuby on Rails上で動いている
  • 効果的なツールは、抽象化によって複雑な作業を単純化する
    • 自動車を例にすると、運転にはかつて燃料システム、タイミング、クラッチ機構への理解が必要だったが、今ではほとんどのドライバーは自分の車にギアがいくつあるかさえ知らない
    • Ruby on Railsは、ログインセッション、CSRF保護、データベースORMなど、Web開発のベストプラクティスを使いやすいツール群としてパッケージ化した
    • こうした抽象化により、開発者は技術的な細部よりもプロダクト構築に集中できる
    • 今日ではほとんどの開発者はログインCookieの中身を知らないが、それでもそれがアプリケーションを動かしている
  • RailsはWebの基本要素に忠実であることで成功した
    • ページ、入力フィールド、フォームといったHTMLの基本要素を使う
    • バックエンド中心のフレームワークとして、データの検証、処理、保存に集中するため、フォーム生成が簡単である
  • JavaScriptはRailsの初期の成功以後に台頭した
    • この10年間のWeb開発の進化によって、WebサイトはiPhoneアプリのような機能を持ちながら、依然としてWebサイトのままでいられるようになった
  • Next.jsは今やスタートアップ構築のための最も一般的なツールとして使われている
    • フロントエンド中心のフレームワークとして、動的なローディング状態、サーバーサイドレンダリング、複雑なコンポーネント構築を可能にする
    • さらに別の数兆ドル規模の企業群がNext.js上で構築されており、こうしたWebアプリはRuby on Railsで構築されたものより高速で洗練されている
  • Next.jsとその基盤技術であるReactは、現代のWebイノベーションの多くを牽引している
    • 実際、Spotify、Netflix、Facebook、Stripeのような主流の消費者向けプロダクトは基本的にすべてこのスタック上で動作している
    • これにより開発者は、Web標準の限界を超えて、高速でカスタマイズされたインタラクティブな製品を作れるようになる
  • Next.jsが急速に普及するなかでも、Railsは依然として関連性を保っている
    • 個人プロジェクトからAI企業に至るまで、新しいプロジェクトが今なおRailsを選んでいる
  • 実際、Next.jsのような新しいJavaScript Webフレームワークの波は、Webアプリ構築をより難しくした
  • こうしたツールは、動的データレンダリングやリアルタイムインタラクションといったより多くの機能を開発者に与える一方で、その代償として抽象化のレベルは下がっている
  • Next.jsは実際にはネイティブiPhoneアプリと競合している
    • 以前は、洗練されたユーザー体験のためにスタートアップはiPhoneアプリを必要としており、iPhoneアプリ開発はしばしば複数の専門開発者を要する複雑な工程だった
    • Next.jsは、WebサイトがiPhoneアプリ品質に近づけるようにした
    • 今日の最も洗練されたプロダクトの一部であるLinearやChatGPTは、Next.jsアプリケーションとしてリリースされ、モバイルアプリは副次的な優先事項として扱われた
  • Railsはリリースから20年の間に進化し、JavaScriptインタラクション、バックエンド作業の管理、ローディング状態、リアルタイムアプリケーション向けツールなどを追加してきた
    • モバイルアプリ開発も支援する。アプリケーションのパターンが進化するにつれ、RailsはHTMLベースの土台を保ちながら、こうしたパターンをフレームワーク機能として統合してきた
  • ほとんどのWebアプリケーションは、今なおページ上のフォームで構成されている
    • 求人掲示板、ベンダーシステム、ECストアなどがこれに当たる
    • Next.jsでもこれらは構築できるが、Railsと比べると追加の開発時間が必要になる
    • 最先端フレームワークを使うことは、頻繁なアップデート、新しいライブラリ、予期しない問題を通じて不安定さをもたらす
    • Next.jsアプリケーションはしばしばVercel、Resend、Temporalのような複数のサードパーティサービスに依存し、プラットフォームリスクを高める
  • 開発者が今なおRailsを選ぶのは、それが20年経った今でもWebアプリケーションを構築する最もシンプルで抽象化された方法だからだ
    • 個人開発者は独力で動的かつリアルタイムなWebアプリケーションを作ることができ、エンタープライズチームは厳密なテストを支える複数のモデルとアクセス制御を備えたアプリケーションを構築できる
    • Railsは小規模チームがより速く作業しつつ、開発・保守コストを削減できるよう支援する
  • 筆者には両方のフレームワークを使った経験がある
    • ベンチャー資金を受けたAIスタートアップFind AIをRailsで構築した
    • 検索エンジンとして、複雑なバックエンド処理をシンプルなフロントエンド要件と組み合わせて扱えるRailsの能力から恩恵を受けた
    • 現在は大規模データセットを探索・管理するためのChroma Cloudに取り組んでおり、Next.jsは高度なインタラクションとデータ読み込み要件を満たしている
  • Railsは、現在のAI駆動アプリケーションの波の中で、古さの兆候を見せ始めている
    • LLM(大規模言語モデル)のテキストストリーミング、Rubyの並列処理、AIコーディングツール向けの強力な型サポートといった領域で苦戦している
    • それでもなお、依然として有効なツールである
  • ビニールは音楽へのアクセスを広げ、産業を変えた
    • 時間とともに音質は向上したが、初期の形式にも今なお価値がある
    • The Köln Concertはビットレートに関係なく今なお人気がある
    • 技術の世界でも同様で、Linearのような洗練されたプロダクトを楽しめる一方で、Craigslistの90年代風Webサイトのほうが今なおより多くの収益を生み出せるかもしれない
  • 結局のところ、ユーザーが気にするのはプロダクトがどう実装されているかより、その有用性である
    • 表面的な洗練さは消えうるが、有用性は残る

7件のコメント

 
jhj0517 2025-02-24

Airbnb、Shopify、GitHub、思ったよりRuby on Railsを使っている企業が多いですね!! 😊

 
thinkpad 2025-02-24

GitHub が Rails で開発されたというのは初耳です。GitLab が Rails で開発されたのは事実ですが……GitLab は Rails をうまく活用していて、長く記憶に残っていますね。

 
hahnlee 2025-02-24

GitHubは初期にRailsコミュニティを中心にネットワークを築いていました。
https://read.first1000.co/p/-github

少し別件ですが、Ruby on Railsのセキュリティ問題であるMass Assignment VulnerabilityをEgor Homakovが指摘した件がありました。これは開発者が注意すれば避けられる問題だったため、これをパッチすべきかどうかという議論がありました。(RTFMと言えてしまうので)

これを報告したEgor Homakovが選んだ方法は、当時すでにRailsで運用され、しかもRailsがホスティングされていたGitHubを攻撃することでした。実際に成功しました。

そのため、最大級のRailsアプリであってもこの事例から自由ではないことを示しました。

開発者を信頼するか(手動メモリ管理)vs 信頼しないか(GCなど)という選択だったのだと思いますが、私はRTFMのような返答や、セキュリティで「分かったうえでうまくやること」を前提にするときに、しばしばこれを思い出します。

https://news.ycombinator.com/item?id=3666564

 
thinkpad 2025-02-25

ありがとうございます。 :)

 
thinkpad 2025-02-24

ありがとうございます。

 
GN⁺ 2025-02-24
Hacker Newsの意見
  • 何百人もの人が今この記事を読んでいるが、皆さんがアクセスしているのは私の机の上にある Mac Mini を通じてである
  • Webアプリの中では、CRUD フォームだけのものが好きである。すべての問題に当てはまるわけではないが、現実世界と相互作用する多くの問題領域でうまく機能する。「予定があるか確認したいなら、予定の一覧を確認すればよい」といったやり方である
    • 一方で、統合カレンダーやダッシュボードに混在する「アプリ」パターンも有用である。Rails でもそれらはすべて構築できる。しかし、CRUD アプリの単純さには魅力がある
    • どんなスタイルでも好きな技術で構築できるが、Rails は「1モデル = 1概念 = 1 REST エンティティ」を好むように思える
    • Next.js のようなライブラリは「1操作/ビュー = 混在した概念 = 1つの特定画面」を好むように思える
  • Ruby/Rails コミュニティが奇妙なのは、半分は静かに仕事をしていて、残りの半分は Rails が死んでいないことを定期的に確認させなければならないように見える点である
    • すべてに AI が必要なわけではない
  • Rails は AI アプリケーションの波の中で古さを見せている。LLM のテキストストリーミングや並列処理に苦戦している
    • 私の経験では、Hotwire と組み合わせて非常に簡単に動作した。数千人のユーザーがいる Rails アプリで、問題なくストリーミングエージェントのチャットインターフェースを運用している
  • Django + gevent を勧める。Python の型システムを使え、ストリーミングおよび IO バウンドな並列処理に適している。CPU バウンドな並列処理には向かないが、Web アプリケーションではそれほど重要ではない
  • Ruby、Django、D 言語で RoR のようなメタWebフレームワークを構築して維持できる
    • Go と Rust は驚くべき言語だが、なぜ Rails のようなフレームワークを作れないのか不思議である。時間がたてば可能になるのか、それとも根本的な問題があるのか気になる
  • RoR は強力である。しかし、あらゆるものの変化があまりに速く、最新技術を追わなければ取り残されるような感覚がある
  • AI コーディングツールには強い型が欠けているという批判を聞いたことがあるが、私の経験では LLM は Rails のコードベースでうまく機能する
    • Rails には強力な慣習があるため、型情報がなくても LLM が十分に学習できる。Rails の中核は時間がたっても大きく変わっていない
  • Django を使っており、すべてが新鮮に感じられる。htmx + alpine.js を使って HTML を送っており、JSON REST API から離れたことで生産性が大きく向上した
  • RoR は素晴らしい。Ruby はそれ以上に成長しなければならない
    • Django アプリを Python 3 で書き直すか RoR で書き直すかを選ばなければならなかったとき、後者を選んだ会社で働いていた。Django に入ってきた多くのアイデアは RoR から始まった
    • Python が使われている他の分野でも革新が必要である。科学技術計算、機械学習/AI、データ分析などでも、Ruby が Rails のように採用される必要がある
  • 2010年代には、設定より規約を優先するアプローチが人気を集めた
    • Angular、EmberJS、Django、Rails は非常に人気があった
    • 現代のスタックは、React/NextJS と、それに合わせたカスタムバックエンドへ移行している
    • NextJS が React に最も適した「設定より規約」のアプローチなのか気になる