OYASHIRO

チェリー本を終えるまで

【随時更新中】Rubyの学習をしていく上で、参考にしたサイトなどをまとめてあとから振り返りができるようにメモをしておこうと思います。

2025-01-24

著者: Oyashiroboy

※このブログはメモなので文体で書いております。ご容赦ください。

Ruby学習の足取り

今回、「プロを目指す人のためのRuby入門」伊藤潤一著 を学習していく中で、参考にしたサイト・考えたことをこのページに更新する形でまとめていく。 実際にWebアプリケーションを作っていく中では、別にGithubリポジトリとサーバーを使おうと考えている。 ※書籍の内容について触れるつもりはない。

第一章

インストール ~WSL2の利用に際して~

インストール時はWSL2を利用することを事前に考えていた。実際に利用したのは以下サイト “Ubuntu(WSL2)に最新のrbenv・ruby-buildをインストールする,” Zenn
ryoma5457557831, “rbenvで最新のrubyの環境をWSL2に構築,” Qiita

結局:WSL2にrbenv、Ruby3.4.1をインストール

→グローバルにも同様を設定したため、WSL上で標準で動くのはruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [x86_64-linux]

エディタの選定とその設定について

学生であるためRubymineが無料であるが、使うべきかを吟味した。 yuta-ushijima, “AtomとvscodeとRubymineのメリット・デメリットを超ざっくりとまとめてみた話,” Qiita ‌ 大学卒業後に有料プランに移ることになった場合、コストがかかりすぎるのでVSCodeで決定した。
書籍の内容に触れている記事も参考にした。 NMRchan, “Ruby初心者向けのVSCodeでの環境構築+実行環境構築+ショートカットキー紹介,” Qiita
これまで知らなかった使い方も出てきてとても参考になるサイト

第二章

OR,AND,XOR

M. Sasaki, “排他的論理和(XOR)とは,” I-3-i.info

複素数

“【高校数学】複素数の定義・四則演算を解説!共役複素数も紹介!|StudySearch,” StudySearch

第五章

% 記号を使ったリテラルの種類

これまで出てきた%を使って表すものが、こんがらがってきたので復習 一個ずつよりも一覧のほうが記憶しやすい

  1. %s

    • シンボルを作成します。
    • 例: %s(ruby_is_fun):ruby_is_fun
  2. %q

    • シングルクォート文字列を作成します。
    • 例: %q(ruby is fun)'ruby is fun'
  3. %Q

    • ダブルクォート文字列を作成します。
    • 例: %Q(ruby is fun)"ruby is fun"
  4. %w

    • 空白で区切られた単語の配列を作成します(シングルクォート文字列)。
    • 例: %w(ruby is fun)["ruby", "is", "fun"]
  5. %W

    • 空白で区切られた単語の配列を作成します(ダブルクォート文字列)。
    • 例: %W(ruby is fun)["ruby", "is", "fun"]
  6. %x

    • コマンド出力を作成します。
    • 例: %x(ls) → シェルコマンド ls の出力
  7. %r

    • 正規表現を作成します。
    • 例: %r(ruby is fun)/ruby is fun/
  8. %i

    • シンボルの配列を作成します。
    • 例: %i(ruby is fun)[:ruby, :is, :fun]
  9. %I

    • シンボルの配列を作成します(ダブルクォート文字列)。
    • 例: %I(ruby is fun)[:ruby, :is, :fun]

(Github Copilotの出力)

クラスの概念

7章のクラスの概念がよくわからないので調べた。

書籍の内容だと配列を使っており、難しく感じたが、以下のコードを実行したら理解できた。

class BankAccount
  def initialize(owner_name)
    @owner = owner_name
    @balance = 0
  end

  def deposit(amount)
    @balance += amount
    puts "#{@owner}様の口座から#{amount}円を預け入れました。残高:#{@balance}円"
  end

  def withdraw(amount)
    if amount <= @balance
      @balance -= amount
      puts "#{@owner}様の口座から#{amount}円を引き出しました。残高:#{@balance}円"
    else
      puts "残高が足りません"
    end
  end
end


account1 = BankAccount.new("山田太郎")
account2 = BankAccount.new("鈴木花子")

account1.deposit(10000)
account2.deposit(5000)
account1.deposit(10000)
account1.withdraw(15000)
account1.deposit(10000)
account1.withdraw(15000)

書籍ではキーとハッシュが用いられており、理解が追いつかない面があったが、この例では引数を1つしか用いてないため簡単にわかった。

クラスを1ファイルに書くのが慣習……? 例題で急に1クラス1ファイルになっていたため驚いた。 “一つのファイルに複数のクラスを書くことの是非,” teratail[テラテイル]