プロを目指す人のためのRuby入門
https://m.media-amazon.com/images/I/51tyOVaM2HL.jpg
「Rubyらしさ」について感じたこと
一年前には全く分からなかったが(今もぼんやりとでしかないが)Rubyらしい書き方ってこういうことか、というのがつかめかけている
なぜかと考えたときに、おそらくPHPをしっかり勉強したからだと思った
PHPでは絶対見かけないような書き方とか、独特の構文を使ったすっきりした書き方が目につくようになった
こういう慣れない書き方を「気持ち悪い」とか「分かりづらい」とか思うこともありそうだけど、なるべくそうやって忌避せずにいたい
私よりもずっとすごい人が考えていることだし、世界中の人が好んでつかっている(はず)なので、慣れない私が悪い、と思うようにしたい
なんというか全面的に賛成していくスタイルというわけではないが、食わず嫌いだけはしないでおくと決めている
nilの扱い
どういうときにnilが返ってくるのか、を整理したほうが良さそう
存在しないキーを指定したハッシュはnilが返る、とか
ArrayとHashとEnumerable
ArrayもHashもEnumerable(=列挙可能な)を継承している
列挙型の良いところについて話を聞いてなんとなく理解できた
使って良さを実感したいところである
5章のイディオムの紹介はおもしろかった
Rubyらしい書き方=イディオムと言われるとすっと入ってくる
二重否定(!!)で真偽値を得る考え方おもしろい
6章正規表現
このメタ文字まとめみやすい
https://gyazo.com/74f0068d847b2b9e4764994abb1fb3b4
Stringクラスでも正規表現が使えるメソッドがたくさんある
Ruby の String クラスは mutable です。つまり、オブジェクト自体を破壊的に変更できます。
正規表現オブジェクトを作成する様々な方法
code:ruby
# Regexp.newでオブジェクトを作成
Regexp.new('\d{3}-\d{4}') # /\d{3}-\d{4}/と同じ
# スラッシュで囲むとスラッシュをエスケープする必要がある
/http:\/\/example\.com/
# %rを使うとスラッシュをエスケープしなくて良くなる
%r!http:://example\.com!
# 区切り文字を!から{}へ変更
%r{http:://example\.com}
正規表現のオプション
/正規表現/オプション
Regexp.new('正規表現', Regexp::オプションをあらわす定数)
iオプション Regexp::IGNORECASE 大文字小文字を無視
mオプション Regexp::MULTILINE 改行文字にも任意の文字. がマッチする
xオプション Regexp::EXTENDED 空白文字が無視されて#をつかって正規表現中にコメントが書ける
インスタンス変数
@変数名 という表記のアレ
クラスの内部で使うことができる変数
initializeメソッド(=コンストラクタ)でインスタンス変数にオブジェクトの引数を渡してクラス内部からアクセスできるようにしたりする
インスタンス変数はアクセサメソッドと合わせて使うことも
attr_accessor 読み書き
attr_reader 読み取り専用
attr_writer 書き込み専用
クラスメソッド
self.メソッド名 とかのアレ
クラス内で普通にメソッドを定義すると、インスタンスメソッドになる
インスタンスに含まれるデータ(=インスタンス変数)を読み書きするならインスタンスメソッドを使う
そうでもないときは?→クラスメソッド
インスタンスを作らなくてもクラス名.メソッド名で呼び出せる
10章 yieldとprocを理解する がいまいち分からない
本に沿ってやるだけだと厳しかったので、ちょっと別で調べてまとめることにした
11章
デバッグ方法まとめ
スタックトレースの読み方、例外クラスの紹介
プリントデバッグ、byebugの使い方
12章
その他の話題
日付や時刻、特定のファイル形式を読み込む方法、組込変数など
Rakeは、MakeのRuby版ってことらしい・・・なるほど!
元々はビルドツールだったが、ビルドに限らずまとまった処理(=タスク)を簡単に実行するためのツールとして使われることが多い 例:テストの実行
Rakefile
Rakeタスクを定義するファイル
gem
Rubyのライブラリ
Bundler
gemの依存関係を管理するツール
bundle initで初期化するとGemfileというバージョン管理用のファイルが作成される
バージョン情報はGemfile.lockに記載されている(Bundlerが自動生成するので自分で編集しないこと)
バージョン番号を指定しない場合は「Bundlerにおまかせ」になります。Bundlerは依存関係上、問題が起きない最新バージョンをインストールします。ただし、問題が起きないバージョンがマシンにすでにインストールされている場合は、最新かどうかにかかわらずそれを再利用します。
付録
この図・・・超大事なやつ。まさにこの一年苦労したところ。
https://gyazo.com/24ee581e67652ce0f42d09d07738e3bb