20. Web 2.0 ビギナーズバイブル
Perl, PHP, Python, Rubyなどの
Lightweight LanguageでWeb
アプリケーション開発を解説し
た書籍
Web 2.0とRuby 20
21. Lightweight Language
• Lightweight Languageとは
「脳力」を少なく消費する
• 「脳力」はプログラミング活動
中に消費される仮想的なパワ
ーである
• 消費「脳力」の総和が少ない
ことももちろん重要だが瞬間
最大消費「脳力」が大きすぎる
のもよろしくない
Web 2.0とRuby 21
22. 人間の脳への負担の少ない性質
発想→変換→表現(プログラム)
距離
発想 表現
say = quot;I love Rubyquot;
puts say
say['love'] = quot;*love*quot;
変換 puts say.upcase
5.times { puts say }
発想から表現までの変換の距離「脳力」が生産性の指標のひとつ
Web 2.0とRuby 22
23. Web APIを利用したサンプルコード
Ruby/Amazonを使った書誌情報取得例
amazon-search.rb
require 'amazon/search'
if ARGV.size != 2
puts quot;Usage: #{$0} quot;¥
quot;[Amazon Web Services AccessKey ID] [text to search for]quot;
exit
end
access_key, search_request = ARGV
req = Amazon::Search::Request.new(access_key)
req.keyword_search(search_request, 'books', Amazon::Search::LIGHT) do |book|
puts %{quot;#{book.product_name}quot; by #{book.authors.join(', ')}}
end
実行と結果
$ ruby amazon-search.rb アクセスキー quot;restful web services“
quot;RESTful Web Servicesquot; by Leonard Richardson, Sam Ruby, David Heinemeier
Hansson
『RESTful Webサービス』より抜粋
Web 2.0とRuby 23
24. 言語としてのRuby自体は
Webと直接の関係はなく
Ruby on Railsによる
波及効果が大きい
Web 2.0とRuby 24
25. Ruby on Rails
• Ruby製のWebアプリケーションフレームワーク
• 「美しいコードを書けるからRubyを選んだ」
(David Heinemeier Hansson氏)
– http://itpro.nikkeibp.co.jp/article/NEWS/20060620/241346/
• 現在のRubyブームの火付け役
http://www.rubyonrails.org/
Web 2.0とRuby 25
26. Ruby on Railsの特徴
• DRY―Don’t Repeat Yourself
(繰り返しを避けること)
• Convention over Configuration
(設定より規約)
• full-stack
Web 2.0とRuby 26
56. 属性へのアクセサ
アクセサ(メソッド)で宣言するのが慣例
public class Product { Java
private String name;
スペースの都合上、コンストラクタは
// スペースの都合上、コンストラクタは省略
public String getName() {
return name;
}
}
class Product name属性への Ruby
attr_reader :name アクセサ宣言
def initialize(name)
@name = name getter, setter と アクセサ(メソッド)の対応
end •getter … attr_reader
end •setter … attr_writer
•getter, setter … attr_accessor
Web 2.0とRuby 56
57. オープンクラス
既存のクラスを拡張可能
module Spec Ruby
module Exceptions
class ExpectationNotMetError < StandardError
end
end
module Expectations
def should_equal(expected)
raise Spec::Exceptions::ExpectationNotMetError ¥
if self != expected
end
end 既存のObjectクラスを 利用例 Ruby
end 拡張
p = Product.new(’Ruby’)
class Object p.name.should_equal(’Ruby’)
include Spec::Expectations p.name.should_equal(’Perl’)
end
Web 2.0とRuby 57