共著で執筆した『Ruby コードレシピ集』(技術評論社)が本日2024年8月26日に発売されます。
【新刊】2024年8月26日発売『Ruby コードレシピ集』本体3,400円+税,山本浩平,下重博資,板倉悠太 著,Rubyでやりたいことがスグに逆引きできるレシピ集。定番機能から実践テクニックまであますところなく集めました。https://t.co/jQkdmYD9tp pic.twitter.com/hPKJyU4K0V
— 技術評論社販売促進部 (@gihyo_hansoku) August 6, 2024
Ruby コードレシピ集とは
本書は技術評論社のレシピ集シリーズのひとつです。 いわゆるクックブックや逆引きレシピと呼ばれるスタイルで、Rubyの基礎知識や実践で役立つテクニックを目的別にまとめた書籍となっています。2023年にリリースされたRuby 3.3までの機能に基づいて書かれており、Ruby 3.1〜3.3で動作を確認しています。
対象読者や内容については、共著者のkymmtが『Rubyコードレシピ集』はどういう本かを書いているのでこちらをご覧ください。
私からは執筆の流れや、工夫したポイントについてお話しします。
執筆の流れ
原稿はMarkdownで執筆し、GitHubのリポジトリで管理しています。章ごとにPull Requestを立て、著者間でレビューしたあとマージします。 紙面の作成までは校正も含めてGitHub上で作業しました。
サンプルコードは原稿内に直接コードブロックで記述します。このとき、サンプルコードとして実行可能なものはコードブロックにruby
を付与し、それ以外(例示のためのコードや実行結果など)には付与しないようにします。これを用いてruby
のコードブロックのみを原稿から抽出するスクリプトを作り、抽出されたコードをRubyの各バージョンで実行することで動作確認を行いました(このスクリプトももちろんRubyで実装しています!)。この仕組みのおかげで原稿段階での動作確認はずいぶん楽に行えました。
しかし紙面の作成後は、紙面上で修正指示を通しての編集となります。修正を行ううちに実行不可能になったり、ミスが入り込んでしまうことがあります。 最終的な動作確認は人海戦術で行うしかなく、入稿直前に著者で集まり、ひたすらコードを書き写して実行しました。その甲斐あって紙面のサンプルコードはすべて実行できるはずですが、もしミスが残っていたら申し訳ありません……。
工夫したこと
この本はRubyを主眼に置いており、Railsを対象にはしていません。しかし2024年現在、Rubyの用途の多くはRailsを用いたWebアプリケーションです。 さらに、日々の開発ではRubyの標準機能だけでなくGemを用いて開発することも多いでしょう。
Rubyそのものを学ぶことに重きを置きつつも、次に進むためのヒントになるように、章立てや各項目で以下のような工夫をしています。
RubyGemsを活用する
Chapter 15「RubyGemsを活用する」ではgemコマンドおよびBundlerについて解説したほか、本書にはサードパーティーのGemを用いた項目もあります。
たとえばChapter 18「使いやすいコマンドラインツールを作る」では、標準ライブラリであるoptparseとRakeに加え、Thorを用いてサブコマンドを持つCLIプログラムを作成しています。
他にもJSON、YAML、TOMLの読み込み、DATA
/__END__
やbundler/inline
など、スクリプティングに便利な機能は標準ライブラリかどうかにかかわらず複数取り上げています。RubyGemsを活用しながら、ちょっとした作業の自動化やコマンドラインツールにRubyを使ってもらえるといいなと思います。
実践的な知識を提供する
本書はレシピ集として書かれているので、各項目はやりたいことがベースになっています。 とはいえ単にサンプルコードを提示するだけでなく、よく使われるイディオムや、日々の開発で役立つような背景情報をできる限り補足しています。
たとえば自己代入を利用したインスタンス変数の初期化(@foo ||= bar
)や、Ruby 3.1に同梱されるPsych 4以降でYAML.load
の挙動が変わった理由、エンコーディングにおけるSJIS(CP932)とShift_JISの違いなどをコラムとして掲載しました。
Webアプリケーションの基礎を理解する
発展的な章として、Chapter 21「基本的なWebアプリケーションの機能を実現する」があります。この章ではSinatraなども利用せず、Rackのみを用いて簡単なWebアプリを作成します。
Ruby on RailsをはじめとしたRubyのWebアプリケーションフレームワークの多くは、Rackをベースにして開発されています。 RubyによるWebアプリ開発を支えるRackについて理解を深めると、Railsもより深く理解できると考えて書きました。
Rackミドルウェアを自作する項目もあります。機能開発の際にRackミドルウェアとして実装する選択肢も思い浮かぶようになれば嬉しいです。
おわりに
メールを振り返ったところ、最初に執筆のお声がけをいただいたのが2021年5月ごろでした。3年以上かかってしまいましたが、無事に発売を迎えられて安堵しています。
紙書籍・電子書籍ともに本日発売です。ぜひお手にとっていただければ幸いです。
- 紙書籍(Amazon)
- 電子書籍(Gihyo Digital Publishing)
- その他書店へのリンクは技術評論社のページにあります
『プロを目指す人のためのRuby入門』で知られる伊藤淳一さんに書評をいただきました。ありがとうございます!