Forkwell Press

SHARE

Railsを語る_DHH
Trends

生みの親 DHHが語る Railsが大規模開発に強い理由

Forkwell Pressを盛り上げるために集結!

ShopifyやGithubに代表される大規模なWebアプリケーションの開発では、開発チームが膨大になることで必ず課題が生じます。この状況に変化をもたらすのがRuby on Railsです。

「なぜ大規模開発にRailsを導入すべきなのか」生みの親であるDHH氏にお伺いしました。

巨大アプリケーション開発の課題とRailsの関係性

大規模なチームでソフトウェア開発を行うことは開発環境に関わらず困難です。ソフトウェア開発という職業自体が本質的には「大規模なソフトウェアプロジェクトの失敗」の長い物語なのです。しかしRuby on Railsはそのような状況を改善するための手段になり得ます。

Ruby on Railsが長年構築されてきたアプリケーションを見てみると、
・Github
・Shopify
・Airbnb
Zendesk
Cookpad
Square
Stripe
などがあります。

ソフトウェア開発で成功をおさめるRails

Ruby on Railsが驚異的な成功をおさめているのは、先ほど列挙したような数千人の従業員を抱える10億ドル規模の巨大アプリケーションばかりに構築されているからです。ソフトウェア開発の歴史でRuby on Railsのような普及率を達成したWeb開発フレームワークはほとんどありません。もちろんトラブルに見舞われたからRailsはダメだと言う人もそれなりにいるとは思います。

簡単にスケールできる開発環境は存在しない

Shopifyのメインアプリケーションには120万行のコードがあるとTobi氏はツイートしています。120万行のコードを何千人もの人々がそれぞれ開発すると、当然ながら課題にぶつかります。しかしこれは言語に関わらず起こる事象です。

例えばFacebookPHP使用では、彼らの取り組みを可能とするためにPHPの派生品を発明する必要がありました。なぜなら彼らはソフトウェア開発の限界に達したからです。

「どの規模のWebアプリケーションであれば問題なく開発し続けられるのか?」という課題は業界共通のものです。

他の開発環境でこれらの課題に直面した経験がない人は、「自分がプログラミングしているのはRuby on Railsだから課題に直面している。」と考えるかもしれません。しかしこのような課題を解決する開発環境はそもそも存在しません。「120万行のアプリケーションを作るのはとても簡単で、そこには何百人もの開発者が関わっていますが何の問題もありません。」というふうに簡単にスケールできる開発環境はないのです。

Railsは大規模開発に変化をもたらす

大規模のソフトウェア開発は非常に困難で、誰もそれを解決できていないことを受け入れましょう。私たちが悪いプログラマーなのではなく、別の方法で書けばいいというわけでもありません。 しかしRailsを使用することで良い変化を起こせるかもしれません。

Railsが大規模なソフトウェア開発に最適な2つの理由

Railsは今まで困難であった大規模のソフトウェア開発に非常に優れています。

理由1:巨大企業を含む活発なコミュニティがある

1つ目の理由は、GithubShopifyなどの大企業を含む活発なコミュニティがあることです。GithubShopifyなどの大企業にはRailsコアチーム、Rubyコアチームに数名ずつ参加してもらっています。大規模なアプリケーション開発で得た知見をフレームワークに反映させ、次世代の大企業が利用しやすいようにしています。 

理由2:汎用性の高いフレームワークである

2つ目の理由は、Railsのフレームワークは汎用性が高いことです。Rails37シグナルの時代に爆発的に普及しました。この頃は一人でWebアプリケーション全体を開発し、サービスを維持するための対処もしなければならない時代でした。これが今のフレームワークが誕生した背景になります。

このように1人で作業できるようなシンプルで親しみやすいフレームワークの方がより多くの人のためになるのです。すべてのソフトウェアは最終的に個人の頭脳によって書かれ、それぞれの開発者が全てのことを理解している必要があるからです。

誰のためにデザインするのかという観点は非常に意義があります。一人の開発者のためにデザインすれば、大規模なアプリケーションや企業にまで拡張することができるのです。

Railsはスタートアップのためにある

Railsの理想はスタートアップのためのフレームワークであることです。専門的なフレームワークにはなってほしくありません。私は現在、大規模なチームで働いていますが完全にゼロから事業をやり直すことがあればRailsはそのためのフレームワークでありたいです。

多くのソフトウェアは、時間とともに複雑になっていきます。これは私が常に注意している危険性の1つです。「Railsは一人の開発者のために設計している」ということを意識するようにしています。最初からGithubShopifyBasecampのような大きな企業向けにデザインするのではなく、次のスタートアップのためだということを念頭に置くのです。それがフレームワークを新鮮に保ち、より多くの人の役に立つのです。

このように大規模なWebアプリケーション開発には、Railsのような個人のために設計された開発環境が良い選択肢となるでしょう。

 

編集部

Follow

Forkwell Pressを盛り上げるために集結!

Forkwell Pressを盛り上げるために集結!

SHARE

目次

目次