give IT a try

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

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

はじめに

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

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

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を付けて呼び出せる」といったトピックもしっかり取り上げています。

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

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

「RBSを利用した静的型検査」について(13.10節)

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

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

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

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

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

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

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

虹色に輝く文字列?んんん???

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

スマホがあればQRコードですぐにリンクに飛べます

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

QRコードのリンク先に表示されるrainbowメソッドの出力例

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

本書を読んでいると随所に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に切り替えました。

画面の出力例を交えながら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版に引き続き、この改訂版でも本書の冒頭でまつもとゆきひろさんに「本書の刊行に寄せて」を書き下ろしてもらいました。

Matzさんに今回また新たに書き下ろしてもらいました

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

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

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

gihyo.jp

索引の改善

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

これは第1版の索引です。

こちらは改訂2版の索引です。

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

第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版を読みながら「ここを直したい」「ここに追記したい」というポイントに付箋を貼っていったら、こんなふうになりました。

付箋が付いているのは第1版で加筆修正したいと思ったページ

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

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

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

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

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

左が第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

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

表紙の端っこにも「フォローするよ!」って書いてあります

なお、改訂版が発売されたため、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

Qiita表彰プログラムでDIAMOND賞を受賞しました💎

Qiita表彰プログラムでDIAMOND賞を受賞し、記念品をいただきました。
なかなかきれいなクリスタルトロフィーです。

f:id:JunichiIto:20211122065750j:plainf:id:JunichiIto:20211122065754j:plainf:id:JunichiIto:20211122065757j:plain

Qiita表彰プログラムって何?

Qiitaのサイトに以下のような説明が載っていました。どうやら最近できた制度みたいですね。

Qiita 表彰プログラムとは
Qiita 表彰プログラムは、多くの人に記事を読まれ、リアクションを集めている皆さまのためのプログラムです。

日頃からエンジニアコミュニティを牽引している皆さまに感謝の気持ちを伝えるため、Contributionに応じた記念品をプレゼントします。

Qiita 表彰プログラム - Qiita

DIAMOND賞受賞の条件は100,000 Contributionだそうで、2021年11月現在、この受賞条件を満たしている僕だけのようです(ドヤァ)。

qiita.com

受賞に際して何かひとことお願いします

えーと、以前から「Qiitaのユーザーランキングで1位になっても全然実感ないわ〜」みたいな話をしていましたが、こうやってトロフィーをいただいてみると・・・やっぱり実感はないですw

そもそもランキングとか、賞とか、そういうものを狙ってQiitaに記事を書いてるわけではなく、「こういうこと、みんなも困ってるんじゃない?だったら、こんな記事を書いたら他の人も助かるのでは?」と思ったものを不定期に書いてるだけなんですよね。
なので、ランキングや賞よりも、Twitterとかで「これ困ってた!でも、この記事ですごくわかりやすく説明されてて助かった〜!」みたいな感想を見かける方が僕にとってはずっと嬉しかったりします。

とはいえ、周りからはよく「すごい」と言われるので客観的に見ればすごいことなんでしょうし、せっかくQiitaの運営の方が「感謝の気持ちを伝えるため、Contributionに応じた記念品をプレゼント」すると仰ってくれているので、ありがたく記念品を頂戴することにしました。

僕の記事に限った話ではないですが、Qiitaはもはや日本のIT業界になくてはならないサイトだと思うので、今後も末永く運営され続けていってほしいなと思います。僕もマイペースに記事を投稿していきます。

みなさん、どうもありがとうございました!

あわせて読みたい

僕がQiitaに書いた記事の一覧はこちらです↓

qiita.com

最近はフィヨルドブートキャンプで生徒のみなさんによくフィードバックしている内容を書いたりすることが多いです。

qiita.com
qiita.com
qiita.com

あと、先日このブログでもお伝えした、「プログラミング問題にチャレンジしよう!」のアドベントカレンダーはめでたく満席になりました。参加登録してくださったみなさん、どうもありがとうございます!記事の投稿を楽しみにしています〜😄

blog.jnito.com
qiita.com

改訂版チェリー本のプレゼント当選結果をお知らせしました & 先行発売の情報等々

お知らせ

先日このブログでお知らせした改訂版「プロを目指す人のためのRuby入門(通称チェリー本)」プレゼント企画の当選者発表を、先ほど行いました。
たくさんのご応募、どうもありがとうございました!

blog.jnito.com

当選者の3名の方々には先ほどメールで連絡しています。

残念ながら落選された方にもその旨ご連絡していますので、もし「応募したのに連絡がない!」という方がいたらTwitter等でご連絡ください。
落選された方も書店等で本書を手にとっていただき、感想を教えてもらえると大変嬉しいです🙏

東京都内の大手書店で先行発売?

本書の発売日は2021年12月2日ですが、編集者さんいわく、来週半ばには東京都内の大手書店で先行発売が始まるそうです。
入荷情報をゲットしたらTwitterでお知らせしますので、気になる人はTwitterのフォローをお願いします〜。

ちなみに、第1版のときもそうだったんですが、技術書(というか雑誌以外の普通の本?)の発売日って「だいたいの目安」でしかないみたいです。
発売日になったら全国の書店でどーんと一斉に発売!・・・ではなく、発売日の前に発売する書店さんもあれば、発売日を過ぎてもしばらく入荷しない書店さんもあったりして結構バラバラな印象です。

1日も早く手に入れたい方は、「とりあえずAmazon等のネット書店で予約」→「発売日前に書店でゲットできたら予約キャンセル」「ゲットできなかったらそのままAmazonの発送を待つ」とするのがベストかもしれません。

電子版も発売されます!

第1版と同様、電子版も発売される予定です。編集者さんいわく、電子版は紙版の発売日(つまり12月2日)前後に販売が始まるのではないか、ということでした。

ただし、技術評論社の電子版販売サイト(Gihyo Digital Publishing)に限り、PDF版が今月中に販売開始されるかも、とのことです。
PDF版を購入するとEPUB版が完成次第、そちらも無料ダウンロードできるようになるらしいので、電子版を狙っている人はGihyo Digital Publishingで購入すると良いかもしれません。

gihyo.jp

その他、情報源あれこれ

改訂版は何が変わるの?と思っている方はこちらの記事をご覧ください。
blog.jnito.com

技術評論社さんの書籍ページに行くと、目次の一覧が見られます。
近日中に試し読みページも公開されるはずです。
gihyo.jp

僕が個人的に運営しているサポートサイトも改訂版の内容に合わせてコンテンツをリニューアルしています。
ruby-book.jnito.com

Facebookページもあるので、Facebookアカウントをお持ちの方はこちらもフォローしていただけると嬉しいです。
Junichi Ito's Books(伊藤淳一の著書) | Facebook
f:id:JunichiIto:20211118081634p:plain

というわけで、2021年12月2日発売の改訂版「プロを目指す人のためのRuby入門」をみなさんよろしくお願いします!!