2013年1月30日水曜日

Railsプログラマへの道

Railsでアプリケーションを作ろうと思うと、Rubyだけでなく色々な前提知識が必要です。
必要になる知識と、私がそれをどうやって学んできたかを書きたいと思います。

※過不足あるかと思います。参考程度に。

Web(http)の知識

Ruby on RailsはWebアプリケーションフレームワークですので、当然Webアプリケーションを開発します。
Webとは何なのか。httpって何か。ブラウザとWebサーバーは何をしているのかという知識は必須です。



結構古い本ですが、いまでも役に立つ知識が豊富です。
HTMLの文法についてや、httpの通信について詳しく説明されています。
マンガと、文章で書かれていて読みやすいし面白いです。
これを読めば、Railsが面倒なところを色々と隠ぺいしてくれている事が理解出来るはずです。
私が就職してすぐに、Webアプリ開発の仕事をなんとかやれたのは高校生の頃にこの本を読んでいたからだと思います。
これに書いてあるレベルの事を知らない同僚は苦労していました。
手に入りにくいとは思いますが、入手出来そうなら読んでみてください。おすすめです。

Rubyの知識

RailsはRubyでWebアプリケーションを作るフレームワークですので、Rubyの知識も必要です。
私はプログラミング言語を、C → C++ → VB6 → Ruby, Java → C#, VB.NET みたいな順番で学んだため、Rubyを初めて触った時にはプログラミング未経験ではなかったというのと、Rubyは1.6の頃からなんとなく時々ダラダラと10年くらい触ってて、毎日書くようになったのはここ1年少しという感じなので、「この本で入門した」という記憶がありません。

ということで、普通の意味の入門に何が良いのかか分かりませんが、今までに読んだRuby関連の本で良かったものを紹介します。




私が最初に買ったのは第2版でしたが第2版はruby1.8での内容ですので、こちらの方がいいです。
1.9版はメタプログラミングに関する記述も増えています。
(もうすぐ2.0がリリースされますが、1.8から1.9ほどの違いは無さそうなので
 2.0の本が出てから入門した方がいいとか、そういう事はないと思います)




次はこれ。入門本ではありません。
入門本ではありません。

大事なことなので二回言いました。

Ruby on Railsでアプリを作るための必須知識というわけではありませんが、読むとRuby力がレベルアップすること間違いなしです。
入門レベルのことは全て理解したとか、他のオブジェクト指向言語の経験があり、Rubyの文法もだいたい覚えたという人におすすめです。
私は後者のパターンですが、衝撃を受けました。
あまりに衝撃を受けたので、@patorash主催の読書会に参加してもう一度読み返してますが、やっぱり衝撃を受け続けています。

Railsの知識

やっとRailsです。
こんなに読まないと、入り口に立てないのかと思われるかもしれませんが、立てません!
というのは冗談で、本当は良くわかりません。
おそらくいきなりRailsの入門から初めて、バリバリプログラミングしている方も大勢居ると思います。
とにかく、下記に紹介する本を読んでみてください。
知識が足りないと感じたなら、上で紹介したような知識を身に付けてみましょう。



はじめる! Rails3(1)
黒田努
達人出版会
発行日: 2011-02-03
対応フォーマット: EPUB, PDF
はじめる! Rails3(2)
黒田努
達人出版会
発行日: 2011-09-05
対応フォーマット: EPUB, PDF
はじめる! Rails3(3)
黒田努
達人出版会
発行日: 2012-04-04
対応フォーマット: EPUB, PDF


一気に書きました。
私の場合は、はじめる! Rails3 1巻と2巻をまず読みました。
この二冊を読んで、あとはRails3レシピブックを辞書変わりに、毎日毎日仕事で書いたり
自宅で趣味のWebサービスを開発したりして、Railsに慣れていきました。

はじめる! Rails3 3巻では、Rails3.2の話になりassets pipelineの話も解説されているので
今の最新の環境に関する知識もバッチリです。

はじめる! Rails3ですが、プログラミングの本なので当たり前ですが
読むだけでなく、実際に自分のPCでプログラムを書いて、Railsを動かしながら読んでください。
著者のWebサイトにて、開発環境の構築や便利なツールの解説記事もあるので読んでみるといいでしょう。

おわりに

今回はRailsのプログラミングが出来るようになるまでを紹介したので書いてませんが、Railsは作ったものを公開するのがまた面倒だったりします。
私がいままでやったことあるのは、Heroku、Sqale、のPaasサービスに乗せるパターンと、自分でScientific LinuxにRailsが動く環境を作って、そこにデプロイするパターンです。
Scientific LinuxではWebサーバーにnginxを、アプリケーションサーバーにPassengerを使っています。Unicornというアプリケーションサーバーで構築したこともあります。
本番環境へのアップロードも何かと面倒なので、capistranoで自動化しています。
サーバー環境のRubyはrvmでインストールしたもので動かしています。
あとは、Gitも使えるようになるといいと思います。

本番環境への公開は、今回のテーマではないので詳しく書きませんが、上にあげたキーワードで検索してみると、いろいろな情報が出てくると思います。