【Ruby入門】初心者でもわかる基礎文法まとめ


Rubyの書き方が全く分からない…
基本の文法だけでも最初におさえておきたい!

こんにちは! エンジニアでRubyライターの遠藤です。

今回の記事では、Rubyの基本的な書き方について解説します。Ruby入門となる基礎的な内容です。ぜひ最後までお付き合いください!

前提知識:Rubyについて

画像:Shutterstock

Rubyとは?

まずはRubyについて、簡単に説明します。Rubyは、1995年頃に開発されたオブジェクト指向のスクリプト言語

C言語やJavaといったプログラミング言語は、コンパイラ言語と呼ばれており、プログラムを実行するために「コンパイル」という手続きを行うことで初めてそのプロジェクトを実行するができます。対して、Rubyのようなスクリプト言語では、上記のコンパイルという処理が一切不要。そのままプロジェクトを実行することができます。

そのため、コンパイラ言語に比べてRubyはプログラミングを手軽に行えるのが特徴となっています。

スクリプト言語・オブジェクト指向とは何かについて知りたい方は、以下の記事を読んでみてください。


オブジェクト指向とは?誰でもわかるようにやさしく解説
更新日 : 2020年11月11日

上記の記事から引用すると、オブジェクト指向は

「モノ」を組み立てるように表現して、コンピュータに動作をさせる

であり、スクリプト言語は

スクリプト言語とは習得するのを簡単にするために工夫されたプログラミング言語の総称のこと

であると言えます。

つまりRubyは、上から下へ書いた内容を実行する手続き型言語ではなく、実体(オブジェクト)を組み立てながら作る、オブジェクト指向の中でも比較的容易に実装できるプログラミング言語です。

Rubyは何ができるのか?

Rubyは主にWEBサービスの開発などに使われることが多いプログラミング言語ですが、実際にRubyを使うとどのような開発ができるようになるのかをご紹介します。

  • ユーザー同士の交流ができるSNSサービス開発
  • 人と人をつなぐことのできるマッチングサービス開発
  • 動画や音楽などの配信サービス開発
  • 業務効率化ツールやソフトの開発
  • 機会を制御するためのソフト開発

このように、実に多くのことができます。Rubyという言語は、できないことはないと言ってもいいくらい汎用的なプログラミング言語のため、アイディア次第でどんなことも実現可能。そのような理由もあり、人気の言語となっています。

Rubyで作られたサービス例

では、実際にRubyで作られたサービスにはどのようなものがあるのでしょうか。簡単にどのような技術を使っているかも合わせて説明しながら紹介していきます。

Cookpad

レシピサイトで「超」がつくほど有名なCookpadは、Rubyを使って開発されています。このCookpadでは、ユーザーの会員機能やユーザー同士が交流するための機能が備わっています。

CrowdWorks

WEB上で様々な仕事を発注したり受注したりできるサービスのCrowdWorksも、Rubyで開発されています。こちらも主に会員機能やそれぞれの会員が仕事を募集したりするための掲示板のような機能を持っており、全体にお仕事を公開できるような機能が使われています。

Hulu

動画を視聴するサブスクリプションサービスを提供しているHuluも、Rubyが使われています。このサービスはRubyのフレームワークである「Ruby on rails」を使って開発されており、動画や音楽を配信できる機能が使われています。

このように、普段みなさんが何気なく使っていたサービスの中にも、Rubyを使って開発されているサービスは多くあります。今回挙げたサービス以外にも実に多くの場面でRubyが使われていますので、気になった方は調べて自分の開発にも活かしてみてください。

Ruby初心者におすすめする開発環境の構築

ここでは、Rubyの開発環境の構築方法について初心者にもわかりやすく解説していきます。

開発環境とは

まずは、開発環境とは何なのかを簡単にご説明します。ここで言う開発環境とは、単純にRubyのプログラミングを行うための環境のことです。

プログラミングの開発では、「開発環境」→「テスト環境」→「本環境」のように順を追ってサービスの公開まで進んでいきます。開発環境とはつまり、エンジニアの方たちがサービスを作るために開発をする段階のことを言います。

初心者の方には「統合開発環境(IDE)」と呼ばれる開発環境の構築法を利用するのが一番簡単でおすすめです。

統合開発環境(IDE)とは

では、統合開発環境(IDE)とはどんなものなのでしょうか?  統合開発環境とはテキストエディタ、コンパイラ、デバッガを1つにまとめたもののことを言います。

一般的に、ソフトウェアやサービスを開発する際には、作業ごとに応じた複数のソフトウェアやツールを使い分ける必要があります。大まかに分けると、ソースコードを書くために必要なエディタや、ソースコードからオブジェクトコードを生成する際に利用するコンパイラ。他にも各CPU向けの実行コードを生成するために必要なリンカ。そして、作成したプログラムのバグを検出するために使用するデバッガなどです。

統合開発環境(IDE)とは、上記で説明したようなソフトウェアの開発で利用されるソフトウェアをまとめて1つの開発環境で統合・統一的に扱えるようにした開発環境なのです。

各OSごとによる構築方法の違いとは

先程ご紹介した統合開発環境(IDE)を利用せず、ローカルで開発環境を構築したい場合は、OSによって方法が少し変わってきます。簡単にその方法だけご説明します。

Windowsへのインストール

Windowsでは、「RubyInstaller」というインストールツールを使います。ただしWindowsの場合、下記の2点を事前に確認してご自身のマシンに合ったツールを選択する必要があるので注意してください。

  • WindowsのOSバージョン
  •  PCの性能(34bit版・64bit版)

Macへのインストール

MacOSXでのインストールは、下記のサードパーティパッケージ管理ツールを使うことで可能になります。

  • rbenv
  • RVM

Linux/Unixへのインストール

Linux/Unix環境では、下記のサードパーティパッケージ管理ツールを使うことで可能になります。

  • rbenv
  • RVM
  • そのシステムが持つパッケージ管理ツール

Rubyの実行方法

Rubyのプログラムを書いた実行ファイルの拡張子は、「.rb」となります。例として、この記事では「sample.rb」というRubyの実行ファイルを作成します。これを以下のコマンドで実行します。

$ruby sample.rb

もしRubyのインストールがまだの方は、以下の記事を参考にして環境を作ってください。

MacでRubyをインストールする方法をわかりやすく解説【初心者必見】
更新日 : 2020年7月20日

Rubyの基礎文法

それでは、Rubyを書いていきましょう!以降のコードは、先ほどの「sample.rb」をテキストエディタで編集していく前提で進めていきます。

Hello Worldを出力してよう

プログラミングの初めはやはり"Hello World"ですよね!そこで、Rubyでも"Hello World"を出力してみましょう。

puts "Hello World"

コードを書く際、Rubyでは行末に「;(セミコロン)」は要りません。

実行結果

Hello World

変数

データを一時的に格納する入れ物を変数と言います。数学でx=3とかしていましたよね。この時のxにあたるのが変数です。また、文字列も変数に格納可能です。試しに"Hello World"を変数に格納して表示しましょう。

text = "Hello World"
puts text

実行結果

Hello World

ここで注意していただきたい点が一つあります。変数を宣言する際、他のプログラミング言語ではデータ型を一緒に宣言しますが、Rubyには変数の型がないため代入の前に宣言する必要がありません

上の例の通り、型を宣言する事なくすぐに代入が可能です。

数値演算

データの演算を行うには、以下の演算子を使います。

演算子求める値処理内容
+値を足す
-値を引く
*値をかける
/値を割る
%剰余値を割った余りを出す
**べき値をべき乗する
irb(main):001:0> 100 + 10
=> 110
irb(main):002:0> 100 - 10
=> 90
irb(main):003:0> 100 * 10
=> 1000
irb(main):004:0> 100 / 10
=> 10
irb(main):005:0> 100 % 10
=> 0
irb(main):006:0> 100 ** 2
=> 10000

配列・ハッシュ

データの中には、配列ハッシュというものがあります。どちらも、複数の値をまとめて格納したもののこと。配列の例を見てみましょう。

fruits = ["apple", "grape", "orange"] # 0:apple, 1:grape...の順に番号付けされ格納されている
puts fruits[0] #0番目の"apple"だけ出力する
puts fruits #fruitsの全ての要素を取り出して出力する

実行結果

apple
apple
grape
orange

このように、配列・ハッシュでは複数の値をまとめて格納できます。配列はそれぞれの値を「[](大括弧)」でくくり、複数の要素を格納します。

上記は配列の例でしたが、ハッシュでは各要素にインデックス(0:リンゴ, 1:grapeなどの番号)ではなく、key値を付けることができます。key値は要素の値(value)に対応する名前のようなものです。

ハッシュの例

fruits = {"a":"apple", "b":"grape", "c":"orange"} #key:valueをひとかたまりに格納する
puts fruits
puts fruits[:a] #キー値で取り出す

実行結果

{:a=>"apple", :b=>"grape", :c=>"orange"}
apple

配列やハッシュについて詳しく知りたい方は、それぞれ以下の記事を参考にしてください。


【Ruby入門】Hash(ハッシュ)の使い方 (each fetch find select)
更新日 : 2020年3月2日

コメント

プログラムの中で、実際に処理されないコメントを残すことも可能です。コードを記述したプログラマがどういう意図でその処理を入れたかといったコメントを残す為に使ったり、デバッグ時に特定の行を処理させない目的などで使われています。

コメントにしたい行の初めに「#(シャープ)」を入れると、その行をコメント扱いにする事ができます。また、「=begin複数行コメント=end」とする事で、複数行に渡ってコメントを残すことも可能です。

#"Hello Wrold"を連続出力します ←コメント
puts "Hello World1"

puts "Hello World2" #この行は実行されない
puts "Hello World3"
puts "Hello World4"
puts "Hello World5"

=begin
このように
複数行にわたって
コメントを残す事も可能です。
=end

実行結果

Hello World1
Hello World3
Hello World4
Hello World5

ちなみに、特定の行をコメントにすることをコメントアウトと言います。

条件分岐(if文)

特定の条件の時だけ処理を実行したり、変数の値によって処理を分けたりすることを条件分岐と言います。Rubyのプログラム上で条件分岐をするには、if文を使います。書き方は以下の通りです。

if 条件A
  条件に一致した場合の処理
elsif 条件B
  条件Aと一致せず、条件Bに一致したの時の処理
else
  条件A, Bのどちらにも一致しない時の処理
end

実際の例を見てみましょう。

#テストの成績を評価する
score = 75
 
if score > 90
  puts "めっちゃ凄い"
elsif score > 80
  puts "凄い"
elsif score > 60
  puts "良い感じ"
else
  puts "頑張れ"
end

実行結果

良い感じ

実は上記の書き方は「then」というキーワードを省略しています。thenは条件文と処理の間に記述するのですが、上記のように基本的には省略ができます。ただ、if文を1行で書く場合のみthenは省略ができません。1行で記述する場合は以下のように書きます。

書き方

if 条件 then 処理 end

ここで出てくるthenは「そのときは」という意味で捉えておくと悩まないでしょう!if文はプログラミングにおいて頻出する要素です。もっと詳しく知りたい方は、以下の記事を参考にしてみてください。

インデントについて

if文の構文を紹介した際、5行目の「puts "めっちゃ凄い"」の左端にスペースが空いていて、putsが少し右に寄っていることに気付いた方もいるでしょう。これはインデントと言って、要素のブロックを見分ける為に使います。

if文の条件の中(処理の部分)やこの後出てくるfor文の中、クラスやメソッドの中などのブロックを見分ける為に使います。インデントに関してはプログラマであればインデントはできて当然というぐらいの気持ちを持っておきましょう!都度気をつけて、癖を付けるようにしておくと良いです。

なお、Rubyではインデント幅はスペース2つで、タブを使うのはNGとなっております。

ループ処理

ループ処理も条件分岐と並んでよく使う要素です。特定の条件の間だけ、処理を繰り返すのがループ処理です。

for文

ループ処理の一つであるfor文は、オブジェクトの範囲・要素の数だけ繰り返し処理をするループ処理です。

書き方

for 変数 in オブジェクト do #doは複数行記述であれば省略可
  処理
end

実際の例

list = [1, 2, 3, 4, 5]
for item in list #item = listの各要素
  puts item
end

実行結果

1
2
3
4
5

上記のように記述することで、listの要素の数だけ中身を出力する処理ができます。なお、こちらもif文と似ていて、一行で記述する場合はdoを省略できません。for文についてもっと詳しく知りたい方は、以下の記事を参考にしてください。

【Ruby入門】for文の基礎から応用までをわかりやすく解説!
更新日 : 2019年1月7日

while文

ループ処理にはwhile文という物もあります。while文は、条件がtrueの時だけ処理を繰り返すループ処理です。

書き方

while 条件式 do #doは複数行記述であれば省略可
  処理1
end

実際の例

a = 1
while a < 10
  puts a
  a += 1 # a = a + 1と同じ意味
end

実行結果

1
2
3
4
5
6
7
8
9

while文について詳しく知りたい方は、以下の記事を参考にしてください。

例外処理

例外処理というのは、プログラムが動作する中で「例外」が発生したときにどのような処理をするか。つまり、例外発生時におこなう処理のことを言います。ここでは、Rubyでそのような例外処理の方法として用いる「begin」「rescue」「raise」のそれぞれの使い方を解説していきます。

beginの使い方

以下のサンプルコードのように、begin構文の下には通常実行したいプログラムを書き、rescue構文の下にそのプログラムの実行中に例外が発生したときに呼び出したいコードを書きます。

begin
実行するコード
rescue
例外が発生したときだけ実行されるコード
end

また、else構文を付け加えると、以下のサンプルコードのように「例外が発生しなかったときだけ」呼び出したいコードを追加で記述することができます

begin
実行するコード
rescue
例外が発生したときだけ実行されるコード
else
例外が発生しなかったときだけ実行されるコード
end

rescueの使い方

以下のサンプルコードのようにensure を付け加えると、例外の有無に関わらず 最後に実行したいプログラムを追加できます。

begin
実行するコード
rescue
例外が発生したときだけ実行されるコード
else
例外が発生しなかったときだけ実行されるコード
ensure
例外の有無にかかわらず 最後に実行されるコード
end

raise

例外を意図的に起こしたい場合は、プログラム中で以下のサンプルコードのように記述します。

raise

また、例外の種類を指定したい場合は、以下のサンプルコードのように、後ろにエラーの種類を記述します。

raise エラーの種類

クラスとメソッド

メソッド

メソッドは、複数行の処理を一つにまとめて繰り返し使えるようにしたものです。

書き方

def メソッド名(引数) #引数は呼び出し側からメソッドに渡される値のこと
  処理
  return 戻り値 #必要な場合のみ記述
end

実際の例

#円の面積を計算するメソッド
def area_circle(radius)
  area = radius * radius * 3.14
  return area
end

#メソッドを呼び出す
puts area_circle(2) #引数に2を指定

実行結果

12.56

このように、メソッドでは特定の処理を行って実行結果の値を呼び出し側に返したり、出力したりなどの処理が可能です。同じような処理はメソッドにまとめることで、スマートなコードを書けます。メソッドについて詳しく知りたい方は、以下の記事を参考にしてください。

【Ruby入門】 関数(メソッド)の使い方まとめ【型 引数 戻り値】
更新日 : 2019年6月27日

クラス

クラスは、メソッドなどの処理全体をひとかたまりとするものです。オブジェクト指向ではクラスをよく設計図に例えたりします。「クラスにはこんな機能(メソッド)があって、このクラスを使うとこういうことができる。」といった内容のかたまりがクラスです。

クラスからインスタンス(オブジェクト)を作成すると、一つの変数として扱えます。

書き方

class クラス名
  メソッドなどを記述
end

実際の例

#円についての処理をするクラスを宣言
class Circle #クラス名の最初は大文字

  def area_circle
    puts @radius * @radius * 3.14
  end

  #関数などが連続するときは間に空行を1行入れること
  def circumference
    puts @radius * 2 * 3.14
  end

  def radius=(radius)
    @radius = radius
  end
end

#インスタンスを生成
circle1 = Circle.new

#半径を入力
circle1.radius = 3

#関数を呼び出す
circle1.area_circle
circle1.circumference

実行結果

28.26
18.84

クラスはオブジェクト指向で最重要項目なので、しっかり学ぶことをオススメします。詳しく知りたい方は以下の記事を参考にしてください。

Rubyのclass(クラス)使い方まとめ|new/メソッド/インスタンス/継承
更新日 : 2019年4月26日

継承クラス

ここまでで解説したクラスは、オブジェクトの元になる「設計図」のようなものだと説明しましたが、利用したい全てのクラスを作成していると大変な上に、共通する部分があった場合でも複数のクラスに重複して定義する必要がありました。

そこで、既に作成されているクラスを拡張して、新しいクラスを作成することができる機能があります。このように他の元となるクラスをベースにして新しいクラスを作成することを「クラスの継承」と呼びます。

例えば「人」という基本的なクラスを作成しておいて、そのクラスを継承して「それぞれの人の名前」を管理するクラスを作成することが可能になります。人という基本機能にの部分を別のクラスとして定義しておき、それぞれの人の名前については人のクラスを継承して差分を継承したクラスに個別に定義するような流れになります。

では実際の継承クラスの使い方をご紹介します。

class クラス名 < 継承したいクラス名

end

このように記述することで、簡単にクラスを継承できるので、覚えておいてください。

まとめ

この記事では、Rubyで必須になる要素の書きかたについて解説しました。この記事の内容をまとめて覚えようと思うと難しいかもしれませんが、一つずつ実際にコードを書きながら覚えていけば身についていきます!

ぜひこの記事を目安に沢山コードを書いて、Rubyの基礎をマスターしていってください!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

遠藤貴大

1991年生まれ。双子座。
理系大学で認証システムを学んだ後、アプリ開発者となる。
新しく学ぶ人に寄り添った記事を心がけて執筆します。
芸術が好き。いつか猫と暮らすのが夢。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー