give IT a try

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

【書評】生成AIに何でも聞ける時代に「Ruby コードレシピ集」をあえて読む価値とは?

はじめに

技術評論社さんから「Ruby コードレシピ集」をご恵贈いただきました。
どうもありがとうございます!

本書の概要を公式サイトから抜粋します。

最新Ruby 3.3に対応。Rubyでやりたいことがすぐにわかる,逆引きレシピ集の決定版。


Rubyの基礎知識や実践ですぐに役立つテクニックを,目的別にまとめた逆引きレシピ集です。文法/データ操作/正規表現/文字列操作/テスト/エラー処理といったRubyの基本から,RubyGems/データベース操作/データ処理といった実践的な開発に役立つテクニックまで,やりたいことをすぐに逆引きできるように整理しました。繰り返し参照しやすい形式で構文やコードをわかりやすく掲載。駆け出しエンジニア,Web開発者,ホビープログラマー,Rubyを使うすべての方にお届けします。Ruby 3.3に対応。

Ruby コードレシピ集:書籍案内|技術評論社

ちなみにページ数は672ページで、拙著「プロを目指す人のためのRuby入門 改訂2版」の568ページよりもさらに分厚いです。

さっそく読んでみたので、感想を書いてみたいと思います。

プルではなくプッシュでRubyのテクニックを学ぶ、という価値

正直に言います。

逆引き系の技術書は20年前にはとても重宝しました。
しかし、現在ではネット上に必要以上の情報があふれ、ここ数年でChatGPTに代表される生成AIも台頭し、コードの書き方で迷うことがあれば「ググる」もしくは「ChatGPTに聞く」でほとんどの問題は解決します。

なので、「Ruby コードレシピ集」が発売されることを聞いたとき、「こんな時代に逆引きレシピ集なんて出しても、あまり意味がないのでは?」と心配になりました。

しかし、本書を読み進めていくうちに、僕は「ああ、本を読むというのはググったりAIに聞いたりするのとは違うんだな」と感じるようになりました。

具体的に何が違うのか?
それはググったりAIに聞いたりする体験はプルで、読書はプッシュである、ということです。

本はあなたに向かって知識をプッシュする

ネットやAIの情報はこっちから聞かないと情報が出てきません。
つまり、自分の中に「これが知りたい」という動機がないと情報が引き出せないのです(=プル)。

一方、本を読むと、本が自分に対して「これ知ってる?」とか「こんなこともできるんだよ」と話しかけてきます。
つまり、「これが知りたい」という動機がなくても、本が自分に対して知識を送り込んできてくれるのです(=プッシュ)。

プル型の知識は受け身の姿勢で待ち続けているとまったく自分の中に落ちてきません。
一方、プッシュ型であれば「本を読む」というアクションさえ起こせば、様々な知識がどんどん落ちてきます。

生成AIに何でも聞ける時代に「Ruby コードレシピ集」を読むのは、このように技術的な知識を自分の中に強制的にインストールできるところにその価値があるんじゃないだろうか?と僕は感じました。

Ruby初心者は逆引きではなく、あえて頭から順番に読もう

公式サイトでは「逆引きレシピ集の決定版」と説明されているので、本書の典型的な使い方はおそらく「やりたいことがあればその都度本書を参照する」という逆引きのスタイルなんだと思います*1

ですが、Ruby初心者(だいたいRuby歴が2年未満の人)はぜひ本書を最初から順に読んでいってほしいと思います。
そして、本書との対話を楽しんでほしいです。

たとえば「025 ヒアドキュメントで文字列を書きたい」であれば、本書が「ヒアドキュメントって知ってる?ちゃんと使いこなしてる?」とあなたに問いかけてると考えてください。

「ヒアドキュメントぐらい知ってるよ!」という場合はOKです。
ただし、本当に自分の知識は合っているのか、実は今まで知らなかった応用的な使い方がないか、といった観点で本文をチェックしましょう。

一方、「ヒアドキュメント、全然知らなかった」とか「そういや昔やったけど、完全に忘れてたわ」という人は、新しい知識を習得するチャンスです!
ここでしっかりヒアドキュメントについて学びましょう。

・・・と、こんな具合で最初から順に読んでいくと、本書を読み終わる頃にはいい具合にRubyに関する知識やコーディングテクニックを吸収できているはずです。

1日10トピックずつ読み進めれば1ヶ月で読み終えられるはず!

前述のとおり、本書はかなり分厚い本です。
ですが、各トピックはほとんどが1〜2ページにまとまっています。
説明も簡潔で大変わかりやすいです。

全部で290のテクニックが載っているので、1日10トピックずつ読み進めれば約1ヶ月で本書を読み終えることができます。
毎朝仕事を始める前に、もしくは通勤の電車の中で、気軽な読み物として一定のペースで読み進めるといいんじゃないかなと思いました。


チェリー本とあわせて読めばもう完璧!?

本書の内容は拙著「プロを目指す人のためのRuby入門 改訂2版(通称チェリー本)」と被る部分も多いです。

なので、チェリー本を何度も読み直す代わりに、Ruby コードレシピ集を読んで復習する、という使い方もありかもしれません。
(あっこれ、チェリー本に載ってたのに忘れてしまってたわ〜、みたいな感じで)

ちなみに、チェリー本とRuby コードレシピ集の主な違いは以下の通りです。

  • チェリー本の対象バージョンはRuby 3.0、Ruby コードレシピ集はRuby 3.3なので、Ruby コードレシピ集の方が内容が新しい
  • チェリー本は「素のRubyの知識」にこだわっているが、Ruby コードレシピ集はgemのインストールを前提とした話題も多い
  • チェリー本はテストコードの説明にminitestを使っているが、Ruby コードレシピ集はRSpecを使っている

このほかにも、チェリー本執筆時に「ページ数が多くなり過ぎるからこれはカットせざるを得ないな」と思った内容もRuby コードレシピ集にはたくさん載っています。
具体的に挙げると、日時データの扱いやファイル操作に関するライブラリの使い方などです。

なので、チェリー本とRuby コードレシピ集を両方読めばRubyに関する知識はかなり広範囲に網羅できると思います!

まとめ

というわけで、このエントリでは「Ruby コードレシピ集」を読んでみた僕なりの感想を書いてみました。

現在Rubyを勉強中のそこのあなた!

本書を毎朝10トピックずつ読んでいきましょう。
そうすれば1ヶ月で知らなかったテクニックや忘れていた知識を効率良く吸収できるはずです💪

あわせて読みたい

著者の一人である id:kymmt90 さんと Shimoju さんによる「Ruby コードレシピ集」の紹介ブログです。
こちらもあわせてどうぞ!
blog.kymmt.com
shimoju.jp

*1:ただし、冒頭の「はじめに」では「本書は学習用途で1章から順に読むのでも、実務用途でやりたいことに応じて必要なところから読むのでもかまいません」と書いてあります。

【書評】技術ブログの書き方を教えてくれる本を読んでみた -Writing for Developers-

はじめに

洋書ですが、"Writing for Developers"という技術ブログの書き方を教えてくれる本を読んでみました。

www.manning.com

以下は公式ページにあった概要の翻訳です(ChatGPTで翻訳)。

「Writing for Developers」は、優れた技術的洞察を素晴らしいブログや記事に変える手助けをします。著者のピョートル・サルナとシンシア・ダンロップは、エンジニアとプロのライターという異なる視点を組み合わせ、説得力のある作品を書くためのサポートを提供します。この本は一般的な執筆ガイドではなく、技術的なトピック、執筆者、読者に特化して焦点を当てています。

楽しい例やユーモラスなイラスト、たくさんのジョークを通して学べます!この本は、アイデアの生成と優先順位付けから、計画、執筆、改訂の際に考慮すべきこと、成功したブログ投稿をさらなる機会への足がかりとして活用する方法まで、執筆プロセス全体をカバーしています。

Writing for Developers

僕も技術ブログをたくさん書いてきた人なので、この本に書いてある内容がどれくらい同意できるのか、そしてどれくらい僕の知らない新しい情報があるのかが気になって読んでみました。

本書の目次

以下は目次の翻訳です(ChatGPTで翻訳)。

第1部:基本原則
1. なぜ書くのか
2. 何を書くべきか
3. 読者を魅了する

第2部:ブログパターンの適用
4. 「バグハント」パターン
5. 「Xで書き直した」パターン
6. 「どうやって作ったか」パターン
7. 「学んだ教訓」パターン
8. 「トレンドに関する考察」パターン
9. 「マーケティングっぽくない製品の視点」パターン
10. 「ベンチマークとテスト結果」パターン

第3部:執筆プロセスの確立
11. 作業用ドラフトの作成
12. ドラフトの最適化
13. フィードバックの取得
14. 完成させる

第4部:プロモーション、適応、拡張
15. 注目を集める
16. ブログ記事からカンファレンストークへ
17. 本を書きたいなら

付録A. 執筆と出版のリソース
付録B. AIの使用と濫用

本書の感想

想定している技術ブログのレベルが高い

まず、本書で扱っている「技術ブログ」は僕が想像していた「技術ブログ」よりも少しレベルの高いものでした。
「レベルが高い」というのは「技術的に高度」という意味です。

たとえば10章の事例として挙げられていたのが "Redpanda vs. Kafka: A performance comparison"(RedpandaとKafkaのパフォーマンス比較)というブログ記事です。
実際にアクセスしてもらうとわかりますが、「エンジニア歴1年目」みたいな人が書けるような内容ではありません。

www.redpanda.com

本書ではブログの内容をそのままスライドに書き起こせばすぐに技術カンファレンスで発表できるような、そういうレベルの技術ブログを想定しています。
実際、16章ではブログの内容をベースにしてカンファレンスで話すにはどうすればいいか、という話が書かれています。

もちろん、「エンジニア歴1年目」みたいな人が参考になるような内容もいくつかはありますが、本書の対象となる読者は「すでにエンジニアとして豊富な経験と実績を持っているが、それらをまだ外部に情報発信したことがない人」になるんじゃないかなと思います。

英語が母国語ではない人向けのアドバイスが載っている

また、本書ではところどころに「英語が母国語ではない人向けのアドバイス」が載っている点も興味深かったです。
これはどうやら筆者の一人であるPiotr Sarna氏がポーランド出身だからみたいです。
なので、「日本人だけど英語で技術ブログを書いてみたい人」や、「海外の技術カンファレンスで発表してみたい人」が読むと参考になりそうです。

生成AIの活用方法が出てくる

他には随所に生成AIの活用方法が出てくる点もイマドキだな〜と思いました。
僕はブログを書くときはほとんど生成AIは使っていませんが、今後はちょっとずつ使ってみようかなと思いました。

本書はまだ未完成。そして実は無料で読める!?

2024年8月時点では本書は実は未完成です。
大半の章は執筆済みですが、最後の「付録A. 執筆と出版のリソース」と「付録B. AIの使用と濫用」はまだ執筆されていません。
「未完成だけど執筆済みの部分なら読めますよ」というManning Early Access Program (MEAP)があるので、これを使って僕は電子版を購入しました。

が!!

さっき気付いたんですが、本書は無料で読めるみたいです。
公式ページのtable of contents(目次)に以下の文章があります。

You can see this entire book for free. Click anywhere in the table of contents to start reading
(この本全体を無料で読むことができます。目次のどこでもクリックして、読み始めてください)

Writing for Developers

本当に?と思って目次のリンクをクリックしてみると・・・読めました!!

ずっと無料なのか、期間限定なのかはわかりませんが、現時点では無料で読めるみたいなので興味がある人は公式ページにアクセスしてみてください。

www.manning.com

2024.8.18追記:完全無料ではないようです

コメント欄にて「無料で読める部分ですが、制限がかかっているようで、数パラグラフまでは読めますが、それ以降はMANNING ONLINE のサブスクリプションを購入しなければ読めませんでした」という情報を教えていただきました。
コメントしてくださった id:kwy さん、どうもありがとうございます!

まとめ

というわけで、このエントリでは僕が読んだ "Writing for Developers" という本を紹介してみました。

本書の対象となっている「技術ブログ」が僕がふだん書くような技術ブログよりも高度なものだったので、すべての内容がすぐに役に立つわけではなかったですが、将来「海外に向けて発信したい」とか「技術的にもっと高度な内容を発信していきたい」と思ったときは本書が心強い味方になってくれそうです。

ブログを書くときだけでなく、技術カンファレンスで発表するときにも参考になりそうな内容が多かったので、自分の成果をこれからどんどん外に向けて発信していきたいと考えている中級者以上のエンジニアはぜひ本書を取ってみてください。


おまけ

【書評】脳に関わる技術書を2冊読んだ #プログラマー脳 #脳に収まるコードの書き方

はじめに

プログラミングと脳の関係が注目されているのでしょうか?
最近「脳」がタイトルに含まれる技術書が2冊発売されました。

1つは「プログラマー脳」。

もう1つは「脳に収まるコードの書き方」です。

個人的にもプログラミングと脳の関係はちょっと気になるので、2冊とも買って読んでみました。
このエントリではこの2冊の感想を書いてみます。


書評:プログラマー脳

サブタイトルに「優れたプログラマーになるための認知科学に基づくアプローチ」とあるように、プログラマの認知能力に関する研究をベースにコードの理解しやすさ・しにくさを議論する本で、いろいろと興味深く読めました。

サンプルコードはC++やJavaで書かれているケースが多いですが、題材としてちょこっと出てくるだけなので、C++やJavaを知らなくても全然大丈夫です。

プログラミングを始めたばかりの人にはピンと来ないかもしれませんが、現場で2〜3年働いている経験者なら実務で見たコードを思い出しながら、「あー、だからあのコードは読むのがしんどかったのか〜」と納得できるかもしれません。


書評:脳に収まるコードの書き方

うーん、この本は正直ちょっと期待外れでしたね。
悪い本ではないと思うのですが、「プログラマー脳」に比べると「別に脳みそ関係ないやん」っていう話題が多かったです。
僕としては、プログラミングと脳の関係に注目した斬新な切り口でコードの良し悪しを語ってほしかったなあ。

この本を読みながら僕が頭に思い浮かべたタイトルは「達人プログラマー・実践編」です。
別の本の名前を付けちゃってますけど。

要するに、「達人プログラマー」みたいに、良いプログラマになって良いコードを書くための考え方や習慣を、具体的かつ実践的なコード例とともに解説した本、という感じです。
タイトルにある「脳に収まるコード」というのは、脳みそそのものの話ではなく、「理解しやすい良いコード」を意味しているだけなんだと思います。

もちろん内容自体は間違ったことは書いてないですし、現場経験の浅いプログラマは知っておいた方が良い知識がたくさん載っていますが、僕みたいな20年選手が読むと「せやな」「それな」という話題がほとんどでした。

あと、割合的に C# に特化した内容が多い点にも注意が必要です。
僕は前職で C# をやってたので、C# はそこそこ読めますし、「最近の C# はこんなふうになってるのか。へ〜」と思う点も多かったですが、 C# に触れたことのない若手プログラマが読むとピンと来ない部分が多いかもしれません。

個人的には以下の書籍の内容をひとまとめにした本かな、という印象でした。

  • 達人プログラマー
  • リーダブルコード
  • リファクタリング
  • レガシーコード改善ガイド

そこに筆者の考える「C# ならこう作るといいよ」という具体的なコード例が加わる感じです。
なので、この本が一番役立つのは「若手 C# プログラマ」なんじゃないかなーと思います。


原題には「脳」が含まれるのか?

ちなみにどちらの本もタイトルに「脳」が含まれていますが、はたして原題はどうなんでしょうか?
ちょっと調べてみました。

「プログラマー脳」の原題は "The Programmer's Brain" です。
こちらは "Brain" が入ってますね。

一方「脳に収まるコードの書き方」の原題は "Code That Fits in Your Head" でした。
"Brain" ではなく "Head" ですね。

直訳すれば「頭に収まるコード」でしょうか。
たしかに「脳に収まるコード」と書いた方が、日本語として収まりがいいですが、「プログラマー脳 = The Programmer's Brain」に比べるとタイトルからして内容の「脳みそ感」はちょっと薄くなってしまうのはやむを得ないのかもしれません。