はじめに
Ruby on Rails チュートリアルの実施と並行してRubyの学習を行い
自身の記憶定着のためプログラミングノートとして書き起こす。
Progateおよびチェリー本の1~3章での学習結果の書き起こしになる
RubyとRuby on Railsとの違い
Ruby | Rails |
---|---|
プログラミング言語 (Python等と同様) |
Rubyを用いたWebアプリケーションの 開発用のフレームワーク |
文字列、数値、true/false、nilのすべてがオブジェクト (オブジェクトに対してメソッドが呼べる) |
MVCモデルの提供 M=Model(モデル) データの処理 V=View(ビュー) 見た目の処理 C=Controller(コントローラ) ModelとViewを制御する |
Rubyの基本文法
Rubyファイルの実行
$ ruby ファイル名(~.rb)
Ex.
$ ruby sample.rb
ライブラリの種類
-
インストール不要
- 標準ライブラリ(date,csvなど https://docs.ruby-lang.org/ja/latest/library/index.html)
- 組込みライブラリ(Array,Hashなど https://docs.ruby-lang.org/ja/latest/library/_builtin.html)
-
インストール必要
- gem(外部ライブラリ)
ライブラリのインポート
- インストール不要
# ファイル名指定時に拡張子の「.rb」は不要
require "ライブラリ名"
require "ファイルパス"
Ex.
require "date" (Dateクラス)
require "./home/start" (home/start.rbファイル)
変数宣言
# 変数名のみの定義は不可能
変数名 = 値(型の宣言が不要)
コンソールへの入出力(putsとgets)
- コンソールへの表示
puts 文字列
puts 変数
- コンソールへの入力
# 改行付きの入力
変数名 = gets
# 改行を外した入力
変数名 = gets.chomp
文字列
# 定義
クオーテーション「""」と「''」
# 変数の埋め込み
"・・・#{変数名}・・・"
# 文字列の連結(数値 + 文字列は使えない)
文字列 + 文字列
# 文字列 ⇔ 数値の変換
(→文字列)変数.to_s
(→数値) 変数.to_i
数値でも整数(.to_i)、小数(.to_f)など種類がある
Ex.
num_age = 19
str_age = '19'
puts num_age + "歳" → エラー
puts "#{num_age}歳" → 19歳
puts 'str_age' + '歳' → 19歳
「""」と「''」の違い
- 文字列に埋め込んだ変数を展開する・・・「""」
- 文字列に埋め込んだ変数を展開しない・・・「''」
Ex.
name = "田中"
puts "やあ#{name}さん" → やあ田中さん
puts 'やあ#{name}さん' → やあ#{name}さん
if文の使い方
# 年号からうるう年を判別する
year = 2019
if year % 4 != 0
puts "うるう年ではありません"
elsif year % 100 == 0 && year % 400 != 0
puts "うるう年ではありません"
elsif year % 100 == 0 || year % 4 == 0
puts "うるう年です"
end
# if文の判定結果をTrue,false
if shipping_free?(3000)
puts "3000以上の数"
else
puts "3000より小さい"
end
テストの自動化
Minitestの利用
- メソッドから出力される値が期待通りかを検証できる
- Fizzbuzzのテスト例にして作成する
FizzBuzz.rb
def fizzbuzz(input_num)
if input_num % 15 == 0
'Fizz Buzz'
elsif input_num % 5 == 0
'Buzz'
elsif input_num % 3 == 0
'Fizz'
else
input_num.to_s
end
end
FizzBuzz_test.rb
require 'minitest/autorun'
require 'FizzBuzz'
class FizzBuzzTest < Minitest::Test
def test_fizz_buzz
assert_equal '1', fizzbuzz(1)
assert_equal 'Fizz', fizzbuzz(3)
assert_equal 'Buzz', fizzbuzz(5)
assert_equal 'Fizz Buzz', fizzbuzz(15)
end
end
$ ruby FizzBuzz_test.rb
-> テスト実施時間や、テスト結果(runs, assertions, failures, errors)がでる