2007/08/05
■[programming][Wiki]Ruby on Rails勉強中 & Wikiもどき開発中
そろそろWebアプリをまともに作れるようになりたいと思い立って、最近Webアプリの勉強を始めました。
どの言語を使うかは悩んだんですが、色々話を聞いてみるとRuby on Railsが楽とのこと。そこで、5月末あたりにRuby on Rails関係の本を買い込み、それ以来暇さえあれば勉強用のアプリ(下の画像のWikiもどき)をいじってます。
で、このWikiもどきのソースコードが結構大きくなってきたので、今年の夏休みの宿題として、8月中を目標にオープンソースで公開しようと思います。あまり大した機能はないんですけど、まあ、一度「オープンソースでプログラムを公開」ってしてみたかったので良い機会かなあと……。無駄にsourceforge使っちゃうぞー(暑さで変なノリ)。
----
以下は、ここ2ヶ月を振り返ってみて、Railsについて気付いた事とか色々。
■ 開発環境
開発はすべてWindows XP SP2の上で行ってます。Webサーバ(Apache + Mongrel)とMySQLサーバの動作にはInstant Railsを使って、ソースコードの編集にはAptanaを使ってます。
どちらも、びっくりするくらい使うのが楽です。Instant Railsはボタン一発で必要なサーバが全部起動するし、AptanaはEclipseベースだから(Javaの開発でEclipseを使った経験があるので)簡単に使えました。Cygwinすら全く要らないみたいです。
以前、Ruby on Railsが出たてのころに、Linuxマシン上で「gem install railsで一発インストール!」とかやって喜んでたんですが、Instant RailsはそもそもRubyからしてインストールしてくれます*1。便利な世の中になったものですねえ。
■ 最初の感想:Ruby on Railsは神経質な人に向かない
世間の評判を聞く限り、慣れる人はすぐ慣れちゃうらしいですが、僕は1ヶ月くらい「もうRails使うのやめようかな……」とイライラしながらいじってました。
あまり話題に上がりませんけど、Railsって「なんだか分からないけど大抵の機能は何故か動く(そして少しでもレールから外れると何故か動かない)」という状況を我慢できない神経質な人には、結構辛い代物のような気がします(例:find_by_xxxメソッドは複数のレコードがある場合でも1つしかレコードを返さない。本には全然載ってないけど、そういうときのために実はfind_by_all_xxxメソッドがある、とか……)。
僕と同じ神経質タイプの人は、Ruby on Railsを導入するならその辺を覚悟しないとダメですね。まあ、一度慣れてしまえば、ある程度平気ですけど*2。
■ 買ったり借りたりした本
初心者向けにまとまった情報のあるサイトは見あたらなかったので、とりあえず本をかき集めてみました。買ったり借りたりして、多少なりとも読んだ本はこのあたり。
- Ruby on Rails入門―優しいRailsの育て方
- ライド・オン・Rails
- Railsレシピ
- Rubyist Magazine出張版 正しいRubyコードの書き方講座
- Ajax on Rails
この中で、個人的なオススメは最初に買ったこの本です。
Ruby on Rails入門―優しいRailsの育て方(西 和則)
Ruby on Railsの本は、とりあえずscaffoldで見栄えのあるアプリを作ることを目標にして細部の説明をすっ飛ばしてしまってるものが多いのですが、この本はRailsの機能を広く、かつそこそこに深く解説していて参考になります。僕は、ネット上の解説で一通りscaffoldを触ってから、この本を見ながら色々機能を試しました。細かいことを気にしてしまう人にはお勧めのアプローチです*3。
一方、細かいことなんて気にしないからすぐに実用的なアプリを作りたいという人には、こちらの本が良さそうです。Hyper Estraierを使った全文検索、なんて話まで載ってます。
ライド・オン・Rails Ruby on Railsを徹底攻略(吉田 和弘/馬場 道明)
とはいえ、現在のバージョン(Rails 1.2系)に関する日本語の本はまだ出てないので、最終的には英語の文献頼みですけどね。
■ まとめ
なんだかんだ言いましたけど、改めて考えてみると、Ruby on Railsって使うの楽すぎです。
最初は1ヶ月くらいイライラさせられましたけど、とりあえず(10分では無理ですけど)1週間も経たずにそこそこ動くものは作れましたし。今更ながら、Railsが世間で騒がれるのも分かったような気がします。
また、この日記に無関係と判断したコメント及びトラックバックは削除する可能性があります。ご了承ください。