#Rubyとは
RubyはWEBアプリケーションの「システム」をつくるためのプログラミング言語です。
画面には見えない部分の機能(バックエンドorサーバーサイドと呼びます。)を作るときに使う言語になります。
例:ログイン、ログアウト機能、データの取り込みなど。
#準備
- AWSCloud9で新規でファイルを作成しましょう。
- ファイルの名前を変更し拡張子を「rb」にしましょう。
-
rb
というのはRubyのファイルということなので間違えないようにしてください。 - レッスンごとにファイルを分けて作成してください。
ファイルが完成したので実際に学んでいきましょう。
ファイルの実行方法は例として ruby ruby_1.rb
と記入します。
ファイルの保存方法について
macの場合はcommand+sで保存できます。
windowsの場合はcontrol+sで保存ができます。
実際に保存するとどうなるかやってみましょう。
これで保存できました。
保存を忘れると、修正した内容が出力されないので注意してください。
#Lesson1.Rubyに触れてみよう。
Lesson1のためruby_1.rbのファイルを作成してください。
###1-1 文字を出力してみよう。
Rubyのコードを実行してみましょう。ターミナルに文字を出力(表示)します。
puts "こんにちは"
練習問題1-1
- **
「おはよう」
とputs
**を使って出力してみましょう。
###1-2.数値の足し算と引き算をやっていきましょう。
先ほどの「puts "こんにちは"」を削除した状態でレッスンを進めましょう。
足し算には「+」、引き算には「-」の記号を用います。
数値と記号はすべて半角で記述します。
それでは実際にやってみましょう!
ファイルの実行方法はruby ruby_1.rbとターミナルに打ってください。
puts 3
puts 5 + 5
puts 5 - 2
練習問題1-2
- 数値の**
5
をputs
**を使って出力してください。 - 数値の**
9+9
の結果をputs
**を使って出力してください。 - 数値の**
6-7
の結果をputs
**を使って出力してください。
###1-3.数値を文字列として出力しよう
プログラミングでは、例えば文字列の"3"と数値の3をコンピュータは別物として扱います。
文字列は""(ダブルクォーテーション)で囲みます。
それでは実際にやってみましょう!
ファイルの実行方法はruby ruby_1.rbとターミナルに打ってください。
puts 5 + 5
puts "5 + 5"
練習問題1-3
- ①**
+
演算子を用いて計算式の結果が55
**になるよう出力してください。 - ②文字列の**
66
**を出力してください。
1-4.掛け算・割り算・余りの計算をやっていきましょう。
掛け算は「*」(アスタリスク)、割り算は「/」(スラッシュ)という記号を用います。また「%」を用いると、割り算の余りを計算できます。
それでは実際にやってみましょう!
ファイルの実行方法はruby ruby_1.rbとターミナルに打ってください。
puts 5 * 5
puts 10 / 2
puts 6 % 4
練習問題1-4
- **
5 × 4
**の計算結果を出力してください。 - **
8 ÷ 4
**の計算結果を出力してください。 - **
9 ÷ 5
**の計算結果の余りを出力してください。
1-5.文字列を連結してみよう。
文字列同士に「+」記号を用いると、文字列同士を連結することができます。
文字列と数字は連結できないのでご注意ください。
puts "文字列を" + "連結してみよう"
練習問題1-5
- 文字列の**
「こんばんは!」
と「Ruby」
**と文字を出力してください。
#Lesson2.変数について学んでいきましょう!
※レッスンが変わったのでruby_2.rbというファイルを作成し、実行してください。
変数とは、値を入れておく箱のようなものです。
入れる値に合わせて、変数の中身が変化するイメージです。
変数は、コードを書きやすくするもので、プログラミングでは必須の知識となります。
※数学の授業で出てきた「x」や「y」も変数です。
「x = 3, y = 2」のように数字を代入して使いましたが、同じことをプログラミングでも行います。
###2-1 変数の基礎について学んでいきましょう。
変数を使うためには、まず変数を定義する必要があります。
変数は、「 変数 = 値 」という形式で定義します。
この時、注意して欲しい点は上記の「=」は「等しい」という意味ではないところです。
上記の式は、「左の変数に右の値を入れる」という意味で、このことを代入と言います。
- 変数は下記のように「変数名 = 値」で定義します。
- ファイルの実行方法はruby ruby_2.rbをターミナルに打ってください。
name = "太郎"
このように定義すると name
という変数に「太郎」という文字列が定義されたことになります!
それでは実際に学んでいきましょう。
name = "自分の名前"
puts name
name = "自分の名前"
puts "name"
練習問題2-1
- 変数**
text
** に**「おはよう」
**という文字列を代入し出力してください。
###2-2.変数の使い方について学んでいこう
変数を呼び出すと代入した値に「置き換わる」ので、文字列が入った変数は文字列とまったく同じように扱うことができます。
例えば文字列の連結であれば、文字列の入った変数と文字列の連結も、変数同士の連結も可能です。
###2-2-1.変数に文字を代入し連結してみよう。
# 変数messageに「プログラミング」を代入します。
message = "プログラミング"
puts message + "学んでみよう"
# 変数textに「学んでみよう」を代入します。
text = "学んでみよう"
# 変数同士を連結して出力させます。
puts message + text
練習問題2-2-1
- ①変数に文字列を入れて出力しよう
-
message
という変数に**Ruby
**という文字を代入し出力してください。 - ②変数と変数を連結して出力しよう。
- 変数**
text
** にエンジニアという文字を代入し,①で作成した**message
とtext
**を連結して出力してください。
###2-2-2.変数に数値を代入してみよう。
2-2-1では変数に文字列を代入しましたが、今回は変数に数値を代入します。
では実際に学んでいきましょう。
ファイルの実行方法はruby ruby_2.rbとなります。
num1 = 5
puts num1 + 4
num2 = 2
puts num1 + num2
練習問題2-2-2
- 変数に数値を入れて出力しよう
- ①**
num1
** に**3
**を代入し出力してください。 - ②**
num2
** に**5
**を代入し **num1 + num2
**をした結果を出力してください。
###2-3.変数を上書きしてみよう。
変数は、一度代入した値を変更することもできます。
一度値を代入した変数に、その後再び値を代入すると、後に代入した値で変数の中身が上書きされます。
#変数に代入された数値を出力
num1 = 5
puts num1
#変数に上書きされた数値を出力
num1 = 2
puts num1
num1 = 5
puts num1
#代入した値に足し算を行い、上書きする。
num1 = num1 + 5
puts num1
練習問題2-3
- **
num1
に5
**を代入し出力してください。 - また、
num1
に**3
を上書きし、2
**を引いて出力してください。
###2-4.変数を文字列に含めてみよう。
変数の値を文字列の中に含める方法があります。
文字列の中で、#{変数名}とすることで、変数を代入している値に置き換えて、文字列に含めることができます。
それでは実際に学んでいきましょう。
age = 25
puts "今年で#{age}歳です"
name = "山田"
puts "私の名前は#{name}です"
練習問題2-4
- 変数に出身地名を代入し**
「私の出身は〇〇です。」
**と出力してください。
#Lesson3.条件分岐について学んでいきましょう。
※レッスンが変わったのでruby_3.rbというファイルを作成し、実行してください。
###3-1.条件分岐の基礎について学んでいきましょう。
このレッスンでは、「irb」というコマンドを使います。
これまでは、Rubyファイルを作成して、「ruby ファイル名」をターミナルに入力して実行していましたが、「irb」とは、「Interactive Ruby」の略でRubyの処理をターミナル上で実行できる機能のことです。
言葉だけでは、なかなか伝わり難いと思いますので、実際に使って見ていきましょう!
プログラミングを学んでいると「ある条件が成り立つときだけある処理を行う」という場面が出てきます。このようなプログラムを条件分岐と言います。
また条件分岐をする際にtrue
とfalse
という考え方をします。
-
true
とは条件が成立する事を表します。 -
false
とは条件が不成立する事を表します。
実際に試していきます。
先ほど説明した「irb」を使って実行してみましょう。
「irb」を使うとターミナルでRubyの処理を実行できます。
例)大小の比較する場合にこのように記載します。
#変数を定義する。
a = 1
b = 2
#aよりbが大きい場合
a < b
#条件が成り立つのでtrueになる。
#変数を定義する。
a = 1
b = 2
#aよりbが小さい場合
a > b
#条件が成り立たないのでfalseになる。
次はif文を使って条件分岐を見ていきましょう。
ここでは、「もしテストの点数が○点以上だったら処理を行う」という条件を使って条件分岐を見ていきます。
それでは実際に学んでいきましょう。
score = 90
if score > 85
puts "大変よくできました"
end
score = 50
if score > 85
puts "大変よくできました"
end
- この場合
score
が85より小さいので条件が成り立ちません。
###練習問題3-1
-
rain
(雨)という変数に**65
を代入し、雨が降る確率が60%以上の場合「傘を持っていきましょう」
**と出力しましょう。
###3-2.それ以外の処理について学んでいきましょう。
例)3-1に引き続き、テストの点数がよかったら褒めるというのが条件分岐を例にしていきましょう。
score = 50
if score > 85
puts "大変よくできました"
else
puts "がんばりましょう"
end
score = 80
if score > 85
puts "大変よくできました"
elsif score > 75
puts "よくできました"
else
puts "がんばりましょう"
end
###練習問題3-2
- もし今日の雨の確率が60%なら**
「傘をもっていきましょう」
** - もし雨の確率が40%なら**
「傘を持って行った方がいいですね」
** - それ以外の場合**
「傘はいりません」
**と出力してください。
※変数にどの数値をいれても構いません。
###3-3.値が等しいか等しくないかの処理について学んでいきましょう。
ここでは比較演算子を用いて「等しい場合」「等しくない場合」の処理を見ていきます。
#aとbは等しい。
a == b
#aとbは等しくない。
a != b
この記号は数値だけでなく、文字列同士の比較にも使えます。
score = 100
if score == 100
puts "満点です"
end
score = 90
if score != 100
puts "満点ではありません"
end
###練習問題3-3
- ①**
a
という変数に自分の名前を代入し、if文で正しかった場合「私の名前は〇〇です。」
**と出力してください。 - ②**
b
という変数に自分の名前を代入し、if文で「私の名前は〇〇ではありません。」
**と出力してください。
#Lesson4.Rubyの基本について学んでいきましょう。
※レッスンが変わったのでruby_4.rbというファイルを作成し、実行してください。
「配列」「繰り返し処理」「ハッシュ」といった、プログラミングで必須の基礎知識があります。
これらは他の言語でも使うのでしっかり学んでください。
###4-1.配列について学んでいきましょう。
複数の値をまとめて管理するには、配列というものを用います。
配列は、[値1, 値2, 値3]のように作ります。配列に入っているそれぞれの値のことを要素と呼びます。
配列を使うと、複数の文字列や数値をまとめて書くことができます。
#文字列がはいった配列
["Tanaka","Yamada","Kubo"]
#数値が入った配列
[21,69,169]
このように文字列が入った配列と数値が入った配列があります。
配列を変数に代入します。
names = ["Tanaka","Yamada","Kubo"]
puts names
このようにnames
という変数に「Tanaka,Yamada,Kubo」という文字列が代入されました。
配列も1つの値なので、変数に代入することができます。
配列を代入する変数名は慣習上、複数形にすることが多いので覚えておきましょう。
###練習問題4-1
- **
countries
という変数に「日本、アメリカ、イタリア」
**と代入し、出力してみましょう。
###4-2.配列の要素を取り出してみましょう。
配列の各要素は、配列[インデックス番号]とすることで用いることができます。
インデックス番号は最初に入っている値が0番目と数えられます。
names = ["Tanaka","Yamada","Kubo"]
puts names[0]
この場合0番目に入っている「Tanaka」が出力される
####変数の場合と同様に、配列の要素の値も変数展開を用いて文字列の中に含めることができます。
names = ["Tanaka","Yamada","Kubo"]
puts "私の名前は#{names[0]}です"
###練習問題4-2
- **
countries
**という変数に「日本、アメリカ、イタリア」と代入し、配列のインデックスの番号を指定して「私はイタリア出身です。」となるように出力してください。
###4-3.繰り返し処理について学んでいきましょう。
繰り返し処理には、each文というものを使います。
each文を使うと、配列の要素を順番に取り出して処理を行うことができます。
配列.each do|変数名|
#実行したい処理
end
「|」で囲まれた変数に配列の要素が1つずつ入っていき、その上でeach文の中の処理が実行されていきます。
each文内の変数名(name)は好きな名前をつけられますが、配列の変数名(names)の単数形にすることが慣習上多いです。
names = ["Tanaka","Yamada","Kubo"]
names.each do|name|
puts name
end
###練習問題4-3
-
studys
という変数に**「国語、数学、体育」
という文字列をeach
文で「私は〇〇が好きです」
**と出力してみましょう。
#Lesson5.ハッシュについて学んでいきましょう。
※レッスンが変わったのでruby_5.rbというファイルを作成し、実行してください。
複数の値をまとめて管理する方法としては、配列の他にもハッシュというものがあります。
配列は複数の値を並べて管理するのに対して、ハッシュはそれぞれの値にキーと呼ばれる名前をつけてペアで管理します。
ザックリ説明すると、「ある値を入力すると、適切な値(ハッシュ値)を返してくれる」機能です。
文章だけだとイメージし難いので、以下の配列との違いを見てみましょう。
#配列の場合
[値1,値2]
#ハッシュの場合
{キー1 => 値1,キー2 => 値2}
→キー1を入力することで、値1が返される、キー2を入力することで、値2が返されるという構造になっています。
このように配列と書き方が似ているのがハッシュです。
###5-1.ハッシュに変数を代入してみよう。
ハッシュも1つの値なので、配列と同じで変数に代入し出力することができます。
それでは実際に代入して出力してみましょう。
user = {"name" => "Kida","age" => 29}
puts user
user = {"name" => "Kida","age" => 29}
puts user["name"]
###練習問題5-1
- 上記と同じような形で自分の名前と性別を出力してください。
###5-2.ハッシュに変数を上書きしてみよう。
ハッシュ[キー] = 値と書くことで、キーと対応している値を更新することができます。
5-1ではuser
という変数にそれぞれ値が入っていましたが、user
を上書きしたいと思います。
user = {"name" => "Kida","age" => 29}
puts user
#userを上書きする。
user["name"] = "Yamada"
puts user
###練習問題5-2
上記のようにage(年齢)を設定していますが、文字列の漢数字で上書きしてください。
###5-3.ハッシュに要素を追加してみよう!
ハッシュ[新しいキー] = 値と書くことで、ハッシュに新しい要素を追加することができます。ただし、ハッシュにすでにあるキーを指定すると、要素の追加ではなく更新になってしまうので注意しましょう。
user = {"name" => "Kida","age" => 29}
puts user
user["country"] = "Japan"
puts user
###練習問題5-3
- 上記のように性別を追加してみましょう。
#Lesson6.シンボルについて学んで行きましょう。
※レッスンが変わったのでruby_6.rbというファイルを作成し、実行してください。
シンボルとは、文字を「ダブルクォーテーション(")」や「シングルクォーテーション(')」で囲む代わりに、コロン(:)を付けた書き方のことを言います。
(稀に後ろにコロンを書く場合もあります。)
ハッシュのキーとしてよく使われるため、今回もハッシュを用いてシンボルの使い方を見ていきましょう。
以下の様にコロン(:)を前置きして表記します。
:name
###6-1.シンボルを使って値を出力してみましょう。
#キーに文字列を用いた書き方
{"name" => "Kida","age" => 29}
#キーにシンボルを用いた書き方
{:name => "YAMADA", :age => 29}
このように2通りの記載方法があります。
※どちらもハッシュの記載方法なので間違えないようにしましょう。
それでは変数に代入してみましょう。
user = {:name => "YAMADA", :age => 29}
puts user
###練習問題6−1
- 上記のように**
user
**という変数で自分の名前と年齢を出力してみましょう。
###6-2.シンボルを使って要素のみ値を出力してみましょう。
- 6-1では
user
という変数を出力しましたが、今回はuser
に入っている変数の:name
のみ出力してきましょう!
user = {:name => "YAMADA", :age => 29}
puts user[:name]
###練習問題6−2
- **
user
**という変数を使い自分の名前、年齢、性別を設定し、性別のみ出力してみましょう。
###6-3.ハッシュのキーにシンボルを用いた書き方を学んでいきましょう。
ハッシュのキーにシンボルを用いるときには、省略した書き方をすることができます。具体的には「:key =>」を「key:」というように省略することができます。
{:name => "YAMADA", :age => 29}
#このように書き換えることができる
{name: "YAMADA", age: 29}
- では実際に書き換えて出力してみましょう。
user = {name: "YAMADA", age: 29}
puts user
###練習問題6-3
- キーをシンボルに書き換えて**
country
**を出力してください。
user = {:name => "YAMADA", :country => "JAPAN", :age => 29}
#Lesson7.nilについて学んでいきましょう。
※レッスンが変わったのでruby_7.rbというファイルを作成し、実行してください。
「nil」とは、「値が空である」事を指します。
ここまで、ハッシュ[キー]とすることでハッシュの値を取得してきました。
では、ハッシュに存在しないキーを指定すると、値はどうなるでしょうか?
- 存在しない
「:weight」
というキーの値を表示しようとした場合
user = {name: "YAMADA", age: 29}
puts user[:weight]
puts nil
###7-1.条件分岐をするなかでのnilについて学んできましょう!
これまでは学習した内容では、ifの条件がtrueであれば実行し、falseであれば実行しない、というように学んでいました。
実は、ifの条件には、真偽値(trueとfalse)以外も使うことができます。Rubyでは、ifの条件に真偽値以外を用いたとき、それがnilであればfalseとして扱われ、それ以外はtrueとして扱われます。
実際の使い方を見ていきましょう。
- trueの場合
user = {name: "YAMADA", age: 29}
if user[:name]
puts "#{user[:name]}さんは#{user[:age]}歳です"
else
puts "名前は秘密です。年齢は#{user[:age]}歳です"
end
- falseの場合
user = {age: 29}
if user[:name]
puts "#{user[:name]}さんは#{user[:age]}歳です"
else
puts "名前は秘密です。年齢は#{user[:age]}歳です"
end
###練習問題7-1
- ハッシュ**
example
** を定義し、キー**name
**、バリューで「ご自身のお名前」を設定して、ハッシュにないpref
を条件で設定し、nilになるように条件を書いて出力してみましょう! - trueのときは**
「私の名前は〇〇です。東京出身です。」
** - falseのときは**
「私の名前は〇〇です。神奈川出身です。」
**と設定し今回はnilを出力してみましょう。
#Lesson8.配列の要素にハッシュを入れてみましょう。
※レッスンが変わったのでruby_8.rbというファイルを作成し、実行してください。
配列の要素には、文字列や数値だけでなく、ハッシュも使うことができます。下記のように記載することができます。
[ {キー1:値1},{キー2:値2} ]
このように配列の中にハッシュを使うことができます。
###8-1.配列の要素を確認してみよう。
配列の要素には、先頭からインデックス番号が割り振られていることを思い出してください。
インデックスの0番目、つまり{name: "YAMADA", age: 29}
を出力したいと思います。
user = [{name: "YAMADA", age: 29}, #インデックス[0]
{name: "KIDA", age: 35} #インデックス[1]
]
puts user[0]
###練習問題8-1
- 上記のように配列の要素を3つ作成し、インデックスの**
[2]
**を出力してください。
###8-2.配列の要素を変数に代入してハッシュの値を出力しましょう。
配列[インデックス番号]でハッシュを用いることができるので、そのハッシュを代入した変数を使って、変数[キー]とすることでハッシュの要素の値することができます。
user = [{name: "YAMADA", age: 29}, #インデックス[0]
{name: "KIDA", age: 35} #インデックス[1]
]
user = user[1]
puts user[:name]
user = [{name: "YAMADA", age: 29}, #インデックス[0]
{name: "KIDA", age: 35} #インデックス[1]
]
puts user[1][:name]
###練習問題8-2
- 上記のような配列に要素を1つ追加し、**
0
**番目のnameキーの要素を出力してください。
###8-3.配列をeach文を使い出力してみましょう。
ハッシュが値の配列でeachを使うとどうなるでしょうか。
- 基本的に似ている考え方です。
- 変数に、配列の各要素が順番に代入されます。
users = [{name: "YAMADA", age: 29},
{name: "KIDA", age: 35}
]
users.each do |user|
puts user
end
###練習問題8-3
- 上記のような配列に要素を1つ追加し、要素を出力してください。
Rubyについて、学んでみていかがでしたか?
ここで学んだことと生かして今後も頑張っていきましょう!
お疲れ様でした。
続きのRubyについて学んでいこう2です
関数について説明されてますので、よろしかったらご参照ください
⇓
https://qiita.com/Tech_Leaders/private/06d6acbdf66c51f8788e