Railsに関する『知の高速道路』を無料でたくさん手に入れる方法
最近、『Rails関連の資料って、いっぱいあるんだ!』ということに気付き始めました。(遅
なので今回は、Railsは無料でガンガン学べて、無料でサービス提供できるんだよ!ってことを書こうと思います。
僕が初心者のとき
僕は今年からRuby及びRailsを学びはじめたんですが、
まず最初に名著『RailsによるアジャイルWebアプリケーション開発 第2版 (大型本)』を購入しました。
RailsによるアジャイルWebアプリケーション開発 第2版
- 作者: Dave Thomas,David Heinemeier Hansson,Leon Breedt,Mike Clark,Andreas Schwarz,James Duncan Davidson,Justin Gehtland,前田修吾
- 出版社/メーカー: オーム社
- 発売日: 2007/10/26
- メディア: 大型本
- 購入: 17人 クリック: 275回
- この商品を含むブログ (138件) を見る
しかし、発売日が2007/10/26と、2年程度昔のものなので、
初心者が普通に進めるといろいろ躓きまくるものでした。
(なのでホントの初心者にはオススメできませんよ。)
そのかわりに、以下で紹介するサイトを効率よく利用しましょう!
Railsの基本を学ぶ
まず、最初に見ておくべきは、RailsGuidesです。
基本的に全部英語だけど、なんとかなる。やればできる。
ここでRailsの基礎をみっちり固めよう。
なにしろ、ここではインストール方法はもちろん、
MVCや主要なコンポーネントの説明などをざっくり/じっくり学ぶことができます。
また、テストや、デバッグ、セキュリティ、パフォーマンスなど、
さまざまなテクノロジについても網羅されている最高の教科書です。
Github&Rubyforgeで知る
実装するうちに『車輪の再発明』やってる気になってきたら
(誰か作ってないかな?と思うようになったら)、GitHubや、RubyForgeに行きましょう。
GitHub/RubyForgeには、さまざまなGemやPluginがあり、オープンソースとして先人の知恵を借りることができます。
私見ですが、GitHubのほうが人気のプラグインが多い気がします。
Githubは以前、このブログでも紹介しているので併せてご覧ください。
githubで管理されてる注目プロジェクトのまとめ - 常識という迷信
Herokuで試す
ある程度作ったら、公開したくなるもの。
そんなときには、Herokuを使いましょう。
※ Herokuスタッフはきっと日本好き。使えばわかる。
Heroku | Cloud Application Platform
HerokuはRails専用のレンタルサーバです。
Railsアプリを公開できるスペースと、Gitリポジトリが無料で利用できます。超お得です。
Herokuに関しても以前、紹介したので割愛しますね。
HerokuとGitで、2台のPCによる共同開発をやる - 常識という迷信
買って一番役に立った書籍
上記はすべて無料で手に入りますが、書籍もやはり有用で、
私が買って一番役に立ったのは『Railsレシピブック 183の技』ですね。ダントツです。
- 作者: 高橋征義,諸橋恭介
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2008/05/31
- メディア: 単行本
- 購入: 36人 クリック: 532回
- この商品を含むブログ (95件) を見る
僕の本は、ルーティングのページにコーヒーがこぼれて黒ずんだり、
カバーも無くて手垢だらけですが、この本が一番使えると思います。
おわりに
こういうドキュメントってしばらくすると『いまさら言われなくとも…』とか思うんですが、
初心に返ってみると、『あの頃、見つけてればなぁ』と思ったりするもの。
Railsに興味があるけど、本を買うほどでもないってひとはたくさんいると思います。
そういった人達の背中を押せればと思います。
『Enjoy programming』ですね!
転職して半年経ったのでスキルチェックする
スキル | 転職直後 | 現在 | 評価 |
---|---|---|---|
Ruby | ファイルの整理ができる | クローラーもどきを作れる | あまり変わらない。スパム業者になれる。 |
Rails | scafolldができる | 暇つぶしにwebアプリ作れる | 相当上昇 |
xHTML | テーブルしか知らない | 暇つぶしにwebアプリ作れる | 相当上昇 |
CSS | widthなら知ってる | SASSフレームワークで作れる | 相当上昇 |
Javascript | alert("ボスケテ"); | jQuery, prototype | 相当上昇 |
コード管理 | cvs | git | 流行に乗った |
エディタ | 秀丸 | vim | vim以外のエディタでカーソル移動に支障がでる |
IE | 使いづらい | IE氏ね | IE氏ね |
やる気の出るエントリー5+1
「やる気が出ません。助けてください。」というときが必ずあると思います。
というか今の私です。
で、さくっと読めて、やる気の出るエントリーを、ざっくりまとめました。
明日からの生活に役立てようと思います。
やる気出る系
自称プログラマの私が推薦。
中二です。よろしくどうぞ。
Life is beautiful: ソフトウェアの仕様書は料理のレシピに似ている
Life is beautiful: ソウル(魂)のあるもの作り
「ソフトウェアは工業製品ではない」、Rubyのまつもと氏が講演 − @IT
CSSのプロパティの順序をいつも忘れる
似非WEBデザイナーですので、プロパティの値の順序と、
上下左右の対応がいつも不安になります。
padding: 0 3px 2px 1px;
とかあっても、パッと思い出せません。未熟者です。
ということで、備忘録。
- 作者: 益子貴寛,堀内敬子,小林信次,千貫りこ,伊藤学,山田あかね,西畑一馬,CSS Nite
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/11/11
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 610回
- この商品を含むブログ (62件) を見る
1個 => 上下左右
省略
2個 => 上下, 左右
こういうのは
margin: 10px 5px;
これと同じ
margin-top: 10px; margin-bottom: 10px; margin-right: 5px; margin-left: 5px;
3個 => 上, 左右, 下
こういうのは
margin: 10px 5px 15px;
これと同じ
margin-top: 10px; margin-bottom: 15px; margin-right: 5px; margin-left: 5px;
4個 => 上, 右, 下, 左
こういうのは
margin: 10px 5px 0 15px;
これと同じ
margin-top: 10px; margin-bottom: 0; margin-right: 5px; margin-left: 15px;
最後に気づいたんですが、これって上から時計回りで値が設定されるんですね。
おわり。
githubで管理されてる注目プロジェクトのまとめ
GitHub
どこもかしこも開発リポジトリとして
GitHubを使うようになってしばらく経ちますが、
「でも実際なにがあるの?」ってところがよくわからなかったので
GitHubの中身を見てみました。
今日はそのまとめ。
ただ、gitなんで、それぞれforkしたリポジトリがたくさんあるので、
自分の好みのリポジトリを選ぶのも良いかと思います。
※ 「fork」は本家リポジトリから分岐させて自分好みのリポジトリを作ること。
では、まとめ一覧
Ruby on Rails
rails/rails · GitHub
もはや説明する必要なし。
restful-authentication
technoweenie/restful-authentication · GitHub
ユーザ管理機能全般を面倒見てくれるrailsのプラグイン。
いろいろ出来ますが、出来ることを本家からコピペ。
- Login / logout
- Secure password handling
- Account activation by validating email
- Account approval / disabling by admin
- Rudimentary hooks for authorization and access control.
will_paginate
mislav/will_paginate · GitHub
ページネーションといえばこちら。よく使ってます。
paperclip
thoughtbot/paperclip · GitHub
画像処理プラグインです。
同じ画像系プラグインの「attachment_fu」より
扱いが簡単とのことで人気。
参考1:2008-11-30 - 篳篥日記
参考2:RailsからImageMagick(convert)に自由にオプションを渡せると聞いて飛んできました - komagata
cucumber
404 · GitHub
ビヘイビア(振舞)駆動開発(BDD:Behaviour Driven Development)を支援するプラグイン。
ストーリーに沿ったテストを行うことができます。
こちらに関しては、以下のエントリーを御熟読ください。
参考1: Cucumberがアツい - moroの日記
参考2:InfoQ: Cucumberによるストーリー駆動開発の手法
scriptaculous
madrobby/scriptaculous · GitHub
非プログラマの方から「railsってAjaxのアレでしょ」と
言われるキッカケとなったであろうJavascriptライブラリ(嘘)。
使う時は、こんなカンジで。
<script src="/javascripts/prototype.js" type="text/javascript"></script> <script src="/javascripts/scriptaculous.js" type="text/javascript"></script>
rspec
dchelimsky/rspec · GitHub
cucumberと同様に、BDDを支援するプラグイン。
以下のエントリーが詳しい。
参考1: RSpec をもっと理解したかったので、まとめを作りました - takihiroの日記
参考2:RSpecを使ったテストコードを読もう − @IT
attachment_fu
technoweenie/attachment_fu · GitHub
画像処理プラグインの本家みたいなもので、あまりに有名。
haml
404 · GitHub
非常に大好きなプラグイン。
hamlも良いですが、同梱されている
「Sass」というCSSフレームワークが大好きです。
hamlと言えば、id:ursmさんがあまりに有名です。
よって、以下を参照。
capistrano
404 · GitHub
デプロイツールとしてあまりに有名。
参考1:簡単&便利 Capistranoのススメ (導入編)
参考2:Capistrano 入門 - Ruby on Rails with OIAX
passenger
FooBarWidget/passenger · GitHub
チェック必須!Rails新時代の到来か?「Passenger(mod_rails for Apache)」 - MOONGIFT|オープンソース・ソフトウェア紹介を軸としたITエンジニア、Webデザイナー向けブログ
Passangerはgemからインストールするソフトウェアで、これをインストールし、必要な諸設定を行ったら後はMongrelのようなアプリケーションサーバを立ち上げることもなくRailsが利用できるようになる。
最後に
まだまだ紹介しきれませんが、今日はこれくらいで勘弁してください。
疲れた。
続きはこちら => Popular Watched Repositories · GitHub
Github => GitHub · Social Coding
おわり。
Railsのtagプラグイン「acts_as_taggable_on_steroids」がgithubに行ってた
Railsでタグといえば、「acts_as_taggable_on_steroids」が有名ですが、
こいつがgithubに行ってました。
参考:jviney/acts_as_taggable_on_steroids · GitHub
インストール
ruby script/plugin install git://github.com/jviney/acts_as_taggable_on_steroids.git
タグ用のテーブルを作成する
ruby script/generate acts_as_taggable_migration rake db:migrate
ざっくり使い方
README読めばわかる。
が、気まぐれで書いてみる。
参考:jviney/acts_as_taggable_on_steroids · GitHub
モデルでこうする
class Post < ActiveRecord::Base acts_as_taggable belongs_to :user end
基本の使い方
p = Post.find(:first) p.tag_list # [] p.tag_list = "Funny, Silly" p.save p.tag_list # ["Funny", "Silly"]
タグの追加/削除
p.tag_list.add("Great", "Awful") p.tag_list.remove("Funny")
Viewでこうする
<%= f.label :tag_list %> <%= f.text_field :tag_list, :size => 80 %>
タグの見つけ方
タグを見つけるには、「find_tagged_with」を使います。
Post.find_tagged_with('Funny, Silly')
なお、タグ検索では、基本的にOR検索となるので、
AND検索をしたい場合は、「:match_all => true」と設定します。
Post.find_tagged_with('Funny, Silly', :match_all => true)
そのほかのメソッドやオプションに関しては、以下のソースを確認のこと。
ActiveRecord::Acts::Taggable::InstanceMethods
※ 俺は見つからないんですが。。。
タグクラウドの作り方
タグクラウドを作成するために、タグの出現頻度を計算する必要があります。
Post全体のタグに関しては、「Post.tag_counts」を使用します。
また、個々のユーザのPostのためのtag_countsについては、以下のように記述します。
User.find(:first).posts.tag_counts
※ 一見、不思議ですな。
ApplicationHelperでincludeしておく。
module ApplicationHelper include TagsHelper end
以下のようにすることで、データベース内のすべてのタグの数を計算することができます。
Tag.counts
タグクラウドのサンプル
Controller:
class PostController < ApplicationController def tag_cloud @tags = Post.tag_counts end end
View:
<% tag_cloud @tags, %w(css1 css2 css3 css4) do |tag, css_class| %> <%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class %> <% end %>
CSS:
.css1 { font-size: 1.0em; } .css2 { font-size: 1.2em; } .css3 { font-size: 1.4em; } .css4 { font-size: 1.6em; }
キャッシュもできます
タグに関するリクエストが多い場合、キャッシュを使うことで負荷を軽減できます。
キャッシュを扱う場合、タグ付けする予定のモデルに対し、キャッシュ用のカラムを追加します。
なお、デフォルト値は、nullでなければなりません(null => falseとかしないように)。
class CachePostTagList < ActiveRecord::Migration def self.up add_column :posts, :cached_tag_list, :string end end class Post < ActiveRecord::Base acts_as_taggable # The caching column defaults to cached_tag_list, but can be changed: # # set_cached_tag_list_column_name "my_caching_column_name" end
ただし、通常はこれを使わず、「tag_list」を使ったほうがよいでしょう。
キャッシュ用のカラムは、タグが追加されても自動で更新されるわけではなく、
以下のように手動で行う必要があります。
# ...@postに対するtagの更新など @post.save_cached_tag_list
タグの区切り文字を変更する
config/environment.rb:
TagList.delimiter = " "
タグを使わないとき
以下を変更する。デフォルトはfalse.
Tag.destroy_unused = true
超意訳でした。おわり。