書籍概要

かんたんIT基礎講座

ゼロからわかる Ruby 超入門

著者
発売日
更新日

概要

本書は,プログラミングが初めての方へ向けた,プログラミング言語Rubyの入門書です。本業のRubyプログラマーを続けながら,一橋大学の社会学部でプログラミングを初めて学ぶ学生へ向けて講義をした筆者が,その経験をもとに,図を多く使って分かりやすく説明し,かつ実用的で役立つ内容を選びました。

Rubyはやりたいことを簡潔に書ける言語です。学習の際に余計なことを考える必要がなく,学ぶ内容に集中できます。これは初めて学ぶ言語として最高の特徴と言えます。実際の使用例も多く,クックパッドなどのたくさんのRubyで書かれたWebサービスたちが世界で多数稼働しています。

この本の対象読者として,プログラミングをこれから始めたい方,他の言語を使ったことがあるがRubyは初めての方,Railsを学んだのでその基礎であるRubyを学びたい方,に当てはまる方は最適です。

本書ではプログラミングを基礎から学び,問題の解決方法を身につけ,分からないことを調べる手段を得ることができます。また,本書のあとにRailsを学びたい方のために,Railsで使う基礎知識は可能な限り多く選んで書いています。

本書は執筆時の最新バージョンRuby2.5で説明し,Ruby2.3以降で動作が違う時は注釈を入れています。

こんな方におすすめ

  • はじめてRubyを学ぶ人

目次

CHAPTER 1 環境をつくる

  • 1-1 Rubyとは
    • Rubyの特徴
    • Rubyが使われているところ
    • Rubyの歴史
  • 1-2 Windows環境へRubyをインストールする
    • RubyInstallerをダウンロードする
    • インストーラを実行する
    • Rubyが実行できることを確認する
  • 1-3 Mac環境のRubyを確認する
    • Rubyが実行できることを確認する
  • 1-4 エディターをインストールする
    • Visual Studio Codeとは
    • Visual Studio Codeをインストールする
    • メニューを日本語にする
    • Visual Studio Codeの使い方
    • Visual Studio Codeの色を変える
    • Visual Studio Codeの高度な使い方
  • 1-5 プログラムを書いて実行する
    • プログラムを実行する手順を確認する
    • プログラムを保存するフォルダをつくる
    • エディターでプログラムを書く
    • プログラムをファイルに保存する
    • コマンドプロンプトでプログラムを保存したフォルダへ移動する
    • コマンドプロンプトでプログラムを実行する
    • 基本的なコマンド
  • 1-6 エラーが起こったときは
    • プログラムの打ち間違いを確認する
    • ファイル名の入力誤りを確認する
    • rubyコマンドが実行できない

CHAPTER 2 かんたんなプログラムを書く

  • 2-1 計算する
    • 数値を表示する
    • 整数を計算する
    • 小数を計算する
    • 累乗と剰余を計算する【Challenge】
  • 2-2 文字列を表示する
    • 文字列を表示する
    • 文字列を足し算する
    • 数値と文字列の違いは?
    • 数値と文字列を足すとどうなる?
    • 文字列を数値に変換する
  • 2-3 オブジェクトと変数を理解する
    • オブジェクトとは
    • 変数とは
    • 変数は便利!
    • 文字列に計算結果を埋め込む
    • 変数の名前のルールを確認する
    • キーボードから値を入力する【Challenge】
  • 2-4 プログラムにコメントを書く
    • コメントにする
    • 行の途中からコメントにする
    • 空行は無視される
    • 数行に渡ってコメントにする【Challenge】
  • 2-5 対話的に実行する
    • irbの使い方
    • プログラムの途中で一時停止してirbを使う
  • 2-6 プログラムの間違いを見つけて直す
    • pメソッドを使って変数の中身を表示させる
  • 2-7 エラーメッセージを読み解く
    • エラーメッセージの読み方
    • いろいろなエラーメッセージを体験する

CHAPTER 3 処理の流れを変える

  • 3-1 条件を判断する
    • プログラム風の日本語を書く
    • 大きさを判断する
    • 等しいことを判断する
  • 3-2 条件を満たしたときに処理をする
    • if - 条件を満たすとき
    • if - 条件を満たさないとき
    • unlessと!【Challenge】
  • 3-3 条件を満たさないときにも処理する
    • 条件を満たしたとき,満たさないときの2つに分岐する
    • 条件を満たさないときの処理 - else節
    • elsifと,組み合わせたif【Challenge】
  • 3-4 複数の条件を組み合わせる
    • どちらかの条件を満たすとき - 「aまたはb」
    • 両方の条件を満たすとき - 「aかつb」
    • ifの条件に書けるもの
  • 3-5 複数の道から1つを選んで分岐する
    • 複数の道から1つを選んで分岐する - case
    • 複数の道に合致するものがないときの処理を書く
  • 3-6 なんども繰り返す
    • 決まった回数だけ繰り返す - timesメソッド
    • do endの代わりに{}を使う
    • 条件付き繰り返し while【Challenge】

CHAPTER 4 まとめて扱う - 配列

  • 4-1 オブジェクトをまとめて扱う
    • 配列とは
    • 配列をつくる
    • 変数に代入して配列に名前をつける
  • 4-2 要素を取得する
    • 配列の要素を取得する
    • 「何もない」ことを表すオブジェクト nil
  • 4-3 要素を追加・削除する
    • 要素を追加する
    • 要素を削除する
    • 配列を足し算する
    • 配列を引き算する
  • 4-4 配列を繰り返し処理する
    • 配列を繰り返し処理する
    • 繰り返しを途中で終わらせる - break
    • 繰り返しの次の回へ進む - next
    • 範囲を指定して繰り返す【Challenge】

CHAPTER 5 便利な道具を使う

  • 5-1 配列の便利なメソッドを使う
    • 配列の要素数を得る - sizeメソッド
    • 配列の全要素の合計を得る - sumメソッド
  • 5-2 メソッドの機能を調べる
    • リファレンスマニュアルとは
    • メソッドの名前から機能を調べる ー uniqメソッド
    • 末尾に!がつくメソッド
    • ブロックを渡せるメソッド【Challenge】
  • 5-3 機能からメソッドを探す
    • ランダムに要素を取得する - sampleメソッド
  • 5-4 配列の要素を並び換える
    • 配列の要素を順に並び換える - sortメソッド
    • 配列の要素を逆順にする
  • 5-5 配列と文字列を変換する
    • 配列中の文字列を連結する - joinメソッド
    • 文字列を分割して配列にする - splitメソッド
  • 5-6 配列の各要素を変換する
    • 配列の各要素を変換した配列を作る - mapメソッド
    • 特定のブロックには短い書き方がある【Challenge】

CHAPTER 6 組で扱う - ハッシュ

  • 6-1 オブジェクトを組で扱う
    • ハッシュ(Hash)とは
    • シンボル(Symbol)とは
    • ハッシュには2つの書き方がある
    • 変数に代入してハッシュに名前をつける
    • ハッシュから値を取得する
  • 6-2 キーと値の組を追加・削除する
    • ハッシュへキーと値の組を追加する
    • ハッシュは同じキーを複数持てない
    • 存在しないキーを指定したとき
    • 2つのハッシュを1つにまとめる
    • ハッシュからキーと値の組を削除する
  • 6-3 ハッシュの要素を繰り返し処理する
    • ハッシュを繰り返し処理する

CHAPTER 7 小さく分割する - メソッド

  • 7-1 メソッドを作って呼び出す
    • メソッドとは
    • メソッドを定義する
    • メソッドを呼び出す
    • メソッドの戻り値とは
  • 7-2 メソッドへオブジェクトを渡す
    • 引数を使ってオブジェクトを渡せるメソッドを定義する
    • 2つ以上の引数を持つメソッドを定義する
    • メソッドを途中で終わらせる - return
  • 7-3 引数の便利な機能を使う
    • 引数を省略したときのデフォルト値
    • 引数の順番を変えられるキーワード引数
    • キーワード引数でのデフォルト値
  • 7-4 変数には見える範囲がある
    • ローカル変数とスコープ

CHAPTER 8 部品をつくる - クラス

  • 8-1 クラスとは
    • オブジェクトはクラスに属している
    • オブジェクトを作る2つの方法
  • 8-2 クラスを作る
    • クラスを作る
    • クラス名の規則
  • 8-3 オブジェクトが呼び出せるメソッドを作る
    • クラスにメソッドを定義する
    • クラスに定義したメソッドを呼び出す
    • レシーバ
    • クラスに引数を受け取るメソッドを定義する
    • クラスの中で同じクラスのメソッドを呼び出す
    • selfを使ってレシーバを調べる【Challenge】
  • 8-4 オブジェクトにデータを持たせる
    • インスタンス変数
    • インスタンス変数はオブジェクトごとに存在する
    • インスタンス変数を取得するメソッドを作る
    • インスタンス変数へ代入するメソッドを作る
    • instance_variablesメソッド【Challenge】
  • 8-5 オブジェクトが作られるときに処理を行う
    • initializeメソッド
    • インスタンス変数の初期値を設定する
    • initializeメソッドへ引数を渡す
  • 8-6 クラスを使ってメソッドを呼び出す
    • インスタンスメソッドとクラスメソッド
    • クラスメソッドを定義する
    • 同じクラスのクラスメソッドを呼び出す
  • 8-7 継承を使ってクラスを分ける
    • 継承
    • Rubyが用意しているクラスたちの継承関係
    • 親子のクラスで同名のメソッドを作ったときの動作
    • 親クラスのメソッドを呼び出す - super
  • 8-8 メソッドの呼び出しを制限する
    • クラスでのメソッド定義の中だけで呼び出せるメソッドを作る
    • privateとpublic
    • privateなクラスメソッドを定義する【Challenge】

CHAPTER 9 部品を共同利用する - モジュール

  • 9-1 複数のクラスでメソッドを共同利用する
    • メソッドを共同利用する手順
    • モジュールを作る
    • モジュールにメソッドを定義する
    • モジュールのメソッドをクラスで使う - include
    • モジュールは複数のクラスで共同利用できる
    • モジュールのメソッドをクラスメソッドにする - extend【Challenge】
  • 9-2 モジュールのメソッドや定数をそのまま使う
    • モジュールにクラスメソッドを定義する
    • Rubyが用意しているモジュールを使う
    • 名前空間
  • 9-3 部品を別ファイルに分ける
    • 別ファイルのクラスやモジュールを読み込む
    • includeとrequire_relativeの違い【Challenge】

CHAPTER 10 Webアプリをつくる

  • 10-1 ライブラリを使う
    • Gemとは
    • Gemの使い方
    • Bundlerとは
    • Bundlerをインストールする
    • GemfileにインストールするGemを書く
    • bundle installコマンドでインストールする
    • bundle updateコマンドでGemをバージョンアップする
    • bundle execコマンドで指定したバージョンのGemを使う
  • 10-2 かんたんなWebアプリを作る
    • Webアプリとは
    • sinatra Gem を使ってWebアプリを作る
    • Webアプリの中でRubyプログラムを実行する
    • URLを理解する
    • Webアプリの基本動作
    • ブラウザがリクエストをサーバへ投げる
    • Webアプリがリクエストに対応したレスポンスを返す
    • ブラウザがレスポンスで返ってきたHTMLを解釈して表示する
  • 10-3 Webへアクセスするプログラムを作る
    • WebページへアクセスしてHTMLを取得する
    • WebページへアクセスしてJSONを取得する
    • JSONへ変換
    • WebページへHTTP POSTメソッドでリクエストをする【Challenge】

CHAPTER 11 使いこなす

  • 11-1 例外処理
    • 例外とは
    • 例外を処理する - rescue
    • 例外の詳しい情報を得る
    • 例外を表すクラス
    • 例外を発生させる - raiseメソッド
    • 例外の有無に関わらず必ず処理を実行する - ensure
  • 11-2 クラスの高度な話
    • インスタンス変数を簡単に操作する
    • self
    • クラスメソッドとインスタンスメソッドでのインスタンス変数は別物
    • クラス変数
  • 11-3 文字列を調べる - 正規表現
    • 文字列を含むか判定する
    • 文字列が条件と合致するか判定する
    • その他の正規表現
    • 条件と合致するものを抽出する
    • 条件と合致する文字列を置換する
  • 11-4 ブロックの高度な話
    • ブロックを渡すメソッド呼び出し
    • 渡されたブロックを実行する
    • 渡されたブロックを引数で受け取る
  • 11-5 Mac環境へ最新のRubyをインストールする
    • Homebrewをインストールする
    • Rubyをインストールする
    • Rubyのバージョンを更新する

サポート

ダウンロード

本書で解説しているプログラムのサンプルファイルをダウンロードできます。ダウンロードしたファイルを解凍してご利用ください。

(2021年8月16日更新)

ダウンロード(1刷、2刷用)
サンプルファイル
ダウンロード(3刷用)
サンプルファイル(Ruby 3.0対応版)

正誤表

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

(2020年7月20日最終更新)

解答集 6-3 問9の3行目


puts "「#{key} - #{value}円」" if value > 350

puts "「#{key} - #{value}円」" if value >= 350

(以下2019年5月10日更新)

P.223(16行目)

newメソッドの引数に”モカ”が渡され、①で@nameに代入されます。
newメソッドの引数に”モカ”が渡され、で@nameに代入されます。

(以下2019年2月19日更新)

P.30(表の2行目)

新しいファイルを作る Cmd + W(Macの場合)
新しいファイルを作る Cmd + N(Macの場合)

(以下2019年1月24日更新)

P.193

③で引数で渡された"カフェラテ"をインスタンス変数@nameへ代入しています。
③で引数で渡された"カフェオレ"をインスタンス変数@nameへ代入しています。

P.232 COLUMNの最終行

requireメソッドは別の使い方もあるので、P.236でまた登場します。
requireメソッドは別の使い方もあるので、P.237でまた登場します。

P.262

例外クラスの階層構造を描いた図のErrno::EACCESとErrno::ENOENTの吹き出しの説明が本文の説明と逆になっています。

P.234 問4

requitre_relative
require_relative

「t」が不要でした。

補足情報

(2021年1月28日更新)

Ruby3.0.0以降では,Sinatraで利用しているWebサーバWEBrickが標準添付ライブラリから削除され,gem installコマンドでのインストールが必要となりました。P.243 sinatra gemをインストール後,または対象のプログラムを実行する前に次のコマンドでwebrick gemをインストールしてください。

$ gem install webrick

対象のプログラムは以下です。

10-2 かんたんなWebアプリを作る

  • P.244 sinatra_drink.rb
  • P.246 sinatra_hi.rb
  • P.254 練習問題 1,2,3

商品一覧