blog.takuyan.com

Ruby & Javascript & Hack

Railsに関する『知の高速道路』を無料でたくさん手に入れる方法

最近、『Rails関連の資料って、いっぱいあるんだ!』ということに気付き始めました。(遅
なので今回は、Railsは無料でガンガン学べて、無料でサービス提供できるんだよ!ってことを書こうと思います。

目次

  1. 僕が初心者のとき(どうでもいい
  2. Railsの基本を学ぶ
  3. RailsAPIで作る
  4. Github/Rubyforgeで知る
  5. Herokuで試す
  6. 無料じゃないけど買って役に立った書籍
  7. おわりに

僕が初心者のとき


僕は今年からRuby及びRailsを学びはじめたんですが、
まず最初に名著『RailsによるアジャイルWebアプリケーション開発 第2版 (大型本)』を購入しました。

RailsによるアジャイルWebアプリケーション開発 第2版

RailsによるアジャイルWebアプリケーション開発 第2版


しかし、発売日が2007/10/26と、2年程度昔のものなので、
初心者が普通に進めるといろいろ躓きまくるものでした。
(なのでホントの初心者にはオススメできませんよ。)


そのかわりに、以下で紹介するサイトを効率よく利用しましょう!

Railsの基本を学ぶ


まず、最初に見ておくべきは、RailsGuidesです。
f:id:kattton:20091111225953p:image

RailsGuides


基本的に全部英語だけど、なんとかなる。やればできる。
ここでRailsの基礎をみっちり固めよう。


なにしろ、ここではインストール方法はもちろん、
MVC主要なコンポーネントの説明などをざっくり/じっくり学ぶことができます。


また、テストや、デバッグセキュリティパフォーマンスなど、
さまざまなテクノロジについても網羅されている最高の教科書です。

RailsAPIで作る


実際にサイトを構築する際は、APIを参照しながらコードを書くことでしょう。
f:id:kattton:20091111232232p:image

Ruby on Rails Documentation

Github&Rubyforgeで知る


実装するうちに『車輪の再発明』やってる気になってきたら
(誰か作ってないかな?と思うようになったら)、GitHubや、RubyForgeに行きましょう。
f:id:kattton:20091111233624p:image


GitHub/RubyForgeには、さまざまなGemやPluginがあり、オープンソースとして先人の知恵を借りることができます。
私見ですが、GitHubのほうが人気のプラグインが多い気がします。


Githubは以前、このブログでも紹介しているので併せてご覧ください。
githubで管理されてる注目プロジェクトのまとめ - 常識という迷信

Herokuで試す


ある程度作ったら、公開したくなるもの。
そんなときには、Herokuを使いましょう。
f:id:kattton:20091111234610p:image
※ Herokuスタッフはきっと日本好き。使えばわかる。


Heroku | Cloud Application Platform


HerokuはRails専用のレンタルサーバです。
Railsアプリを公開できるスペースと、Gitリポジトリが無料で利用できます。超お得です。


Herokuに関しても以前、紹介したので割愛しますね。
HerokuとGitで、2台のPCによる共同開発をやる - 常識という迷信

買って一番役に立った書籍


上記はすべて無料で手に入りますが、書籍もやはり有用で、
私が買って一番役に立ったのは『Railsレシピブック 183の技』ですね。ダントツです。

Railsレシピブック 183の技

Railsレシピブック 183の技


僕の本は、ルーティングのページにコーヒーがこぼれて黒ずんだり、
カバーも無くて手垢だらけですが、この本が一番使えると思います。

おわりに


こういうドキュメントってしばらくすると『いまさら言われなくとも…』とか思うんですが、
初心に返ってみると、『あの頃、見つけてればなぁ』と思ったりするもの。


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

「やる気が出ません。助けてください。」というときが必ずあると思います。
というか今の私です。


で、さくっと読めて、やる気の出るエントリーを、ざっくりまとめました。
明日からの生活に役立てようと思います。

気分転換系


笑いはカラダにいい影響があるとかなんとか。


覚えとけ、ファッションは死ぬほど大事だぞ!!! | オモコロ特集


おわり。


よし。仕事しよう。

CSSのプロパティの順序をいつも忘れる

似非WEBデザイナーですので、プロパティの値の順序と、
上下左右の対応がいつも不安になります。

padding: 0 3px 2px 1px;

とかあっても、パッと思い出せません。未熟者です。
ということで、備忘録。


現場のプロから学ぶXHTML+CSS

現場のプロから学ぶXHTML+CSS

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」は本家リポジトリから分岐させて自分好みのリポジトリを作ること。


参考1:Git入門 - ドキュメント
参考2: とっても優しい github の使い方 - ¬¬日常日記

では、まとめ一覧

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>


本家:script.aculo.us - web 2.0 javascript

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さんがあまりに有名です。
よって、以下を参照。


参考:ursmの日記
参考: 日本Ruby会議2009でHamlとSassについて話しました - ursmの日記

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


超意訳でした。おわり。