LoginSignup
1
1

More than 3 years have passed since last update.

Ruby プログラミングノート Part1

Last updated at Posted at 2019-08-11

はじめに

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

ライブラリの種類

ライブラリのインポート

  • インストール不要
# ファイル名指定時に拡張子の「.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)がでる
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1