三日間で、Ruby未経験から、Railsで一定の物を作れるようになる方法

最近、短期間でWebアプリケーションを作らなければならないという状況に直面するという事があった。
どのような環境で動かすのかという事を考えた結果、後々の再利用も考えて、Herokuで普通にRailsアプリケーションを動かすのが一番良い選択であると思い、それにあたってこれまで一度も使った事のないRubyRailsを選択する事になった。

以下は、そこからどうにか三日間ぐらいでRailsでそこそこに物が作れるようになったまでに自分が踏んだ手順である。
ある程度他の言語がバリバリ書ける人を対象にしている。

-1. Railsの進化は速い

おそらくはじめてRailsに触れた人にとって落とし穴になるであろう事として、Railsはものすごいスピードで基本的な事柄が変わっていく。古いRailsのバージョンを対象として書かれた資料では、様々な部分において最新のバージョンと大きな差があり、それがきっかけで何時間も唸ってしまうという事が自分の場合は多々あった。

この記事はRails 3.2.2を対象に書かれている。他の資料を元に何かを進めようとしてうまくいかなかった時は、その資料が一体どのバージョンの時に書かれた物かを、しっかりと確認する事。

0. RubyRailsをインストールする

自分はOSX使いなので、以下はOSXでのRailsの導入手順について書く。Windowsの人は多分ここが比較的新しくて参考になると思う。

OSXの標準で入っているRubyのバージョンは1.8系なので、rvmというのを使って標準のRuby共存させつつRuby 1.9系を入れる。
主にここを参考にした。
ただ、自分はzshを使っているので、.bash_profileにこの人が書いている設定を.zshrcに書く必要があった。
どういう経緯を辿ったのかは忘れたが(ダメじゃん)、以下の二行を.zshrcに追記するのでなんかうまく動いている。

# RVM
PATH=$PATH:$HOME/.rvm/bin 
source ~/.rvm/scripts/rvm

rvmではsudoを付けなければいけない物は、普通のsudoではなくrvmsudoを使う必要がある。これは要注意。
あとはRubyGemsRailsを入れればよい。(上のサイトにも書いてある)

1. Rubyの言語をある程度習得する

Ruby自体未経験だったので、まずRubyを大まかに習得する必要があった。
こういうのはとりあえず本を読んで習得するのが話が早いと思ったので、たのしいRubyを買ってきて半分まで読んだ。

たのしいRuby 第3版

たのしいRuby 第3版

大体半分ぐらいまで読むとRubyのクラスシステムとかについて理解できるようになる。
残り半分はライブラリの話とかになってきて、あまりRubyの本質と関係ないので、とりあえず言語を習得する上では読まなくて良い。

大体ここまでで半日かかるかぐらい。

2. Rails

前述したように、Railsは変化が速い。一応手元に数年前に買ったアジャイル本(ノンタッチ)はあったのだが、進めていくにつれそのままではあまり使えないという事がわかってきた。そもそも、この手のストーリー仕立ての入門書は短期間でどうにかしようという状況には適さない。

結論からいって、一番手っ取り早いのは、英語だが、Ruby on Rails Guidesの必要な物全部に目を通してしまう事である。日本語より読むのが遅くなるのを考慮しても、下手な日本語の資料を探そうと試みて、ウンウン唸るよりずっと効率が良い。*1

とりあえずアプリケーションを書くにあたって、私が読むべきだと思ったのは以下。

あと、余談だがModel View Controllerというのも自分は聞いた事はある程度だったのだが、ある程度Railsに触れれば何の事だかは分かるので、あまり分からなくても深刻に受け止めなくて良い。

入門編

かなり良く、まとまったチュートリアルになっている。Building a Multi-Model Formとかは複雑なのでとりあえず読み飛ばしても良いかもしれない。
これをじっくり読んでおくだけで大体書ける。

ルーティング編

意外とこの後Controllerを作るにあたって、「まずController作るかー」とかやっていると落とし穴になるのがルーティング。
これだけはじっくりと読んでおいたほうがいい。RESTfulとかCRUDとかいうよく分からない用語も、よく分かったような気分になることができる。(今でもよく分かってませんすいません…)

Model編

そもそもリレショナルデータベースの予備知識が少しはないとまずテーブルの設計も考えられないしダメなのだけど(SQLとかは別に書けなくても良い)、自分の場合は殆ど無かったのでまずそこから始まった。

データベースの設計方法としては楽々ERDレッスン 第1回:「お持ち帰りご注文用紙」編:CodeZineが分かりやすい。
これを一通り読んでおけば、一応自分の作りたい物のテーブルをどう作れば良いかは分かるのではないかと思う。

データベースのマイグレーション(Railsに備わってるデータベーステーブル作成機構、という理解でよい)についての説明。とりあえずテーブルが作れる所まで流し読みすればOK。
foreign keyがないぞ、アレッとか思うかもしれないが、Railsの哲学により無いので、t.referencesを使う。中で、なんちゃら_idというt.integerが作られる。

基本的なvalidatorの書き方さえおさえられればOK。あとはいつvalidatorが走るかについて。

RailsでModel間の関係をどう記述するかについて。The Types of Associationsだけをじっくり読むこと。
上のデータベースの設計で考えたリレーションをこれで記述する。

いかにしてActiveRecordを使ってデータベースを参照するか。でもこれは実際にコード書きながら時々見るんでも良い気がする。

Controller編

意外と何も読まなくてもどうにかなるかもしれない。

View編

別に難しくないし、必要になった時に読めばいいような話も多いので、ざらっと読む。

3. おわりに

比較的ベタと思われるやりたい事があって、ちゃちゃっとRailsに関する何かを習得したい場合には、意外とRailscastsで該当する物をボーっと見るのが簡単な場合があります。
そこそこの見た目の物を安易に作りたい場合はTwitter Bootstrapの助けを借りましょう。#328 Twitter Bootstrap Basics - RailsCasts

あと、後半はあんまり通して読もうとしないで、そこそこ手を動かしながら(というか、メインでやりたい事をさっそくはじめてしまうと)楽に早く進むと思います。

*1: 一応和訳してる人もいるが、読んだ事ないので読みやすいかどうかは知らない。少なくとも原文は結構読みやすい。 ruby/rails/RailsGuidesをゆっくり和訳してみたよ - 株式会社ウサギィwiki