give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

Ruby 3.0に完全対応、だけじゃない!?改訂2版「プロを目指す人のためのRuby入門」が発売されました🍒

はじめに

以前からこのブログでもお伝えしてきたとおり、拙著「プロを目指す人のためのRuby入門(通称チェリー本)」の改訂2版が本日2021年12月2日に発売されました🎉

f:id:JunichiIto:20211201085208j:plain

改訂2版では表紙のサクランボの数が1個から2個に増えているのがポイントです。「改訂2版だから、さくらんぼが2つ」と覚えてください🍒

f:id:JunichiIto:20211201085815p:plain

Amazonでは昨日から購入可能になっているようです。

書店の入荷は発売日から数日遅れることがあります

書店の場合は発売日から数日遅れて入荷されることがあるので、「あれ、もしかしてこの店には入ってこないのかな?」と思った人も諦めずに店員さんに入荷予定を聞いてみてください。

ちなみにhontoというサイトを利用すると、全国の丸善・ジュンク堂書店・文教堂の在庫状況をオンラインで確認することもできます。

honto.jp

電子版はGihyo Digital Publishingで購入するのがお得!

本書は紙の本だけでなく、Kindleをはじめとする各種電子版も用意されています。

ただし、電子版についてはGihyo Digital Publishing(技術評論社の電子書籍販売サイト)で購入した方が、定価が少し安いです。
しかも、今なら期間限定で1000円キャッシュバックをやっているので、1298円安く購入できます💰

税込定価 キャンペーン 合計
紙の本・Kindle 3278円 (なし) 3278円
Gihyo Digital Publishing 2980円 -1000円 1980円
差額 1298円

gihyo.jp

さらに、Gihyo Digital PublishingならEPUB版とPDF版の2種類をダウンロードできるのでかなりお得です。電子版の購入を考えておられる方は、Gihyo Digital Publishingもぜひチェックしてみてください。

gihyo.jp

著者が語る、改訂版の見どころあれこれ

さて、改訂版で変わったのは表紙だけではありません。大小様々なポイントがアップデートされています。具体的にどこがどう変わったのか、改訂版の見どころを著者目線でピックアップしてみます。

少し長いので先に目次を載せておきますね。

Ruby 3.0に完全対応した

第1版ではRuby 2.4の文法や言語機能に対応していましたが、改訂2版では2020年12月にリリースされたRuby 3.0に完全対応しています。Ruby 3.0の最大の変更点である「キーワード引数の分離」や、Ruby 2.7で変わった「privateメソッドもselfを付けて呼び出せる」といったトピックもしっかり取り上げています。

f:id:JunichiIto:20211201093509p:plain
「キーワード引数の分離」について(5.6.5項)
f:id:JunichiIto:20211201093640p:plain
「selfを付けて呼び出せるprivateメソッド」(7.7.2項)

また、Ruby 3.0の目玉機能のひとつである「RBSを利用した静的型検査」についても概要を解説しています。

f:id:JunichiIto:20211201093909p:plain
「RBSを利用した静的型検査」について(13.10節)

パターンマッチを解説する章を新設した

Ruby 2.7から導入されたパターンマッチについては、まるまる新しい章を1つ追加して解説しています。パターンマッチの使い方についてここまで丁寧に説明しているRubyの入門書はたぶん本書が日本初(世界初?)なのではないでしょうか!

f:id:JunichiIto:20211201094320p:plain
図を交えたりしながらパターンマッチの使い方を解説しています(11章)

もちろん、パターンマッチの使い方を理解するための例題もちゃんと用意しています👌

2021.12.13追記
Rubyコミッタの辻本さんから「世界トップレベルと言っていい詳細な解説」とのコメントをいただきました。どうもありがとうございます!😭

8章の例題をリニューアルした / QRコードを活用した

8章(「モジュールを理解する」の章)の例題をdeep_freezeメソッドからrainbowメソッドに変更しました。モジュールを利用して虹色に輝く文字列をターミナルに表示します🌈

f:id:JunichiIto:20211201094744p:plain
虹色に輝く文字列?んんん???

上のスクショを見て「どこが虹色やねん!」と思ったそこのあなた。ご安心ください。ちゃんとカラーで確認できるように、QRコードを載せています。

f:id:JunichiIto:20211201095007p:plain
スマホがあればQRコードですぐにリンクに飛べます

上のQRコードを読み取ると、ブラウザ上に次のような出力例が表示されます。

f:id:JunichiIto:20211201095119p:plain
QRコードのリンク先に表示されるrainbowメソッドの出力例

今回の改訂版では、僕が「ここはさくっとリンク先を読みにいってほしい」と思ったいくつかのURLにQRコードを付けています。なので、紙の本を持っている人でも片手にスマホを持っていれば、QRコード経由でリンク先がチェックできます。

f:id:JunichiIto:20211201095426p:plain
本書を読んでいると随所にQRコードが登場します

Rails 7の標準デバッガとなるdebug.gemの使い方を解説

これまでRubyのデバッガとしては3rd party gemであるbyebugがよく使われてきましたが、Ruby 3.1(つまり次バージョン)ではRuby標準のデバッガライブラリが大幅にバージョンアップし、さらにRails 7でもbyebugがこのデバッガライブラリに置き換えられます。

techracho.bpsinc.jp

リニューアルされたデバッガライブラリは"debug.gem"もしくは"ruby/debug"と呼ばれます(ここでは"debug.gem"で統一します)。

チェリー本では第1版のときからbyebugの使い方を説明していて、改訂版でも引き続きbyebugの使い方を説明していました。しかし、今年の9月にRailsがdebug.gemに移行するのを耳にして、急きょ説明対象のデバッガをbyebugからdebug.gemに切り替えました。

f:id:JunichiIto:20211201184420p:plain
画面の出力例を交えながらdebug.gemの使い方を解説(12.4.4項)

9月というとほぼ原稿はfixしていて、大きな変更はできない時期だったのですが、編集の吉岡さんに頼み込んでなんとかdebug.gemに置き換えることができました😅(吉岡さん、どうもありがとうございます!)

つよつよプログラマのみなさん(Rubyコミッタを含む)による原稿レビュー

第1版では弊社ソニックガーデンのメンバーに原稿レビューしてもらったのですが、改訂2版では社外のRubyプログラマのみなさんにも声をかけて原稿をレビューしてもらいました。

とくに、Ruby 2.7や3.0で追加された新機能については、その開発者であるRubyコミッタのみなさんを巻き込んでレビューしてもらっています(めっちゃ贅沢〜😭)。

  • debug.gem → 笹田 耕一さん
  • パターンマッチ → 辻本 和樹さん
  • RBS/TypeProf → 松本 宗太郎さん、遠藤 侑介さん

このほかにも改訂2版では以下のみなさんに原稿レビューをお願いしました。

  • 近藤 宇智朗さん(GMOペパボ株式会社)
  • 吉次 孝太さん(しくみ製作所株式会社)
  • scivolaさん
  • 栩平 智行さん(株式会社 DIGITALJET)
  • 遠藤 大介さん(株式会社ソニックガーデン)
  • 西見 公宏さん(株式会社ソニックガーデン)
  • 田中 義人さん(株式会社ソニックガーデン)

ぶっちゃけ、レビュアーのみなさんからは僕一人では絶対に気づけないような技術上の不備や説明の問題点などを多数ご報告いただき、技術上の正確さや、わかりやすさが格段にアップしました。レビュアーのみなさん、ご協力どうもありがとうございました!🙇🏻‍♂️

Rubyのパパ、Matzさんによる「本書の刊行に寄せて」もリニューアル

第1版に引き続き、この改訂版でも本書の冒頭でまつもとゆきひろさんに「本書の刊行に寄せて」を書き下ろしてもらいました。

f:id:JunichiIto:20211202071818j:plain
Matzさんに今回また新たに書き下ろしてもらいました

まつもとさんからは次のような心温まるメッセージをいただいています。

本書が初版で数多の初心者を助けてきたように、この改訂版が、あなたがプロの壁を乗り越えるお役に立ちますように。プロとしてRubyを使ってバリバリ活躍するみなさんをお見かけすることができれば、私にとって、これ以上ない喜びです。

Rubyの生みの親であるまつもとさんからメッセージをいただけるなんて、非常に光栄です。「本書の刊行に寄せて」は技術評論社さんのサイトで全文が読めますので、ぜひこちらもご覧ください。

gihyo.jp

索引の改善

結構地味な改善ポイントですが、今回は巻末の索引もパワーアップしています。第1版と改訂2版の索引をちょっと見比べてみましょう。

これは第1版の索引です。
f:id:JunichiIto:20211201191720p:plain

こちらは改訂2版の索引です。
f:id:JunichiIto:20211201191750p:plain

どこが変わったか、お分かりでしょうか?

第1版では「文脈によって意味が異なる記号やキーワードも、同じ記号ならひとまとめ」にしていたのですが、改訂2版では「同じ記号でも意味が異なる場合はそれぞれ項目を独立」させています。

この改善により、たとえば「*の意味を調べたい」というときでも、自分が欲しい情報が見つかるまで何度も索引と本文を行ったり来たりせずに、自分の調べたい文脈に応じて「知りたい内容はこれ!」というページをピンポイントで探し当てやすくなるはずです。

その他、改善に次ぐ改善の嵐!!

まだまだPRしたいポイントはあるのですが、キリがないのでさーっとリストアップしていきます。

わかりにくい、難しいという声が多かったポイントの説明を多数追加

「ラムダっていつ使うの?」
「ビルドツールのビルドって何?」
「エイリアスメソッドっていったい何が嬉しいの?」
「キーワード引数の仮引数はシンボルじゃないの?」
「ぼっち演算子のどこが独りぼっちなの?」

などなど、ネット上の初心者さんやフィヨルドブートキャンプの受講生のみなさんから届いた疑問の声にできるだけお答えするため、脚注やコラムの説明を多数追加しています。

第1版に収録し損ねたトピックも多数追加

第1版の出版後に「しまった、あれも書いておくべきだった!」と気づいて後の祭りになっていたトピックも多数追加しています。具体的には「<<TEXT1, <<TEXT2のようにヒアドキュメントを2つ同時に使うケース」や「メソッド呼び出しで()を付けるケースと付けないケース」、「セグフォとは何か」等々です。

あまり適切でなかった第1版の説明や語句の訂正

これはあまり大きな声では言えませんが、第1版では一部、微妙に正しくない説明も混じっていました。具体的には「requireとrequire_relativeの使い分け」や「bundlerに関する説明」などです。また、第1版で「ブロック引数」と読んでいたものは、本当は「ブロックパラメータ」と呼ぶべきだった、というような間違いもあります(どうもすいませんでした🙇🏻‍♂️)。改訂2版では当然こういった内容も修正対象に含まれています。

2021年現在の最新トレンドを反映

第1版を出版したのが2017年11月なのでちょうど4年の月日が過ぎました。IT業界は変化が激しいので、たった4年でも結構いろんなことが変わっています。なるべく2021年現在の最新トレンドを取り込むよう、たとえば特にこだわりがない人にはテキストエディタとしてVS Codeをお薦めしたり、フロントエンド界隈の隆盛を鑑みて(ES6以降の)JavaScriptとRubyのコードを比較したりしています。そうそう、あと第1版の執筆当時にはまだ存在しなかったruby-jpの話も盛り込んだりしてますね。

参考:加筆修正した項目は100箇所以上

改訂版の執筆に取りかかる前に、本書の第1版を読みながら「ここを直したい」「ここに追記したい」というポイントに付箋を貼っていったら、こんなふうになりました。

f:id:JunichiIto:20211201195446j:plain
付箋が付いているのは第1版で加筆修正したいと思ったページ

ちなみに、付箋の数を数えたら全部で105箇所ありました。

さーっと読んでいくと「第1版と同じじゃない?」って思うようなページでも、かなりの高確率でなんらかの修正が加えられているはずです!

100ページ近い増ページ。なのに販売価格は据え置き!

加筆修正を重ねた結果、ページ数は第1版の472ページから568ページに増えました。568 - 472 = 96で、なんと100ページ近い増ページです。

本の厚みも4mmほど増えているので、第1版を持っている人は手に取った瞬間に「あ、分厚くなった」と気づくはずです。

f:id:JunichiIto:20211202071905j:plain
左が第1版、右が改訂2版。4mmほど分厚くなりました

ですが、編集者さんと相談した結果、今回は第1版と同じ3278円(税込)のまま販売価格を据え置くことになりました。第1版に比べてこれだけ内容が充実してるというのに、販売価格はそのままってちょっとすごくないですか??

なので、第1版を持ってる人も持ってない人も、これはもう買うしかない!って著者としては思うわけです、はい(苦笑)。

FAQ「Ruby 3.0に完全対応って言うけど、もうすぐRuby 3.1が出ますよね?」

はい、おっしゃるとおりです。Rubyは毎年12月25日に新バージョンがリリースされます。今年も12月25日にRuby 3.1がリリースされるはずです。

そうなると本書の「Ruby 3.0対応」は少し古くなってしまいます。でも大丈夫です。Ruby 3.0から3.1への技術的な差分については、僕が開設しているサポートページで説明します。

ruby-book.jnito.com

紙の本なので、毎年内容を書き換えるわけにはいきませんが、こうやってネットを活用しつつ、本書で学んだ知識が時代遅れにならないよう、読者のみなさんをフォローしていきます💪

f:id:JunichiIto:20211202072100j:plain
表紙の端っこにも「フォローするよ!」って書いてあります

なお、改訂版が発売されたため、Ruby 3.1以降の差分は改訂版の内容をベースに説明していきます。第1版からの差分ではないので、第1版をお持ちの方はご注意ください。

まとめ

というわけで、このエントリではめでたく発売された「プロを目指す人のためのRuby入門 改訂2版」について詳しく説明してみました。

これはまたそのうちまとめようと思っていますが、「改訂版だし、第1版をゼロから書くよりずっと楽チン〜♪」ではなく、「おいおい、これじゃあ第1版を書いたときと変わらねーじゃねーか!」と思うぐらい膨大な時間がかかりました😅

それもこれもみんな、読者のみなさんに「買って良かった」と思われるような本を届けるためです(これは本当)。

第1版を持っている人も持っていない人も、ぜひ「プロを目指す人のためのRuby入門 改訂2版」を手に取ってもらえると嬉しいです。みなさんよろしくお願いします!

gihyo.jp

あわせて読みたい

改訂版では第1版からいろんなところに手を加えていますが、本書の骨格となる基本コンセプトは変わっていません。
その基本コンセプトについては第1版のときに書いたこちらのエントリをご覧ください。

blog.jnito.com

書評はこちら

早くも改訂2版の書評をいくつかいただいています。他の人の感想も参考にしてみたい、という方はこちらもぜひどうぞ!

yoshitsugu.net

www.aguuu.com

2021.12.13追記
こちらの書評では第1版と改訂2版の違いを詳細にまとめてもらっています。
著者自身が「こんなん、誰も気づかんやろ」と思った修正点までチェックされていて、大変驚きました!
aim2bpg.com

おまけ:新聞広告に載りました

改訂2版の宣伝が新聞に載ってました。第1版のときはこんなことはなかったはず!新聞の読者層にどれくらいチェリー本が刺さるのか、ちょっと気になりますねw