読者です 読者をやめる 読者になる 読者になる

「初めてのRuby」をRubyPicoで実際に動かしながら読む

RubyPico向けの入門記事を書きたくて、Rubyの入門書を改めて色々と読み直している。まずはずっと気になっていた「初めてのRuby」を購入。

初めてのRuby

初めてのRuby

pdfはHonyomiに突っ込んだのでいつでも検索できるようになった。こういう振り返り記事を書くときはとても役に立つ。

f:id:tuto0621:20160815214402j:plain

今回初の試みとして

  • iPadでpdfを表示 (こっちは紙の書籍でもKindleでもよい)
  • iPod touchでRubyPicoを実行

させてサンプルコードを実行しながら読み進めた。今申請中の0.8からはmain不要でスクリプトを書けるようになり、大分CRubyと同じ雰囲気で書けるようになったからだ。例えば書籍内で紹介されていた素数か判定する以下のプログラムはそのままRubyPicoで実行することができた。

(2..100).each do |candidate|
  sqrt = Math.sqrt(candidate)
  factor_found = (2..sqrt).any? {|i| candidate % i == 0}
  if factor_found then
    print "#{candidate} は合成数\n"
  else
    print "#{candidate} は素数\n"
  end
end

実際にコードを打ち込んで挙動を確認しながら読み進めると理解が一段深くなる。ifにはthenをつけない、{|i| }{ |i| }派、みたいな自分のスタイルに置き換えても同じように動くことを確認していけるのもよい。

f:id:tuto0621:20160815214622p:plain

書籍自身の感想としては、RubyコミッタのYuguiさんが書いただけあってRubyの深いところまで理解した上でRuby初心者(この書籍は他言語を習得しているけどRubyを初めて使う人を対象に書かれている)向けの内容が厳選されており大変読みやすい。私は割と必要なスクリプトを書くために実践的にRubyを覚えてしまったところがあるので、基礎的な知識がポッカリ抜けている部分がありそれらを補完することができた。String#[regexp]とかString#%とか知らなかったけどこれからは積極的に使っていこうと思う。私が使い慣れているC++C#などの静的言語と比較しながら説明してくれるのもわかりやすかった。

特に面白かったのは7章のメソッドと8章のオブジェクトとクラスで、なんとなく使っていたブロック付きメソッドとProc型の違いブロックを引数として受け取る方法などがすごく短いページに(ここ重要)簡潔にまとめられていて大変よかった。8章などRubyの強力なメタ機能をささえるクラス、オブジェクト、特異、モジュールといったコア要素の一通りの説明がたった22Pに収められていて必要に応じてまた読み返したいと思う。あとモジュールの説明で2つの目的があってMix-in(これはよく見かける)と名前空間の提供(これ割と見かけない)というのをちゃんと章を分けて説明してくれていて大変安心した。他の人のコード読んだりすればモジュールを名前空間として使ってよいのはなんとなく分かるのだけどそれを章立てして説明してくれているのは初めてみたので(多分書いてあるのだけど私が今まで見落としていた)。

と、いう訳ですでにRubyに慣れている人でも「初めてのRuby」は大変おすすめです。短いページ数に必要な情報が凝縮されているのでさっと読んだ後に必要に応じて簡単に読み返せるのもよいです。

※ 余談ですが最近はたくさんの情報が網羅されてページ数の多い本よりも必要な情報が短いページに凝縮された本の方を好むようになってきました