QA@IT

Ruby on Rails3で書かれたオープンソースのRailsアプリで読むべきものは?

6468 PV

ちょっとしたコード片や、チュートリアル向けのアプリというのはよくありますが、もう少し実用的で、中規模ぐらいのオープンソースのRails3アプリがあれば、オススメを教えて下さい。

オススメというのはアプリとして実用的というより、コードやGemの使い方が参考になる、というような意味です。

回答

私自身が GitHub 上で、いつか読もうと思って watch しているものを、いくつか紹介してみます。

Gitlab

https://github.com/gitlabhq/gitlabhq

 GitHubクローンの結構大きなプロジェクトです。RedisやGitoliteが必要なので、自分でインストールして動かすのはやや手間かもしれませんが、なんといってもGitHubクローンなので、GitHub利用者なら、app/models 以下を見ても、どのモデルが何をやってるのか分かりやすいです。

Shapado

https://github.com/ricodigo/shapado

 StackOverflow.comのクローン実装です。MongoDB(Mongoid)を使っていたり、今どきのソーシャルっぽい機能があれこれ実装されていて、参考になるかもしれません。以前VPSで動かしてみたことがありますが、Mongoさえ入れれば動かすのは簡単でした。使っている Gem の一覧(Gemfile)を見ると、割りと良く見かける「イケてるヤツ」が詰まっている感じで、それも参考になりそうです。

RefineryCMS

https://github.com/resolve/refinerycms

 名前はCMSですが、カスタマイズが前提で、CMS Frameworkと名乗っているプロジェクトです。テストコードはRSpecで書かれていますが、spec/ではなく、./*/spec に分散していたり、何かと素直なRailsアプリではないので、参考にするにはビミョウかもしれません。私はCMSとして注目しています。

Rubygems.org

https://github.com/rubygems/rubygems.org

 Rubyのライブラリである「gem」をホスティングしている Rubygems.org そのものです。Railsアプリとしては比較的シンプルに見えますが、Gemのホスティングの部分だけをSinatraで実装していたり、HTTPのリダイレクトのところをRackアプリのミドルウェアとして実装していたりして、アドバンストな構成のRubyアプリケーションというのが参考になります。

Rails3-Mongoid-Omniauth

https://github.com/RailsApps/rails3-mongoid-omniauth

 実用アプリではなくチュートリアルを目的として作られたアプリです。Userモデルしかありませんが、今やRailsアプリでデファクトスタンダードとなった認証ライブラリのOmniauthの使い方の実例を見るという意味で参考になります。

Spree

https://github.com/spree/spree/

 オープンソースのECサイト構築アプリです。かなり大きいRailsアプリですが、なんといっても、リアルに運用されている商用サイトが多いという意味で、これ以上の実用アプリはないかもしれません。サポートビジネスを展開しているだけあって、ドキュメントも充実しています。Spreeは海外サイトでしかメジャーでないと思っていましたが、国内にも採用事例はあるようです。メガネ・サングラス通販サイトのOh My Glassesは、Spreeを使って3カ月で構築されたサイトだそうです。9月に行われるSapporo Ruby Kaigi 2012で、開発をした白土慧氏が講演を予定しているようです。

Redmine

http://www.redmine.org/

 言わずと知れたバグトラッキングシステムです。CRubyの開発でも使われています。もしかすると、Ruby/Railsの外で最も知られたRailsアプリかもしれません。そのぐらい知られているアプリであるのに、生SQLを含む400行以上のメソッドがコントローラーに存在するプロジェクトだった時代があったそうですね。その混乱したコードベースをリファクタリングした体験をまとめたEric Davis氏の著書「Refactoring Redmine」を合わせて読むと勉強になります。Railsアプリに限らず、MVCはどうあるべきか、オブジェクト指向的にコードを整理するとはどういうことか、リファクタリングの定石にはどういうものがあるのか、という勉強になります。私は2年ほど前にこの本を読みましたが、いまこれを書きながら、もう1度眺め返してみようと思い始めています。

WhiteHall

https://github.com/alphagov/whitehall

 英国政府のポータルサイト「Gov.uk」は、なんと、オープンソースのRails3アプリで、GitHub上で活発に開発されています。実験的サイトとはいえ、すごいことです。人民の人民によるITシステムの所有、あるいはネット時代の参政権とは何かということを考えさせられます。というと大げさかもしれませんが、ソーシャルコーディング時代を感じさせます。ポータルサイトのような、かつてならテンプレート言語で対応していたものでも、今どきはアプリとして実装する時代なのだなということも思ったりします。手元で動作させるのはちょっと面倒そうですが、Gov.ukに行けば実物が見れるので、参考になります。ポータルサイトなので、そう複雑なことはなく、やっていることはユーザーやコメントの管理、イベント情報などの管理という感じです。コミットを見ていると、意外にダメなコードが入って誰かがそれを直したりしているような様子も伺えて興味深いです。

Typo

https://github.com/fdv/typo

 古くからあるブログアプリのようですが、Rails 3.2.6で動いているようです。APIとしてXML RPCのエンドポイントがあるなど、2004年頃を思い出します。実際イニシャルコミットを見ると、2005年1月20日となっています。さすがに歴史があるだけあってひと通りの機能が実装されているようです。ブログアプリといえば、Ruby on RailsのようなMVCフレームワークにとって「Hello world」のようなものですし、ブログの動作も良く知っているわけですから、そういう意味でTypoは読みやすいです。

Tracks

https://github.com/TracksApp/tracks/

 良く作りこまれたToDo (GTD) アプリです。GitHubクローンのように巨大ではなく、ほどよい規模です。Herokuで動作させることもできるようで、インストールして、コードを壊しながら遊んでみたいところです。開発も活発なようで、ドキュメントやフォーラムが妙に充実しています。実用アプリとして良くできていて、「開発者グループ=ユーザーグループ」という古き良きオープンソースプロジェクトという印象を受けます。実は、これを書いている西村が、いま一番いじってみたいアプリです。コントローラーのアクションがいちいち長くて読むのが大変そうにも見えますが。

Fat Free CRM

https://github.com/fatfreecrm/fat_free_crm

 比較的クリーンでシンプルなCRMです。キャンペーンやリード管理といったCRMに必要な機能はひと通り揃っているようです。プロジェクトのゴールに「開発者が容易に拡張できるクリーンなコードベースを提供することで、CRMのイノベーションに拍車をかけること」とあります。その言葉どおり、コードが非常によく整備されている印象です。ライセンスにGPLではなく、AGPLを採用しているところにも志を感じます。開発スタートは2008年11月と、もう4年近く前ですが、現状ではCapybara、Travis、FactoryGirl、Pryと、最近のモダンなベストプラクティスを取り入れています。古いほうからコミット履歴を読んでみたい感じです。

編集 履歴 (0)
  • これ昨日のツイッターからもう知りました:XD Good Job ですね! -
  • ありがとうございます! -

Ryan Bates さん作の govsgo という囲碁のオンラインゲーム(?)が Rails 3.0.3 でした。

編集 履歴 (0)
  • 48時間で作ったと思えないサイトですね。バックエンドの思考エンジンにGnu Goを流用しているとはいえ、すごい。ありがとうございました、もう少し読んでみます。 -

ruby-china は中国の Ruby 公式サイトで、中国すべて(及び海外にいる)の Ruby エンジニアを含めています。

今のリポジトリ

編集 履歴 (0)
  • 中国系は盲点でした。ありがとうございます。 -
  • 中国および海外の Ruby on Rails で作ったサイト一覧:http://ruby-china.org/sites -
ウォッチ

この質問への回答やコメントをメールでお知らせします。