Railsの教科書

top

はじめに

Rubyは開発者を幸せにする言語。

もっと多くの開発者を Ruby で幸せにしたい。

- matz

ブラウザを使って買い物をする、SNSを読み書きする、料理のレシピを検索する。インターネット上のWebアプリは私たちの生活に深く根ざしています。それらを使うだけではなくて、どうやって動いているか知りたい、自分でも作ってみたい。本書はそんな想いを叶えるための第一歩を踏み出すための資料です。

本書の目的

本書の目的の1つはWebアプリ作成のための便利なフレームワークRuby on Rails(以下、Railsと略します)を使い、写真や文書を投稿できるミニブログアプリを題材として実際に作って動かし、その仕組みを学ぶことです。Webアプリケーションがどういうものなのか、何ができるのか、どのような仕組みで動いているのかを説明していきます。できるだけ簡単なサンプルアプリを用意し、その仕組みを説明することで、RailsおよびWebアプリの基礎を説明していきます。

また、本書の目的のもう1つは、世の中にあるたくさんの情報を読むために前提となる基礎知識を身につけることです。Railsを学ぶための良い資料として、RailsGuidesRailsTutorial があります。本書を読み進めると、これらの資料を読み進めるための基礎知識が身についてきます。実践的なRailsアプリを作るために必要なさまざまな資料を読むための入り口として本書はあります。

本書の対象読者

本書が対象としている読者は以下のような方々です。

プログラミングは初めての方も安心してください。プログラミングの世界へようこそ!本書は筆者が作成した一橋大学社会学部での半期分の講義資料をもとに書いています。講義では初めてプログラムを書く学生さんが多数派でした。学生さんたちがつまづいた箇所について補足をして、資料を加筆していきました。プログラミングが初めての方に読んでいただけるように、丁寧に説明をしていきます。

プログラミングの世界、Webの世界は広大です。本書ではHTML(ブラウザで表示するための言語)とCSS(HTMLと一緒に使う、装飾するための言語)については最低限の説明のみにとどめています。HTMLとCSSについて学びたい方は、たとえば以下の情報が分かり易いです。

もしもあなたがデザイナーであり、HTMLコーディングはおてのもの、という場合は大きなアドバンテージがあります。本書の知識と組み合わせることで鮮やかなWebアプリを作ることができるようになるでしょう。

また、プログラミングが初めての方で本書を読んで「動くことは分かったけど、そもそもプログラムって何?」「プログラムを書くときに、どうやって考えればいいんだろう?」「プログラムを読んで理解はできるが、自分で考えて書くことができない」と感じた方は、以下の本が参考になるのではと思います。プログラミングとは何か、プログラマはどうやって思考するのかといった話題について、分かり易い例をたくさん出して説明しています。

もしもあなたが他の言語でプログラミングをした経験があれば、これも大きなアドバンテージです。特にJavaScript(ブラウザ上で広く使われているプログラミング言語)の経験がある方は、本書の知識をつかってインタラクティブで格好良いWebアプリを作ることができるようになるでしょう(本書ではJavaScriptについては説明しません)。Rubyの経験がある方は、本書の内容を越えた範囲について、いままでの知識をつかって早く成長することができるでしょう。

Railsプログラミングを講義で教えたい方へ。本書はwebアプリがどういうものなのかを実際に手を動かしながら学ぶ構成になっています。実際の講義資料を元に書いており、講義はプログラミングが初めての学生さんらに向けて1回90分の講義約10回で行いました。その後、3回の講義時間を使って自由にwebアプリを作る実習を行ったところ、彼ら彼女らは自分で考えた実用的であったり、たのしさにあふれたりする、独創性のあるプログラムを作りあげて発表してくれました。本書はできるだけ易しく説明を進めますが、Rubyのことやshellのこと、プログラミングでしか使わない記号など、つまづいた際にはサポートの手を差し伸べられる環境を作っておくと順調に前へ進めるようになります。

一方で、本書の対象から外れるのは以下のような方です。

本書はRailsの入門的な本やサイトを読んで難しいと感じた方に、そこまでの知識を埋められるように書いています。逆に言えば、他の入門書を読める力があれば、本書は易しすぎると感じるかもしれません。具体的には、RailsTutorial を読み進められるようであれば、本書から得られるものは少ないかもしれません。

書式例

本書では以下のようにコードやターミナルコマンドを表現します。

rubyおよびrailsコードの書式例

puts "Hello world!"

差分がある場合の書式例

class HelloController < ApplicationController
  def index
-   @time = Time.current
+   @time = 1.day.ago
  end
end

-, +印が付いている場合はその行について変更を行うことを示します(-, + がついていない部分はそのままです)。-で始まる行を削除し、+で始まる行を追加してください。

ターミナルコマンドの書式例

$ rails s

先頭の$マークはターミナルを表す印です。入力する必要はありません。

ターミナルの実行結果の書式例

=> Booting Puma
=> Rails 5.1.2 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.8.2 (ruby 2.4.1-p111), codename: Sassy Salamander
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

サンプルコード

本書で使うサンプルコードは以下に置いてあります。

https://github.com/igaiga/rails_textbook_sample

開発環境

本書はRuby 2.4.1、Rails 5.1.2で動作確認をしています。1

本書の内容を実行する場合にはRubyおよびRailsの開発環境を作る必要があります。開発環境として、3つの方法を書きました。どれか1つを選んで環境を作ってみましょう。簡単に開発を始めたい場合はクラウド開発環境をお勧めします。ローカルに開発環境を作る場合と比べて、トラブルなく開発をはじめることができます。

また、ブラウザはお好きなものをご利用いただけますが、途中のデバッグの箇所で Chrome の機能を例にして説明していますので、Chromeを使うと分かり易いです。

ブラウザだけで開発できるクラウド開発環境 - Cloud9

Cloud9 はブラウザだけでRailsアプリ開発を行うことができます。セットアップはCloud9へ会員登録を行うだけです。有料プランもありますが、本書の内容で開発を行う範囲では無料プランの範囲で利用することができます。マシンを変えても同じ環境で開発でき、ブラウザが使える環境であればどの端末からでも開発できるというメリットがあります。一方でネットに接続していないと開発できないことや、Cloud9がサービスをやめてしまうと継続して使えないというデメリットもあります。

利用には会員登録が必要です。会員登録後、ワークスペース(開発環境)を作成します。その際のテンプレートとしてはRails Tutorialを選ぶのがお勧めです。画面は3ペインのIDEになっていて、ファイルエクスプローラ、ファイルエディタ、ターミナルを利用することができます。ターミナルからはgitコマンドも利用できるので、githubでソース管理することも可能です。

2017年6月現在でCloud9に最初からインストールされているRubyはバージョン2.3.0です。このバージョンのRubyで本書の内容を実行することができます。もしも最新バージョンのRubyを利用したい場合は、後述の手順で先にRubyをバージョンアップしてからRailsをインストールしてください。

最初にrailsをインストールします。

$ gem i rails

rails -vコマンドでインストールしたrailsのバージョンが表示されればインストール成功です。結果に表示されるバージョンの数字は、実行時の最新バージョンになります。

$ rails -v
Rails 5.1.2

ローカルでの開発と違うのは、rails sコマンド(rails serverの略)と、そこへのアクセス方法です。rails sコマンドを実行する際は、以下のように-b, -pオプションを指定する必要があります。

$ rails s -b $IP -p $PORT

また、起動したWebサーバへのアクセスは、ローカルに環境を作った場合と異なり、上部メニューにあるPreview - Preview Running Applicationからアクセスします。

Railsアプリはどこのフォルダへ置いても動作しますが、workspaceフォルダ以下に置くと画面左側のWorkspace欄にフォルダツリーが表示されて便利です。本書ではmy_web_appsフォルダへRailsアプリを作成していきますので、これをworkspaceに読み替えるのがお勧めです。

ここまででセットアップは完了です。慣れている方へ向けて、以下にRubyのバージョンアップ方法を書きますが、少し難しい内容になりますので、はじめての方はここまでの内容で完了して初期状態で利用するのをお勧めします。

Cloud9で最新版のRubyをインストールする手順

ここからはCloud9で最新版のRubyを使う方法を説明します。Cloud9はRubyの管理にrvmを利用しているので、rvmでの通常の手順でバージョンアップ可能です。2

$ rvm get stable
$ rvm install 2.4.1
$ rvm --default use 2.4.1

Rubyを新規インストールした場合は、そのあとでgem i railsコマンドを実行してrailsをインストールします。

ローカルに開発環境を作る - Macの場合

自分のMac上に開発環境を作る方法です。

開発環境づくりに必要なxcodeツールをインストールします。

$ xcode-select --install

homebrewをインストールします。homebrewはMacでさまざまな便利なものをインストール、管理するためのツールです。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

homebrewを使ってrbenvをインストールします。rbenvはRubyをインストールして管理するための道具です。

$ brew update
$ brew install rbenv ruby-build
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ echo 'export PATH="$HOME/.rbenv/shims:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

rbenvを使ってRubyをインストールします。

$ rbenv install 2.4.1

installしたRubyを利用するように設定します。

$ rbenv global 2.4.1

以上でRubyのインストールは完了です。続いて、インストールしたRubyを使ってRailsをインストールします。

$ gem i rails

確認のため、rails -vコマンドを実行してみましょう。

$ rails -v
Rails 5.1.2

このようにインストールしたrailsのバージョンが表示されればインストール成功です。結果に表示されるバージョンの数字は、実行時の最新バージョンとなるため異なることがあります。

ここまででRubyとRailsの開発環境構築ができました。

プログラムを入力する道具であるエディタは、好みのものがあればそれを利用してください。特にない場合は Atom をお勧めします。Atomは無料で利用することができます(ライセンスはMITライセンスです)。

ローカルに開発環境を作る - Windowsの場合

Windowsの場合は RailsInstaller を利用することで環境を構築することができます。

2017年6月現在の最新であるバージョン3.3.0には問題があり、インストール後に若干の修正する必要があります。前のバージョンである3.2.1ではこの問題は起こらないため、こちらを利用しても問題ありません。バージョン3.2.1ではRubyのバージョンが2.2.6と古いバージョンになりますが、Railsは最新バージョンの5.1.2を使うことができ、本書の内容もそのまま実行可能です。後述の方法で、どちらかのバージョンを選んでインストールしてください。

もしも想定通り動作しない場合は、上記のCloud9を利用することも検討してみてください3

プログラムを入力する道具であるエディタは、好みのものがあればそれを利用してください。特にない場合は Atom をお勧めします。Atomは無料で利用することができます(ライセンスはMITライセンスです)。

RailsInstallerバージョン3.2.1を使う手順

バージョン3.2.1を使う手順を説明します。インストーラ(rails_installer3.2.1.exe)をダウンロードし、指示に従い実行していきます。オプションなどは初期状態のままで問題ありません。

ターミナルの起動はWindowsのアプリケーション選択から "Command Prompt with Ruby and Rails" を選んでください。通常のコマンドプロンプトを起動すると、環境変数の設定が行われずにrailsコマンドやrubyコマンドを使えない場合があります。

$ gem update rails --no-document

確認のため、rails -vコマンドを実行してみましょう。

$ rails -v
Rails 5.1.2

このようにインストールしたrailsのバージョンが表示されればインストール成功です。結果に表示されるバージョンの数字は、実行時の最新バージョンとなるため異なることがあります。

RailsInstallerバージョン3.2.1を使う開発環境づくりはこれで完了です。以下の「RailsInstallerバージョン3.3.0を使う手順」は読み飛ばして構いません。

RailsInstallerバージョン3.3.0を使う手順

バージョン3.3.0を使う手順を説明します。バージョン3.3.0を使う場合は、インストール後に簡単な修正作業を行う必要があります。インストーラ(rails_installer3.3.0.exe)をダウンロードし、指示に従い実行していきます。オプションなどは初期状態のままで問題ありません。

Windowsのアプリケーション選択から "Command Prompt with Ruby and Rails" を選び、ターミナルを起動してください。通常のコマンドプロンプトを起動すると、環境変数の設定が行われずにrailsコマンドやrubyコマンドを使えない場合があります。

ターミナルで以下のコマンドを実行します。

$ rails -v

「指定されたパスが見つかりません」と表示される場合があります。これはインストーラがrailsコマンドのパスを正しくセットアップできていないときに起こりますが、簡単に直すことができます。以下のコマンドを実行してください。

$ gem install rails bundler --no-document

作業完了後に、もう一度以下のコマンドを実行してください。

$ rails -v
Rails 5.1.2

このようにインストールしたrailsのバージョンが表示されればインストール成功です。結果に表示されるバージョンの数字は、実行時の最新バージョンとなるため異なることがあります。

もしもRailsのバージョンが5.1よりも小さい場合は、以下のコマンドを実行することでバージョンアップできます。

$ gem update rails --no-document

開発環境づくりはこれで完了です。


  1. 2017年7月1日現在、Rubyの最新バージョンは2.4.1、Railsの最新バージョンは5.1.2です。 

  2. これでうまくいかない場合はrvm公式サイトhttps://rvm.io/rvm/upgradingに掲載されている方法(\curl -sSL https://get.rvm.io | bash -s stable; rvm reload)を試してからもう一度実行してみてください。 

  3. Railsのバージョンはコマンドプロンプトから gem update rails コマンドで最新版にバージョンアップすることが可能ですが、Rubyのバージョンを上げるのは難しいためパッケージに入っているRubyをそのまま使うのが良いでしょう。最新バージョンのRubyおよびRailsを利用したい場合は、上記のCloud9の利用をお勧めします。