@IT編集部の西村賢がRuby/Rails関連を中心に書いています。

いま読みたいRuby on Rails3アプリ 10選

»

 ITエンジニア向けの質問・回答コミュニティ「QA@IT」で、「RSpec のテストがたくさんついたオープンソースの Rails3 アプリはあるでしょうか」という質問に対して回答したところ、少しはてブが付いたりしたようです。Railsに限らないかもしれませんが、ちょっとしたサンプルコードや簡易なアプリというのはたくさんあるのですが、そこそこの規模のアプリ、あるいは実運用されているアプリで参考にできるソースコードとなると、意外にパッと思い付かなかったりします。「Railsアプリなら、これを読め」というべきアプリのリストがあればいいのにと、よく思ったりしています。

 そんなわけで、いま読むべきだと私が勝手に考えてGitHubのウォッチリストに入れているRails3アプリを、10個ほどリストアップしてみたいと思います(全部で11個ですが)。ほかにオススメなどがあれば、ぜひコチラで情報をお寄せくださいませ。

Gitlab

https://github.com/gitlabhq/gitlabhq

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

(※初出時、GitlabをGitHQと誤記していました。訂正してお詫びいたします)

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と、最近のモダンなベストプラクティスを取り入れています。古いほうからコミット履歴を読んでみたい感じです。

 以上で11本です。まだほかにオススメがあれば、ぜひコチラで情報をお寄せくださいませ。

Comment(0)

コメント

コメントを投稿する