Create  Edit  Diff  FrontPage  Index  Search  Changes  History  Source  RSS  wikifarm  Login

FrontPage

Pickaxe2-ja Unofficial BTS

『プログラミングRuby 第2版 言語編』および『(同)ライブラリ編』の正誤などをメモしておきます。BTSというかerrata. 追記歓迎です。

〜第2刷に存在するもの

(第1刷と第2刷は内容が同一です)

『言語編』p.275, ll.6-11, 文が重複

変更前

 Ruby は行指向言語です。Ruby の式と文は行末で終端されます。ただし、式が不完全であると
 パーサーが判定した場合は除きます(例えば行の最後のトークン(字句)が演算子やカンマである
 場合など)。同一行内の複数の式を区切るにはセミコロンを使用します。行末にバックスラッシュ
 を置けば、次の行に継続できます。コメントは#で始まり、その行の終わりまで続きます。コメン
 トはコンパイル時には無視されます。同一行内の複数の式を区切るにはセミコロンを使用します。
 行末にバックスラッシュを置けば、次の行に継続できます。コメントは#で始まり、その行の終わ
 りまで続きます。コメントは構文解析時には無視されます。

変更後(実際にはアキを詰める)

 Ruby は行指向言語です。Ruby の式と文は行末で終端されます。ただし、式が不完全であると
 パーサーが判定した場合は除きます(例えば行の最後のトークン(字句)が演算子やカンマである
 場合など)。
                                   同一行内の複数の式を区切るにはセミコロンを使用します。
 行末にバックスラッシュを置けば、次の行に継続できます。コメントは#で始まり、その行の終わ
 りまで続きます。コメントは構文解析時には無視されます。

第1版第1刷、第2刷に存在。第1版第3刷で修正済み。

『言語編』p.382, 『ライブラリ編』p.364, 「Process」の項は「プロセス」の項へマージ

変更前

 Process
   exec
   ID

変更後

 プロセス
   exec
   ID

第1版第1刷、第2刷、第3刷に存在。

『言語編』p.385, 『ライブラリ編』p.367, 索引項目が英語になっている

変更前

 RSTRING macro

変更後

 RSTRINGマクロ

第1版第1刷、第2刷、第3刷に存在。

『言語編』p.247, 関数名に誤り

変更前

 また、作成したオブジェクトを解放する関数cdplayer_freeも定義しなければなりません。

変更後

 また、作成したオブジェクトを解放する関数cd_freeも定義しなければなりません。

『言語編』第1版の第1刷-第3刷に存在。『言語編』第4刷で修正。

Q and A

Q. 分冊せずに1冊にすれば安くなったのでは?

A. 試算したのですが、あまり安くなりませんでした(印税や翻訳料など、本のつくりにかかわらず発生する費用が大きいため)。1冊にまとまっていたほうが作る側も楽なのですが、買いやすさ・扱いやすさを考えて分冊としました。

Q. 索引にあるページを見ても、目的の語が見つかりません。

A. 索引の最初のページの脚注にあるように、2冊分の索引をいっしょにして、書体で区別しています(斜体は他方の巻)。分かりにくくてすみません。それでもやはり間違っているようであれば、ぜひお知らせください。

Q. 『〜ライブラリ編』は、Web上のリファレンスマニュアルで十分なのでは?

A. 両方使い分けるのがいいと思います。『〜ライブラリ編』は、紙で読みたい場合に便利です。また、日本語のWeb上のリファレンスマニュアルとは別の内容です。

Q. Programming Ruby: Code Samplesで公開されている原書のコードサンプルは、日本語版のどのページに対応するの?

A. おおよそ次のような関係です。

  • 英語版(原書)でのページ番号が420以下であれば、『プログラミングRuby 第2版 言語編』の、英語版のページ番号に0.861をかけたページの近辺
  • 英語版でのページ番号が421以上であれば、『プログラミングRuby 第2版 ライブラリ編』の、英語版のページ番号から420を引いて0.949をかけたページの近辺

Rubyで表現すると次のような感じです。

 def en_to_ja(pe)
   if pe <= 420
     "『プログラミングRuby 第2版 言語編』p.#{(0.861 * pe).round}"
   else
     "『プログラミングRuby 第2版 ライブラリ編』p.#{(0.949 * (pe - 420)).round}"
   end
 end
 def ja_to_en(title, pj)
   case title
   when "プログラミングRuby 第2版 言語編"
     "\"Programming Ruby, Second Edition\", p.#{(pj / 0.861).round}"
   when "プログラミングRuby 第2版 ライブラリ編"
     "\"Programming Ruby, Second Edition\", p.#{(pj / 0.949 + 420).round}"
   end
 end
 puts ja_to_en("プログラミングRuby 第2版 言語編", 360)
 #=> "Programming Ruby, Second Edition", p.418

なお、次の点にご注意ください:

  • 日本語版では、Rubyの(監訳時点での)新しいバージョンに合わせて更新したり、見逃されていた誤りを修正したりと、原書に対してさまざまな変更を加えているため、コード内容が若干違う可能性がある
  • 英語版でも、紙版とPDF版とではページ番号が若干違っている(といっても2ページほど。コード掲載ページのページ番号は紙版に基づいている模様)
Last modified:2007/10/28 01:51:32
Keyword(s):
References: