💎

Rubyまとめ

に公開

Rubyとは

日本人のまつもとゆきひろさんが開発したオブジェクト指向言語。
開発者が日本人ということで、日本語のドキュメントが豊富

Rubyのメリット

  1. わかりやすい
      シンプルで読みやすいため、コードの可読性が高く学習の障壁が低い
  2. オブジェクト指向
  3. フレームワークを用いることによる生産性の高さ
  4. コミュニティが活発
      豊富なライブラリやツールが提供されている
  5. 大規模開発にも適している
    読みやすさやメンテナンス性に富んでいるため、
    大規模開発でも品質を保ちながら開発ができる
  6. 多岐にわたる用途
    Webアプリ開発、バッチ処理、スクリプト作成、自動化など様々な用途がある
  7. ドキュメントが豊富
    良質で豊富な公式ドキュメントやチュートリアルがあるため、
    初心者でも学習しやすい

Dockerを用いた環境構築

Ubuntu環境で以下を実行

FROM ruby:3.2.3
WORKDIR /app
compose.yml
services:
  app:
    build: .
    volumes:
      - .:/app]
    user: 1000:1000

Rubyの実行方法

ファイルの書き方

test.rb
puts 1 + 3

ターミナルを用いた実行

ruby test.rb

やってみた

touch test.rb
code test.rb

vscodeが開くので、さっきのtest.rbのコードを追加

ruby test.rbを実行。できた

Rubyを実行する方法

  1. ターミナルでの実行
    簡単にプログラムを試す際に適している
$ ruby -e 'puts "Hello World!"'
Hello World
  1. Rubyの対話型インタプリタを起動する
    簡単なコードテストや動作確認に適している

Dockerを起動したのち、
irbコマンドでRubyの対話型インタプリタを起動

$ docker compose run app bash
$ irb
irb(main):001:0> puts "Hello World!"
Hello World!
=> nil
irb(main):002:0> exit
  1. Rubyのスクリプトファイルを実行する
    rubyコマンドを使うことで、ファイルのプログラムを実行する
    ファイルにコードを残せるため、複雑なコードを書く際に適している。
hello.rb
puts "Hello World!"
$ ruby "Hello World"

関数と引数

def greet(message)
  puts message
end

greet("Hello World") 

関数greetに対して引数Hello Worldを渡し、最後に関数を呼び出している

足し算と掛け算

calc.rb
def cashier(price1, price2)
  puts (price1 + price2) * 100
end

cashier(20, 6)

配列とループ

zoo.rb
def zoo(animals)
  animals.each do |animal|
    puts animal
  end
end

zoo(['うさぎ', 'かめ', 'ひつじ'])
calc.rb
def calc(prices)
  sum = 0
  prices.each do |price|
    sum += price
  end
  puts "合計税込み#{(sum * 1.1).floor}円です!"
end

calc([198, 298, 1980])

ハッシュ

Javascriptでいうオブジェクトに似ている
ハッシュ化のハッシュのことかと思った...

book.rb
hash = { "title" => "吾輩は猫である" }

# 新しいキーと値を追加
hash["price"] = 1200

# 既存のキーの値を更新
hash["title"] = "山月記"

puts hash  # 出力: {"title"=>"山月記", "price"=>1200}

イテレーション

book.rb
hash = { title: "7つの習慣", price: 1800 }

hash.each do |key, value|
  puts "#{key}: #{value}"
end

# 出力:
# title: 7つの習慣
# price: 1800

ハッシュの入った配列

books.rb
def cashier(books)
  sum = 0
  books.each do |book|
    puts "#{book[:title]}#{book[:price]}円"
    sum += book[:price]
  end
  puts "合計税込み#{(sum * 1.1).floor}円です!"
end

books = [{ title: "吾輩は猫である", price: 1000 }, { title: "山月記", price: 1200 }, { title: "7つの習慣", price: 1800 }]

cashier(books)

Discussion