目次
■エンジニアの軌跡
2022.03.01 2024.01.22 約2分
ShopifyやGithubに代表される大規模なWebアプリケーションの開発では、開発チームが膨大になることで必ず課題が生じます。この状況に変化をもたらすのがRuby on Railsです。
「なぜ大規模開発にRailsを導入すべきなのか」生みの親であるDHH氏にお伺いしました。
大規模なチームでソフトウェア開発を行うことは開発環境に関わらず困難です。ソフトウェア開発という職業自体が本質的には「大規模なソフトウェアプロジェクトの失敗」の長い物語なのです。しかしRuby on Railsはそのような状況を改善するための手段になり得ます。
Ruby on Railsが長年構築されてきたアプリケーションを見てみると、
・Github
・Shopify
・Airbnb
・Zendesk
・Cookpad
・Square
・Stripe
などがあります。
Ruby on Railsが驚異的な成功をおさめているのは、先ほど列挙したような数千人の従業員を抱える10億ドル規模の巨大アプリケーションばかりに構築されているからです。ソフトウェア開発の歴史でRuby on Railsのような普及率を達成したWeb開発フレームワークはほとんどありません。もちろんトラブルに見舞われたからRailsはダメだと言う人もそれなりにいるとは思います。
Shopifyのメインアプリケーションには120万行のコードがあるとTobi氏はツイートしています。120万行のコードを何千人もの人々がそれぞれ開発すると、当然ながら課題にぶつかります。しかしこれは言語に関わらず起こる事象です。
例えばFacebookのPHP使用では、彼らの取り組みを可能とするためにPHPの派生品を発明する必要がありました。なぜなら彼らはソフトウェア開発の限界に達したからです。
「どの規模のWebアプリケーションであれば問題なく開発し続けられるのか?」という課題は業界共通のものです。
他の開発環境でこれらの課題に直面した経験がない人は、「自分がプログラミングしているのはRuby on Railsだから課題に直面している。」と考えるかもしれません。しかしこのような課題を解決する開発環境はそもそも存在しません。「120万行のアプリケーションを作るのはとても簡単で、そこには何百人もの開発者が関わっていますが何の問題もありません。」というふうに簡単にスケールできる開発環境はないのです。
大規模のソフトウェア開発は非常に困難で、誰もそれを解決できていないことを受け入れましょう。私たちが悪いプログラマーなのではなく、別の方法で書けばいいというわけでもありません。 しかしRailsを使用することで良い変化を起こせるかもしれません。
Railsは今まで困難であった大規模のソフトウェア開発に非常に優れています。
1つ目の理由は、GithubやShopifyなどの大企業を含む活発なコミュニティがあることです。GithubやShopifyなどの大企業にはRailsコアチーム、Rubyコアチームに数名ずつ参加してもらっています。大規模なアプリケーション開発で得た知見をフレームワークに反映させ、次世代の大企業が利用しやすいようにしています。
2つ目の理由は、Railsのフレームワークは汎用性が高いことです。Railsは37シグナルの時代に爆発的に普及しました。この頃は一人でWebアプリケーション全体を開発し、サービスを維持するための対処もしなければならない時代でした。これが今のフレームワークが誕生した背景になります。
このように1人で作業できるようなシンプルで親しみやすいフレームワークの方がより多くの人のためになるのです。すべてのソフトウェアは最終的に個人の頭脳によって書かれ、それぞれの開発者が全てのことを理解している必要があるからです。
誰のためにデザインするのかという観点は非常に意義があります。一人の開発者のためにデザインすれば、大規模なアプリケーションや企業にまで拡張することができるのです。
Railsの理想はスタートアップのためのフレームワークであることです。専門的なフレームワークにはなってほしくありません。私は現在、大規模なチームで働いていますが完全にゼロから事業をやり直すことがあればRailsはそのためのフレームワークでありたいです。
多くのソフトウェアは、時間とともに複雑になっていきます。これは私が常に注意している危険性の1つです。「Railsは一人の開発者のために設計している」ということを意識するようにしています。最初からGithubやShopify、Basecampのような大きな企業向けにデザインするのではなく、次のスタートアップのためだということを念頭に置くのです。それがフレームワークを新鮮に保ち、より多くの人の役に立つのです。
このように大規模なWebアプリケーション開発には、Railsのような個人のために設計された開発環境が良い選択肢となるでしょう。