書籍概要

WEB+DB PRESS plus

Ruby徹底攻略

著者
発売日
更新日

概要

WEB+DB PRESS plus 徹底攻略シリーズでは,Webアプリケーション開発のためのプログラミング技術情報誌『WEB+DB PRESS』の掲載記事をテーマ別に厳選し,再編集してお届けします。『Ruby徹底攻略』では,Rubyの導入や基本文法の解説から最新バージョン2.1の新機能,Ruby on Rails 4の機能解説やテスト,RubyGemsやRubyにおける自動化手法,Rack,Sinatra,mruby,RubyMotionなど,Rubyをさらに使いこなしたい人にとって有用でかつ最新のノウハウを一冊にギュッとまとめました。

巻頭企画
はじめてのRuby
Rubyの哲学,導入方法,オブジェクト指向

『達人プログラマー』の著書で知られるDave Thomas氏は,2005年に「今年は,Rubyの年になる」と予想しました。それから10年近くが経過した2014年においても,その勢いはとどまるところがありません。今こそ「楽しさ」(=ストレスのないプログラミング)をモットーに作られたプログラミング言語Rubyを使い始めるときです。本特集では,Rubyを使ったことがない人に向けて,初歩から順に解説していきます。

特集1
Ruby 2.1最深動向
主要コミッタが明かす新機能と高速化の舞台裏

2013年12月25日,Ruby 2.1がリリースされました。Ruby 2.1は,1.9や2.0.0との互換性が高く安心して導入できると同時に,多数の機能が追加され,処理性能も向上した,夢のようなリリースです。本特集ではこのRuby 2.1について,実際に開発を行った主要コミッタ陣が徹底解説していきます。Ruby作者のまつもとゆきひろさんによる特別寄稿も掲載しています。

特集2
詳解Rails 4
「史上最高」のバージョンを徹底紹介!

2013年6月,Ruby on Railsのバージョン4がリリースされました。約3年ぶりとなるメジャーバージョンアップです。作者のDHH(David Heinemeier Hansson)は,このバージョン4を「史上最高のRails」と自ら絶賛してやみません。そこで本特集では,今後のWeb開発の行方を占う,新APIからパフォーマンスの改善,セキュリティの強化,さまざまなGem,チュートリアルまで徹底的に詳解しながら,その奥に隠された狙いにも迫っていきます。

特集3
Rails 4テスト最前線
継続的なメンテナンスを可能にするツールと手法

Ruby on Rails 4の正式リリースから約1年が経ちました。Railsはテスティングツールにも先進的なものが多く,ユニットテスト(RSpec),エンドツーエンドテスト(Feature Specs,Capybara),テストデータのセットアップ(factory_girl),スタブ/モック(RR)など,実にさまざまなものがあります。本特集では,シンプルでわかりやすくメンテナンスしやすいクリーンなコードをアジャイルに開発するために,Rails 4時代のテスティングツールとテスト手法を基礎から解説していきます。

特集4
Rubyのエコシステムを支える
パッケージマネージャ

RubyGemsはRubyのパッケージマネージャで,RubyのさまざまなライブラリをWeb経由でインストールできます。Ruby 1.9からは標準で添付されるようになり,Rubyを使っている人にとっておなじみのツールになっています。本特集では第1章でRubyGemsの作り方や公開方法,またその際に必要なドキュメントの書き方について解説します。第2章ではRubyGemsのデータを解析して現在どのようなツールがよく使われ,注目されているのかを明らかにし,RubyGemsを通してRubyの世界を見ていくことにします。

こんな方におすすめ

  • Rubyの学習を本格的に始めたい人
  • Rubyの最新動向を押さえたい人
  • 開発現場でRuby on Railsを使いこなしたい人
  • Rubyで開発する際に便利なツールを知りたい人

目次

巻頭企画
はじめてのRuby
Rubyの哲学,導入方法,オブジェクト指向

  • 第1章:Rubyはじめの一歩
    ストレスフリーのプログラミング……角 征典
  • 第2章:Rubyのオブジェクト指向
    メソッド,クラス,名前空間とモジュール……角 征典
  • 第3章:Rubyの便利な機能
    コレクション,ブロック,メタプログラミング……角 征典

特集1
Ruby 2.1最深動向
主要コミッタが明かす新機能と高速化の舞台裏

  • 第1章:Ruby 2.1とは何か
    主な変更点,保守ポリシー,バージョン表記の変更……成瀬 ゆい
  • 第2章:文法の改善
    なぜ必要だったのか,どのような議論を経たのか……そらは(福森 匠大)
  • 第3章:数の改善
    新しい数値リテラル,大きな数,正確な数……田中 哲
  • 第4章:ガベージコレクションの改善
    Ruby向けに改良した世代別GCの導入……笹田 耕一
  • 第5章:速度の改善
    RailsアプリケーションはRuby 2.1でどのくらい速くなるのか……村田 賢太
  • 特別寄稿:Rubyの「これまで」と「これから」……まつもと ゆきひろ

特集2
詳解Rails 4
「史上最高」のバージョンを徹底紹介!

  • 第1章:第1章 Rails 4とは何か
    どこから来てどこへ行くのか?
    ……松田 明,後藤 大輔
  • 第2章:さらに洗練されたRails 4
    「史上最高のRails」たらしめる数々の改善
    ……松田 明,後藤 大輔
  • 第3章:実行も開発も高速なRails 4
    Asset Pipeline,Turbolinks,ActionController::Live
    ……松田 明,後藤 大輔
  • 第4章:鉄壁のセキュリティを支えるしくみ
    新機能StrongParametersでアプリケーションを守る
    ……松田 明,後藤 大輔
  • 第5章:Rails 4時代を彩るGem
    今と未来を担う7つの宝石
    ……松田 明,後藤 大輔
  • 第6章:Rails 4実践チュートリアル
    Railsプログラミングの達人への第一歩
    ……松田 明,後藤 大輔

特集3
Rails 4テスト最前線
継続的なメンテナンスを可能にするツールと手法

  • 第1章:Railsテスト環境の現在
    日進月歩のツールからどれを選ぶか
    ……浦嶌 啓太,高橋 健一,柴田 博志
  • 第2章:RSpecによるユニットテスト[基本編]
    モデル,コントローラ,ビュー,ヘルパーごとのテスト
    ……浦嶌 啓太,高橋 健一,柴田 博志
  • 第3章:RSpecによるユニットテスト[クリーンコード編]
    factory_girlでテストデータ,RRでスタブ/モック
    ……浦嶌 啓太,高橋 健一,柴田 博志
  • 第4章:Feature Specsによるエンドツーエンドテスト
    画面のテストはCapybaraにおまかせ
    ……浦嶌 啓太,高橋 健一,柴田 博志
  • 第5章:テストを支えるツール群
    CI,自動実行,並列実行,ロード時間短縮,コードメトリクス
    ……浦嶌 啓太,高橋 健一,柴田 博志

特集4
速習RubyGems
Rubyのエコシステムを支えるパッケージマネージャ

  • 第1章:RubyGemsとの上手な付き合い方
    gemの作り方と公開手順,ツールとの連携……近藤 宇智朗
  • 第2章:データで見るRubyGemsの世界
    増え続けるgemの現状と,それを支える人々と環境……大和田 純,白土 慧

一般記事

  • Rubyのための自動化
    Rakeでコマンド実行,Capistranoでデプロイ……原 悠(yhara)
  • Sinatraによる簡単アプリケーション開発
    限りなくシンプルなフレームワーク……原 悠(yhara)
  • Rack入門
    サーバとフレームワークをつなぐインタフェース……近藤 宇智朗
  • Webエンジニアのためのmruby入門
    次世代の「組込み」Ruby……近藤 宇智朗
  • RubyMotion入門
    RubyでネイティブiOSアプリ!……伊藤 直也

サポート

ダウンロード

■ご注意
  • 本コーナーは,本書記事参考用資料としてのご提供を目的としております。
  • 本書記載の内容およびサポートサイトで公開しているサンプルコードに基づく運用の結果について,記事の筆者,プログラムの作者/提供元,(株)技術評論社は一切の責任を負いかねます。ご自身の責任のもと,ご使用ください。
  • 各サンプルファイル/ソースコードには,個別に,ライセンスやREADMEファイルなどで注意事項/制限事項が添付されている場合がございます。その場合,該当のライセンス,注意事項/制限事項を優先して適用とさせていただきますので,ダウンロード後,内容をご確認ください。

巻頭企画「はじめてのRuby」

特集2「詳解Rails 4」

特集3「Rails 4テスト最前線」

特集4「速習RubyGems」

一般記事「Rubyのための自動化」

一般記事「Sinatraによる簡単アプリケーション開発」

一般記事「Rack入門」

一般記事「Webエンジニアのためのmruby入門」

一般記事「RubyMotion入門」

補足情報

特集3「Rails 4テスト最前線」の補足情報

(2014年6月26日更新)

特集3「Rails 4テスト最前線」は誌面とサンプルコードで対応バージョンが以下のように異なります。

  • 誌面の動作確認に使用したバージョン:RSpec 3.0.0 rc1
  • サンプルコードが対応するバージョン:RSpec 3.0.0

本特集はRSpec3を対象とした記事ですが,執筆時の最新バージョンRSpec 3.0.0 rc1により動作確認を行っています。RSpec 3.0.0 rc1以降に発生した変更によってコードが動作しない場合があり,サンプルコードはRSpec 3.0.0対応のものとしています。

お手数ではございますが,RSpec 3.0.0 rc1対応のサンプルコードtoku3_Test.zipをダウンロードされた方は,RSpec 3.0.0対応のサンプルコードtoku3_Test_new.zipを再度ダウンロードしていただくようお願いいたします。

また,誌面を読み進める際やサンプルコードを実行する際は,以下の点についてご留意いただくようお願いいたします。

Gemfileでのバージョン指定方法の変更

Gemfile内でバージョンを'3.0.0.rc1'と指定している個所を'3.0.0'と変更します。

テストコード全般の変更

誌面に登場する以下の記述(RSpec 3.0.0.rc1)は

require 'spec_helper'

RSpec 3.0.0では以下のように変更しないと動作いたしません。

require 'rails_helper'

テスト実行時の警告の抑制

「rake spec」などのコマンドを実行する際,大量の警告メッセージが出力される場合があります(警告は出力されますが動作はします)。その場合は以下のような対応を行ってください。

P.99左段「$ rails generate rspec:install」コマンドで生成される「.rspec」というファイルに「---warnings」という記述がある場合はその行を削除してください。

詳しくはhttps://github.com/rspec/rspec-core/issues/1571をご参照ください。

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2014年6月26日更新)

目次 巻頭企画の特集タイトル

Rubyはじめの一歩
はじめてのRuby

目次 巻頭企画の第1章タイトル

はじめてのRuby
Rubyはじめの一歩

特集1「はじめてのRuby」
P.1 特集トビラのリード文

第1章第3章ではRubyで用意されている便利な機能について取り上げます。
削除

特集1「はじめてのRuby」
第2章 「Rubyの便利な機能」
P.19 下から3行目の見出し

nstance_eval
instance_eval

特集3「Rails 4テスト最前線」
第2章 「RSpecによるユニットテスト[基本編]」
P.103 「記事の一覧表示画面のテスト」内リストの1行目

replace:
削除

P.104 「投稿日を表示するヘルパーのテスト」内リストの11~15行目

    it {
      expect(rendered).to eq(
        "Hello"
      )
    }
    it { 
      expect(helper.posted_on(@article)).to eq 
        "#{@now.year}/#{@now.month}/#{@now.day}"
    }

第4章 「Feature Specsによるエンドツーエンドテスト」
P.113 「Feature Specsを書き始める前の準備」内のリスト下から2行目

gem 'rspec-rails'
gem 'rspec-rails', '3.0.0.rc1'

P.113 「Feature Specsを書き始める前の準備」左段下から2行目

bundle update, '3.0.0.beta2'
bundle update

P.116 「ブログアプリケーションのFeatures Specs」内リスト7~8行目

:with: "テスト用のタイトル"
:with: "テスト用のエントリ"
with: "テスト用のタイトル"
with: "テスト用のエントリ"

P.116 「プロダクトコードの実装」内のリスト

  def new
    @article = Article.new
  end

  def create
    @article = Article.new(params[:article])

    if @article.save
      redirect_to articles_path
    else
      render :action => "new"
    end
  end
  def new
    @article = Article.new
  end

  def create
    @article = Article.new(
      params[:article].permit(:title, :body)
    )

    if @article.save
      redirect_to :articles
    else
      render action: 'new'
    end
  end

商品一覧