『Polished Ruby Programming』(Jeremy Evans著)を角谷信太郎さん(@kakutani)が翻訳した『研鑽Rubyプログラミング ― 実践的なコードのための原則とトレードオフ』(以下研鑽Rubyプログラミング)が4月13日に販売されました 🎉
新刊『研鑽Rubyプログラミング ― 実践的なコードのための原則とトレードオフ』発売のお知らせです(4月13日12:00より発売開始)!! 新刊『研鑽Rubyプログラミング ― 実践的なコードのための原則とトレードオフ』発売のお知らせです(4月13日12:00より発売開始)!! #研鑽Ruby https://t.co/TXeI5KZPWk
— Kakutani Shintaro (@kakutani) April 11, 2023
ラムダノートのサイトでは紙版に加えてPDF版も公開されました↓。こちらで紙版を購入するとPDF版もダウンロードできます。β版PDFの販売は終了していますが、既にβ版PDFを購入済みの方は更新することで表紙を除いて正式版相当のPDFを取得できるそうです。
販売: 『研鑽Rubyプログラミング ― 実践的なコードのための原則とトレードオフ』 – 技術書出版と販売のラムダノート
早くも同書の感想が出始めています。
- yahondaさん: 『研鑽Rubyプログラミング』感想
- koicさん: 『研鑽Rubyプログラミング』をレビュアー献本いただいた - koicの日記
- naruseさん: 『研鑽Rubyプログラミング』をもらった - なるせにっき
- tagomorisさん: 「研鑽Rubyプログラミング」はライブラリ作者の知識・技術の幅と深さを拡大する1冊 - たごもりすメモ
- ko1さん: Rubyを研鑽した話(2023/04/20追加)
そして私も、訳者の角谷さんからかたじけなくも同書のPDF版書籍を献本いただきました。ありがとうございます! 🙏 🙇。
売れ行きも好調なようで何よりです。
けっこう在庫が減ってきた。残り12点。本の総合2,531位と健闘している(ジャンル区分何故かナシ、研鑽Rubyプログラミングで検索すると”もしかしてrubyプログラミング”にされてしまう…) https://t.co/gEazQYXcZQ #研鑽Ruby 電子書籍は直販のみです!(連呼) https://t.co/lEKNShzHkW pic.twitter.com/G5kJEH9UxT
— Kakutani Shintaro (@kakutani) April 17, 2023
Scrapboxページ
購入方法などの情報が訳者の角谷さんによるScrapboxページにまとめられています↓(随時更新)。
参考: WelcomeVisitors - 『研鑽Rubyプログラミング』
『研鑽Rubyプログラミング』の特徴
原著『Polished Ruby Programming』については既に以下の記事でいろいろ述べましたが、それにぜひ付け加えておきたいことがいくつかあります。
1. 基本的に「Rubyを既に知っている人がトレードオフを学ぶ」本
上の過去記事ではあまり言及しませんでしたが、日本語版はサブタイトルで"実践的なコードのための原則とトレードオフ"と強調されているとおり、Rubyで普段からコードを書いている人が、どんなときにどんなトレードオフがあるかを学ぶのに最適な本です。内容を凝縮した良いサブタイトルの付け方の見本だと思います。
それでいて、過去記事でも書いたように「高速だけどRubyらしくない書き方」といった裏技や黒魔術的な記述はかなり控えめです。扱っているトレードオフの多くは、基本的にRubyらしい書き方の中でのトレードオフです。「最適化を早まるな」「今のRubyは最適化しなくてもたいてい速い」が合言葉です。
これも過去記事で書きましたが、Jeremy Evansさんが多くのライブラリの作者であることもあって、主にライブラリを作るときの事例が豊富です。もちろんRailsアプリケーションのコードを書いたりするときも役立ちます。
そういうわけで、同書はRubyを既に知っていることが前提となっています。
2. Ruby 3.2の最新情報を訳注でキャッチアップしている
日本語版で最大にありがたい点がこれです。
英語版はRuby 3.0を対象としていますが、現在のRuby 3.2では今ぱっと思いついただけでも以下の点が大きく強化されています。
そして『研鑽Rubyプログラミング』では、Ruby 3.2までのそうした強化点を含む技術的に有用な訳注が多数追加されています。
同書PDF版p36より(画像は編集部で切り詰めています)
私はData
クラスが登場するまではStruct
に密かにシンパシーを感じていて、英語版を読んだ後でこっそりStruct
のアクセサメソッドのベンチマークを取ってみたりしていたこともあって、この訳注4の情報だけで感激してしまいました。
参考: class Struct
(Ruby 3.2 リファレンスマニュアル)
こうした情報の充実は、訳者の角谷さんの尽力はもちろんのこと、β版でRubyコミッターを含む多くの方々からフィードバックが寄せられたことも大きいと思います(なお上の訳注4はRubyコミッターのko1さんから寄せられた情報だそうです)(追記2023/04/20: この#5131の改修もko1さんによるものでした)。
そういうわけで、既に『Polished Ruby Programming』を買った人であっても、『研鑽Rubyプログラミング』は買う価値が大きいと思います。
なお、原著のサンプルコードもじわっと更新されていました。角谷さんのプルリクもいくつか反映されていますね。
Chapter01/00-album-database-2-hash.rb | 2 +-
Chapter01/01-album-database-nested-hash.rb | 2 +-
Chapter01/03-album-database-array-hash.rb | 2 +-
Chapter01/04-lookup-by-artist-array.rb | 2 +-
Chapter01/05-lookup-by-artist-hash.rb | 2 +-
Chapter01/06-lookup-by-artist-set.rb | 2 +-
Chapter01/chapter-01.rb | 2 +-
Chapter02/07-liskov-subsitution-max.rb | 6 +++---
Chapter02/chapter-02.rb | 6 +++---
Chapter11/03-test-complexity.rb | 4 ++--
Chapter11/chapter-11.rb | 4 ++--
README.md | 13 +++++++++++++
改めてじっくり読んでいるところですが、クラスインスタンス変数や定数の探索周りのややこしさを再び痛感しています。