💎

Rubyまとめ

2025/01/16に公開

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