1 ポイント 投稿者 GN⁺ 2023-11-14 | まだコメントはありません。 | WhatsAppで共有
  • 37signalsのBasecamp開発過程で、David Heinemeier Hanssonが必要なツールをRubyで自ら作り、Railsの出発点が生まれた
  • Jason FriedとDavidの協業は、2001年の37signalsブログでのPHPに関する質問から始まり、Basecampバックエンド開発とRailsの抽出へとつながった
  • Railsは、PHPの素早いWeb開発の感覚とJava的なオブジェクト指向設計の厳密さをRubyの中で結びつけようとし、2003年夏から2004年2月のBasecampリリースまでに中核となる形が作られた
  • 初期の普及は、Basecampという実際の製品、15分デモ、Javaとの比較、37signalsの評判に支えられ、Jamis Buck、Jeremy Kemper、Tobias Lütkeら初期貢献者とRails core teamが形成された
  • RailsはMITライセンスのオープンソースとして公開された後、ShopifyやGitHubのような大規模事例、20年続くコミュニティを通じて、小さなチームでも大きなWebアプリケーションを作れるという方向性を保ち続けている

37signalsとDavid Heinemeier Hanssonの出会い

  • 1999年または2000年、Jason Friedは37signalsというWebデザイン会社を運営しながら、Single Fileというオンライン書籍データベースのサイドプロジェクトをPHPで作っていた
  • 書籍でPHPを学びながらかなり進めていたが、行き詰まる部分が出てきて、StackOverflowのような回答の場がなかった時代だったため、オンラインで助けを求めた
  • デンマーク・コペンハーゲンでWeb業界にいたDavid Heinemeier Hanssonは、37signalsのブログSignal vs. Noiseを継続的に読んでおり、2001年にJasonのプログラミング質問へ回答した
  • Davidの回答は非常に詳細で、Jasonは単なるコメントではなく、本当に助けようとする姿勢を感じた
  • その後DavidはJasonのコード全体を見て、「これはあまり良くないので最初からやり直そう」といった趣旨のことを言い、2人の協業はそこから始まった
  • 2人はしばらくリモートで働いた後、シカゴのHancock building近くで初めて直接会い、JasonはDavidの白い服装が非常に目立っていたと回想している

Basecampを作りながらRailsが生まれる

  • 37signalsは、クライアントプロジェクトをメールで管理する中で、ファイルのバージョン、残作業、リリース準備状況を追跡しにくいと感じ、2003年に社内向けのプロジェクト管理ツールを作ることにした
  • 当時Davidはコペンハーゲンのビジネススクールの学生で、週あたり約10時間しか働けず、Basecampバックエンド開発の報酬として、現金よりAppleのノートPCや機材を望んだ
  • Martin FowlerとDave Thomasの文章を通じてRubyに触れたDavidは、日本で生まれたこの言語のコードが疑似コードのように読める点に惹かれた
  • Basecamp以前の37signalsの仕事ではPHPを使っていたが、DavidはBasecampのバックエンドをRubyで作ることに決め、Jasonはその選択を信頼した
  • DavidがRailsに見いだした組み合わせは次の2つだった
    • PHPのようなすばやくWebに載せられる即時性
    • Javaで見られたオブジェクト指向設計やパターンの知的な厳密さ
  • 当時のRubyには、Web開発やデータベースアクセスを助けるライブラリやフレームワークが多くなく、DavidはBasecampを作るために必要なツールを自ら作った
  • 2003年夏から2004年2月のBasecampリリースまでにRailsの中核が形成され、Basecamp公開後およそ6か月にわたってコードとドキュメントを磨いたのち、2004年にRailsを公開した

初期公開、論争的なマーケティング、コアチームの形成

  • Rails公開を準備していたDavidは、コードだけでなくドキュメントの品質も重要視し、最初のバージョンが十分に良くなければならないと判断していた
  • Railsが注目され始めると、Davidはフレームワークの方向性を強く守ろうとし、自分が望まない要求には「ノー」と言った
  • 初期のRailsカンファレンスで、Davidは不当な要求や失敗をちらつかせる態度への反応として「F()c% You」というスライドを使い、オープンソースは商業的な関係ではなく、利用者が方向性を指図できるものではないという立場を示した
  • 同時に、Railsは何千人もの貢献者から送られた優れた成果を取り込みながら成長しており、Davidがフィードバックや貢献そのものを拒んでいたわけではなかった
  • 2004年のInternational Ruby Conferenceで、DavidはRailsを紹介する際、コードのデモよりもRailsを作った理由と、プログラマにより良い体験を与えようとする目標に重点を置いた
  • 最初の約1年間はDavidだけが直接コードをコミットしており、パッチはメールやWikiなどで受け取っていた
  • その後、貢献の多かった人々にコードベースへのアクセス権を与えることでRails core teamが作られ、Jamis Buck、Jeremy Kemper、Marcel Molina、Scott Barron、Sam Stephenson、Michael Koziarskiらが初期コミッターとして参加した
  • 37signalsはRails core teamやRails貢献者の一部を採用し、Jamis BuckはBasecampが成長していた時期に37signalsが最初に雇ったプログラマとなった

実際の製品とエコシステムが生んだ普及

  • Railsが初期に注目を集めた背景には、37signalsの評判と、Basecampという実際に成功していた製品の存在が大きかった
  • Davidは、Rubyのようにあまり知られていない言語を基盤にしたツールを広めるには、静かな紹介よりも強い発信が必要だと考え、Java実装とRails実装を比較する論争的な資料を作った
  • Railsの普及には、15分デモ、Basecampの有料顧客と成長、実際に動くコードがそろって作用した
  • Tobias Lütkeは、カナダで会社を始めようとしていた時期にオンラインのスノーボードショップを作る中でRailsを非常に早い段階から使い、そのプロジェクトSnowdevilはのちのShopifyへとつながった
  • Tobiasは、Railsのおかげで1人でシステムを作ることができ、当時の他のオンラインストア構築チームより自分のほうが生産的だったと振り返っている
  • ShopifyはRailsの影響を強く受けた企業であり、現在も最新のRailsバージョンを使い、コードベースの大部分がRubyで、基本的なフォルダ構成も一般的なRailsアプリと同じである
  • Railsをめぐる「スケールしない」という批判は初期からあったが、Basecampは実利用者を支えており、ShopifyやGitHubのような事例が出る前から、Railsは最初からスケール可能だったという反論が続いていた
  • Shopifyは世界のEコマースのおよそ**10%**を占める大規模サービスとして語られ、Railsで処理できない規模が何なのか分からない、という経験談も出ている

リリース、Merb統合、20年続く方向性

  • Railsの公開は、最初からオープンソースにするのが当然の選択であり、DavidはWebの仕事を可能にした基盤がオープンソースのツールだったのだから、自分のツールボックスも共有すべきだと考えていた
  • Railsを有料化したり競争優位として独占したりする議論もあったが、DavidはMITライセンスのオープンソースであることが重要だと考え、Railsを非常に成功させると決めた
  • BasecampのデプロイのためにJamis Buckが作ったツールは、その後Capistranoという名前で定着した
  • Railsの主要リリースの流れは次の通り
    • Rails 1.0は重要な出発点である
    • Rails 1.2は安定した初期リリースであり、成熟したWebフレームワークの姿を示した時点と評価される
    • 2007年12月のRails 2.0では、クッキーベースのセッションやnamed scopesなどが導入された
    • 2009年3月のRails 2.3は、小規模から大規模アプリまで、現代のWeb開発者が必要とするツールを備えたリリースとして扱われる
  • Rails 2.3の時期にはjQueryが登場しつつあり、RailsはJavaScript世界のエネルギーを受け入れる余地を作ろうとしていた
  • その後、Ruby WebフレームワークMerbが、より高速で軽量で、やることの少ない競合として現れ、Rails開発者たちはその方向性から学ぶべき点を見いだした
  • Rails 3.0はMerbとの統合へとつながり、Rails内部を構成可能で再構成可能、かつモジュール化された構造へと再設計する大きな作業が必要だった
  • Railsコミュニティは、コンピュータサイエンスやプログラミングの正規教育を受けていない人でも、Webアプリケーションを作り、キャリアを築けるようにすることに焦点を当てていた
  • Railsは参入障壁を下げ、その後に会社や業界で高い水準のプログラマになれる道を提供しようとしてきた
  • 現在のRails Webサイトの文言のように、Railsは「Hello WorldからIPOまで」を小さなチームで進められるフレームワークであり、コミュニティとコードベースの品質は今がもっとも良いと評価されている

まだコメントはありません。

まだコメントはありません。