Java2Ruby本
読んだ。なかなか熱い本だった。Rubyより、というよりはJavaをほとんど知らない自分にとっては自分のRubyに対して感じているRubyの良さが率直に書いてあって読んでいて気持ちよかった。
例えば、Javaの現在の開発ではオープンソースの様々なツールやフレームワークを駆使するのが一般的であるのに、大学の授業ではJavaを教える割にはそこら辺に対して教えることもなければ、ポインタすら示さなかったりする。確かにSwingを使えば楽にGUIアプリが作れて手っ取り早いかもしれないが、Webベースのアプリを作る方がさらに手っとり早いし、実用的だと思う。おまけにJavaを教えられた生徒のほとんどは、最初にクラスを作らなければいけないことに戸惑って、プログラミングに苦手意識を持ってこの分野から遠のいていった。ということで大学にいたときはRuby教えれば良いのにと本当に思っていたりした。*1
JavaとLLという構図だとLLの良さが分かるようになっていたが、LLの中でもなぜRubyというところがもうちょっとしっかり読めればなお良かった。例えば、PerlにはCPANがあって移行してすぐにでも豊富なライraブラリを使うことができるし、PythonはRubyよりも先発だけにRubyよりも有名なプロダクトは多いし、パフォーマンスも若干良かったりすることが多い。さらにはGoogleが使っている言語だけに、今後更なる期待ができそうと言った特徴がある中で、なぜRubyじゃなければいけないのかというところは少し弱かった気がする。個人的にはif文でdef文を分岐できたり、すべての式が値を持っていたり、値はすべてオブジェクトだったり、for文とかwhile文を使い分けなくてもeachだけでループを回せることなどが、ごく自然にできることがRubyの良さだと思う。標準のAPIも多すぎるというわけでもなくメソッド名も考えられているのですぐに使い方を覚えることができる。標準のAPIが使いづらいと感じたら使いやすくするためのメソッドを追加したりすることもできる。といったあたりのバランスの絶妙さ加減が自分にとってはRubyを使う理由なのかなと思う。(会社ではPerlだけど)
こういった読み物的なものは「人月の神話」以外には読んだことなかったので色々と刺激になりました。
- 作者: Bruce A. Tate,角谷信太郎
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/04/21
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 53回
- この商品を含むブログ (119件) を見る
Rubyクックブック
タイトル的にはレシピ本と同じようにもっとライトな感じの本かと思ったら案外そうではなくて非常に内容の濃い本だった。特に内容が今までに出版されている本とはほとんど被ってなくてこれは買いの本だと思った。内容的にはRHGを除いては現在出ている日本語のRuby本の中では最もマニアックでHack的だと思う(AWDwR本と同じぐらい)。それでもすべての例にコードも載っているし解説も詳しいので十分に読める。
個人的に一番の収穫だったのは、Highlineライブラリ。これを使うとパスワードの入力だとか、端末の出力に色をつけたりすることが簡単にできるらしい。
あとRakeの使いこなし方、Gemの作り方、RubyForgeの使い方などは今出ている他の本ではあまり説明されていないトピックなので非常に良かった。
他にも普段あまり自分が触らないようなことも色々書いてあって何度も読んで楽しめそうだなぁと思った。
邦訳版は内容が結構削られているのは少し残念だけど、それでも十分に読む価値のある本だと思う。
- 作者: Lucas Carlson,Leonard Richardson,株式会社クイープ
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/04/27
- メディア: 大型本
- 購入: 1人 クリック: 73回
- この商品を含むブログ (55件) を見る
Kernel#dp
Rubyレシピブックのレシピ8.1をみて--debugオプションをRubyインタプリタの起動時につけると$DEBUGがtrueになるというのを知って、Kernel#dpとかKernle#dppとかKernel#dyとかが標準であれば良いのにと思った。こんな感じ。
module Kernel def dp *args p(*args) if $DEBUG end def dpp *args require 'pp' pp(*args) if $DEBUG end def dy *args require 'yaml' y(*args) if $DEBUG end end hoge = %w(foo bar baz) dp hoge dpp hoge dy hoge
ruby --debug ~として実行してやれば,
"foo", "bar", "baz"] ["foo", "bar", "baz"] --- - foo - bar - baz
と出力される。
これなら誤って消し忘れたときにリスクがなくて良いなぁと思う。*1
追記
一応この方が尚よいかも。
module Kernel def dp *args if $DEBUG args.each do |arg| warn arg.inspect end end end def dpp *args if $DEBUG require 'pp' args.each do |arg| warn arg.pretty_print_inspect end end end def dy *args if $DEBUG require 'yaml' args.each do |arg| warn arg.to_yaml end end end end
*1:確かにpやppでも消せば問題ないのだけど人間消し忘れてしまうものなので…