それでもRailsを選択する3つの理由

スタートアップ界隈でのRuby on Rails利用率は割と高く感じる。
みんなが使っているから使う?それだけではないはず。なぜ使うのだろう。

f:id:naoto5959:20150219230109j:plain

railsの特徴を考える。

  • 規約縛りの哲学
  • 周辺gemのエコシステム
  • webの進化への追従の速さ

規約縛りの哲学

Convention over Configurationてやつ。規約を決めて、それに沿えば、フレームワークに乗って素早く開発できるようになる。規約で縛ることでRailsに流れる哲学に従うことを強制化している。

外れると痛い目を見る。Railsに乗るということは電車に乗って簡単に遠くまで行けるということ。Railsから降りるということは電車からも降りるようなものだ。中途半端な理解で突き進むと線路からすぐに降りて歩くことになる。

スタートアップでRailsが採用される一番の理由は、 簡単に遠くまで行ける だと思う。ただ、そんなにうまい話はないのだ。簡単に遠くまで行くには、それなりの覚悟が必要だ。規約を守るにはRailsの哲学を理解する必要がある。取っ掛かりとしては、

あたりだろうか。体系だった書籍や公式のチュートリアルは哲学に触れる第一歩としてよい。実際作ることにより規約があるからこその手軽さを体験し、運用からその思想の深さが理解できる。

規約縛りのさらなる魅力はなにか、Railsというレールがあることにより、チームの共通認識として Rails way に沿っているかという基準が出来ることは大きな魅力だ。チーム開発を加速するためにコードレビューの重要性が高まっているが、このコードレビューにおいても Rails way であるか?という観点がレビューの観点となるので、コードレビューを導入しやすいと感じる。Rails wayをベースにして、コードレビューの観点を育てて行けるのは魅力の一つだ。

地域コミュニティは、Sendagaya.rb | Doorkeeperが初心者におすすめ、もうすでにRailsで何かを作っているなら、ゆるふわ Development Club #yurudevもよい。

周辺のエコシステム

Railsがgithub上で開発されている事も大きいが、その流れで周辺のライブラリ群(gem)も同じgithub上にて開発されていることが多い。

githubにおけるpull requestの仕組みがこのエコシステムを広める根源となっている。

  • 議論に透明性がある
  • 誰にでもチャンスがあり当事者意識をもてる
  • エコシステムに貢献できる

逆に言うと、エコシステムには貢献する義務もある。gemに不都合や要望があるとき、 自身がエコシステムの一部であることを認識していれば、自然とそのgemにpull requestを送ることになる だろう。

Railsに乗るということは自身がエコシステムに入るということだ。Railsに乗り、OSSに貢献する気持ちを育てよう。pull requestはコミュニケーションだ。自律的行動でしか成り立たない。

pplog開発のコードレビューから学ぶpull requestによる自律的行動とコミュニケーションはそういう事例を書いた記事。

webの進化への追従の速さ

#12 Rails sideshow | mozaic.fm で語られているように、Railsの進化はWebの進化である。

Railsはバージョンアップがつらいという話をよく聞く。フレームワークのAPIは驚くほど早い周期で廃れ、入れ替わっていく。それの影響もありエコシステムを形成するgemもその影響を受ける。つまり、バージョンアップへの追従のために対処しないといけない箇所は非常に多い。

なぜ、それほどまで変わるのか。

進化のために過去を切り捨てることが、Railsが今も進化し続け、多くの人に利用されていて、エコシステムが形成されることの鍵である。過去の互換性を残せば残すほど進化は鈍化し、身動きがとれなくなってくる。その為に良いもののためには捨てる。

追従するために必要なことはなにか。

  • レールに乗る
  • テストを書く
  • Rails本体を含めたエコシステムの動向をウォッチする

どれも必要であり、これらは生半可な気持ちでは実践できない。

それでもRailsを選択する理由

それでもRailsを使うのは、 規約縛り周辺のエコシステムwebの進化への追従 と言った点に魅力を感じるからであろう。

企業の活動において、railsを選択することはエンジニアリングにおけるただのフレームワークの選択ではなく、重要な経営判断である。 バージョンアップへ追従やテストを書くことを経営陣が意味ある活動であると理解することが大事 だ。

パーフェクトRuby on Rails

パーフェクトRuby on Rails