00:00

はい、今回はゲストがいるので、もう早速紹介しちゃいます。板倉優太さんでーす。

こんばんは、板倉優太です。

株式会社、あ、違う、タラレバ株式会社代表取締役の板倉優太さんです。

はい、タラレバの代表取締役、そうなんですよ。

2月に。

いや、もっとあったかな、4月ぐらい。設立は4月ですね。

あ、そうなんだ。なんか調べたら、あ、ほんとだ、設立日4月って書いてあるな、ほんとだ。

そうですね。でももう作ろうと思ったのは2月ぐらいかもしれないです。

株式会社やってるとは知りませんで。

いや、ほんと別に、ただやってみただけで、ちょっとでも後悔したりもしますね。
なんか手続きとか。

そうなんだ。

めんどくさすぎて。

そんなこともあったんですね。
じゃあ今日は、今回は会社の話はそんなにするつもりはなくて、
著書ですよ、著書『Rubyコードレシピ集』出版おめでとうございます。

ありがとうございます、おかげさまで。

はい、でですね、これは優太さんのほか、著者がもう2人で合計3名で書かれてる、
技術評論社から出ているプログラミング言語Rubyに関する本で、
僕も技評さんから送っていただいてですね、ありがたいことに。

送らせてもらいました。

はい。で、ざっと読んで、ほんとに忘れてたんだけど、確かにすごい前に、
1回技評の人に連絡を取るっていうところを確かにお手伝いさせてもらったことがありました。

はい、そう聞いて。僕も、僕ではなくて、著者の1人がなんか相談したっていうふうに聞いていて。

はい。

はい、その感謝を込めて献本させていただきました。

そう、僕は完全に忘れてたんだけど、たぶん山ちゃんが覚えててくれていて、
それで、あ、それで本もらえるんだ、すごいラッキーと思っていただいてですね。
それならばということで、はい、住所伝えて。
で、もらったからには何かしらこの本を紹介したいなと思って。

ありがとうございます。

自分のCosenseにページ作って感想を書くのは、そりゃそれでやろうと思ってるんですけど、
ゆーたさんだったらすぐ連絡つくし、著者インタビューとかやってみたら、
こういうの発売した直後ってゲスト出演OKしてもらいやすいっていうイメージがあったので。

はい、僕はいつでもOKしますよ。

確かに、そうかも。別に普段でも出てくれって言ったら出てくれたかもしれないけど、
なんとなくこう何かが発売した直後の人って、
それについてしゃべるのは応じてくれやすいイメージがあったので。
03:03

はいはい。

これはワンチャン出演してもらえるのではと思って声かけてみました。

いや、むしろね、なんか書籍のこと話すのちょっと僕自信ないですよね。
うまく話せるか。
ありがとうございます。

いやいや、嬉しいなと思ってね。
なんで今日は『Rubyコードレシピ集』の話をちょっと試しにやってみたらどうなるのかっていうのをね、
試してみようかなという回でございます。
そうだな、まずは、ゆーたさんと僕は元同僚ですっていうことを、
そうですね。
先に言っとくと聞きやすいかな。
のみならず、著者がね、全員僕からすると元同僚なので、
割とよく知ってる人たちが書いた、
信頼しているソフトウェアエンジニアたちが書いた本っていうのが、
僕が表面的に見えるところですね。

ありがとうございます。

はい、プラス、後ろから本をめくっておくとレビュー協力のとこにですね、8人名前があって、

はい。

あ、全員元同僚なんですね。

そうですね。
身内の力を頼って。

うん。

はい。

はい、だから著者3人とレビュアー8人、合計11人の元同僚の名前が出てきたので、
これはちょっと僕からするとちょっとエモさもあるし、
これ結構長い期間書いてました、この本。
最近じゃないですよね、書き始めたのに。

長いです。僕もこの撮る前に、Slackのチャンネルの最初を見たら、
2021年6月って出てました。

じゃあ、プロジェクト発足はもう3年以上前か。

そうですね。

けっこう難産でしたか?

そうですね、難産でした。
僕は、途中で「出せないかもな」って、本当に僕は思ってましたね。

ああ、そうか、これ頓挫して何もなく終わるかもな、みたいな。
書籍ってそれはありますよね、なんていうか、途中経過で何か世に出るものってあんまりなくて、書籍って。

うんうん。

だから本当に完成しないと出ないから、けっこう All or Nothing なプロジェクトだから、
書籍って結構怖いし、あと届いてみて思ったのは、これすごい分厚いから、
これなんていうか、スコープの調整どうなったんだろう、なんかもうちょっと薄い状態で出す判断みたいなのもあるのかなと思うぐらい、
いっぱい書いたなと思いましたね。

そうですね、3人でたくさん書いたけど。
僕はそう、友人の話で書籍が出なかったみたいな話も聞いてて。
06:01

うん。
まあ、そういうこともあるよなと思って。
うん。
そうそう。で、僕からはなんか、技術書展とか、最近は。

同人、同人出版。

同人出版もよくあるんで、そういうのも考えないとな、みたいなことを実は言ったことはありますね。

3年は出たけど、2年とかやってまだ出てないってなると、いろいろ多分どうするんだろうってなりますよね。

そうですね、いろんな人に「まだ書いてんの?」とか言われました。

そんなこと言ってくる人いたんだ。
おもしろいな。僕、レビュアーとして関わってた書籍が出なかったっていう経験はあるので、
なんとなく動きがなくなって、そのまま止まっちゃったな、みたいなのも経験あるから、
書籍が世に出るのって結構、僕からすると奇跡みたいな出来事だなと思ってるので、出ないっすよね、書籍って。

そうなんですね。

誰かがすごい頑張んないと出ないし、僕は技術評論社さんだと、WEB+DB PRESSで記事書かせてもらったことは何度かあるんだけど、
雑誌はもう明確に何月号に乗るやつって言って始まるから、なんか泣いても笑っても締め切りはもう割と義分なものとしてきて、
それまでに書けなかったら何が起こるか、僕はちょっと体験したことがないんでわかんないですけど、
まあでも、僕が見た範囲ではそこまでにはなんとか、みんなそれなりになんとかするから、
それこそヤマちゃんと一緒に書いたこともあったな。
だからそれはわかるけど、でも書籍って別に締め切りはないというか、書かなきゃただ出ないっていう感じだから。

そうですよね。
怖いですよね。
でも本当に今名前が出てるけど、ヤマちゃん。
ヤマちゃんがもう出すための何か、いつまでにこれ、いつまでにこれみたいな、その締め切りを作るみたいなこととか、
すごい今一番頑張ってくれてましたね。

いやーよく出た。

あと、Ruby系の書籍を書いてる人で言うと、伊外賀さんがRubyの新しい本が出たってことをすごい喜んでましたよ。

いやーそうですよね。今本屋とか行ってもコーナーとかないんですよね。

最近やっぱあるのはPythonとかね。

Python。

あとTypeScriptとかですか。
そうですよね。それもあって、本当に出すのかみたいな。
一回本屋とか行って、技術書のコーナーとか普通に眺めたりしてて、あれRubyのコーナーないなとか。
09:02

あっても本当に棚の一角みたいなのが多いから、そういうのも不安でしたね。

そうですよね。
この執筆期間の3年ちょっとで言うと、これも全然僕が話題にしなくても散々言われてる話だけど、やっぱりLLMの大統みたいなのがあって、
このレシピ集、LLM時代のレシピ集とはみたいなことは、他の人が言及してるのも今日まで見かけましたけども、
その辺も自分がもし著者だったら、レシピ集書いてる途中にチャットGPとか盛り上がったらいろいろ考えちゃうんじゃないかなっていう想像をしました。

そうですね。僕はめちゃくちゃ考えましたけど、ただ著者間でそういう話はなかったんですよね。
もしかしたら言ったらみんなこう、確かにってなっちゃうのを恐れてたのかも。まあそれはちょっとわかんないですけど。

なるほど。

僕はなかなかそういう不安だって言い出すのも怖くて。

そっかそっか。

だからその伊藤純一さんが書評で、LLMあるけど、まあでも本は本でいいとかあるよねみたいな、ざっくり言うと。

そういう書評をしてくれて、それが救われましたね僕は。

いいですね。
出してからも不安で、その書評で初めて良かったなって思いました。

いい話。そっかそっか。出してから不安だったんですね。そっか。出すまでの不安と出してからの不安、近くとも2段階あったんだ。

そうですねそうですね。僕、他の著者や出版社の方はともかく、まあぶっちゃけ、僕とか誰が使うんだろうみたいな。
ちょっとJPTでいいじゃんみたいな。

はいはいはい。

ちょっと不誠実なとこもあるかもしれないですけどね、書きながらこういうこと言うのは。
でも正直そういう不安はありましたね。

参考文献にはね、エブリディレイルズが上がってたから、ここで伊藤純一さんとの接点もあるなと思いながらね、ページをめくってましたね。
参考文献、確かにこうなるかと思って、メタプロルビーとか。

はいはい。

あと、結城ひろしさんの暗号技術入門第3版とか。

そうですね。

なるほどーと思ってね。あとパーフェクトルビーもあったし、あとは公式ドキュメントか。

うんうん。

そうそう。なるほどね、こういう参考文献一覧になるんだなっていうのは、これもおもしろかったですね。
12:03

そうですか、どういうとこ、逆質問。

いや、でも確かに、公式ドキュメントをアルファベティックに順番に読んでいくのって結構むずいと思うんですよね。

はいはい。

だから、ある種、なんていうのかな。
例えば、ちょっと今の時代はだいぶ減りましたけど、音楽を聴こうと思ってCD屋さんに行ったときに、CDがアーティスト名の50音順とかで並んでるけど、
50音順では音楽って探さないなと思っていてね、少なくとも僕のメンタルモデルとしては。
お目当てのこれがある場合はそうだね。
でも一方で、誰々のおすすめとか何かしらのキュレーションとか、
人の編集が入って、店員さんの今イチオシとか、何か季節でのあるコーナーとか、そういうところがきっかけで手に取ると思うんですよね。
はい。
なんで、この目次を見ると、これはだからキュレーションっていうか、この著者3人のセレクトショップだなみたいなふうに思ったので、
そのおかげで、書いてある内容はものによっては公式ドキュメントに書いてあることを別の表現をしてたり、再作文したりしてるものもあると思うんですけど、
この目次に強い価値があるんだなっていうのを思ったんですよね。
そうそうそうそう。
だから、それでザーッと読んだ後に最後の刊末の方に参考文献一覧書って、
あ、確かに確かにそれぞれの要素はこういう本に入ってるやつだなって思ったけど、
やっぱこれ編集のところに一番価値が詰まってる本なんだなって思いましたね。

あ、なるほど。
うん。
そうですね。
うん。

公式ドキュメント読めばわかるみたいなことはたくさんありますよね。
ただ、公式ドキュメントってだいぶ目的がないと、
公式ドキュメントのあるクラスのあるメソッドって、
ドキュメント読みになかなかいかないと思うので。

うん。

Rubyのドキュメントも読むたびに発見があるなんてことは僕の周りでもよく言われてますけど、
それは本当にそうで、
なんか出会うきっかけがないといかないけど、
この目次見ると、
そうですね、Rubyをここ2年ぐらいで書き始めた人からすると、
あ、こんなこともできるんだ。
あ、自分もうちょっと回り道してたなみたいなのが、
まあ必ず1個や2個じゃなく見つかるだろうなっていうのが目次を見てて思いましたね。
うん。

ああ、ありがたいですね。

はい。

本当、そういう言葉1個1個はありがたい。

僕がこの本ざっと読んで、
あ、これ知らなかったっていうのがいくつかあるので、
これを発表します。

はい、お願いします。

まずはレシピ037。
15:02

うん。
なんだっけ、データ?

はい。

データデファインするやつ。
これがRuby 3.2からデータクラスみたいなのが入ったっていうことを、
これクラスかモジュールか?
あ、データクラスですね。
クラス。
これ知らなかったんで、へえって思いましたね。

僕もこれ聞いてへえって思いました。
でもそうですね、この3.何対応とかっていうのを歌いたいので、
多分書き始めたときは3.2だったのかな最初が。

そうか。

とにかく最新の使えるようになったものとかを、
ちょっと洗い出してみんなで見ながら、
へえ、こういうの使えるんだみたいな、そのときに知ったっていう感じ。

なるほど。
もともと誰かが活用してた書き方というよりは、
そっちのRuby 1、Ruby 2、Ruby 3のリリースのとか見て、
へえみたいなのの中からネタを探したってことか。

確か。
もしかしたらちょっと違うかも。
でも使ってたかも、他の二人は。僕は少なくとも使ってなかったです。

僕はもともとStructもあんまり使えてなかったから、
Structのさらにって感じですよね。
それのイミュータブルなやつって感じですよね、データクラスね。

そう思います。

なんかね、やっぱりWebアプリケーション開発をメインのこのRubyの使い道にしていて、
時にはJSONで外部のWebAPIから返ってきたJSONを何か処理するときって、
連想配列、Rubyでハッシュで済ませちゃうことは多いなと自分は思うんですけど。
確かにこういうデータがあると、もうちょっとモデルっぽく使えるというかね。
クラスっぽく使えるのは。
なるほどと思ったので、まず1個目これね。
データクラス、3.2でこんなん入ってたんだっていうのが知れたのが良かったですね。
良かったです。

じゅんさんも新しい知識はもらえたということですかね。

いくつかありましたよ。

それは嬉しいですね。

あと次ね、次にへーと思ったのが、086かな。
086で連想配列のとこかな。
ハッシュのところで、あれだ。
valuesAtというメソッド知らなかったですね。

はいはいはい。

これそんな。

これ僕書きましたね。

これ。

はい、この項目記憶あります。

これ便利ですよね。

何層に見える。

これ多分僕なんかセレクトとかで書きそうだなと思いましたね、これ知らなくて。
はいはいはい。
セレクトして、セレクトとかマップとかで書きそうだなと思ったけど、
こんなvaluesAtなんてあるんだっていうのは完全に知らなかったので、へーと思いましたね。
18:04

あとは次がね、109。
109。

109で知ったのが、
ストリングクラスのlinesっていうメソッドですね。

はいはい。

これも多分、開行文字でスプリットしてイーチとかしてましたね。

あーなるほどなるほど。

だからこんなlinesってやると、なんか一行ずつ取れる。
よくやるのはファイルリードしたやつを、
はいはい。
スプリット、ファストラNして、
はいはいはい。
イーチで、でブロック変数lineってやって、一行ずつなんかやるってよくやる処理なんですよね、僕の生活だと。

ふんふんふん。

こんなlinesってそのまま書けて、しかもチョンプトゥルーとか渡せるんだっていうのは知らないと思いました。

あーそうなんですね。
僕結構この、個人的にはRuby便利だなって思い始めた時の、

うん。

その便利だなって思ったメソッドの一つかもしれないですね、これ。

じゃあこれ昔からあるんだ、このstringlines。

これ多分昔からあります。

へー、知らなかった。

僕もその頃C言語でいろいろ書いてたんですけど、
うん。
Cでテキストを扱うとき、そういうそのスプリットとかして、最初ね、ロックして、

うん。

ファイル読んで、
うん。
で、最後の開業文字を消すとかね、やったりしたり、チョンプとかなんかすごい便利だなって思ったんですよね。

思いますよね、これで。
うん。
やっぱり知らないのあって、かつstringclassの公式ドキュメント見に行って、その中のlinesに何年も気づいてないわけなんで、
こういうキュレーションがなかったら、僕あと数年気づかなかった可能性はすごく高いと思いますね、これでもね。

これは普通に多分使えますね。
それテクスチじゃないけど、日々のスクリプティングで。

うん。

はい、ぜひ使ってください。

ありがとうございます。いいね。
あとstring1.9以降、stringcharsとか入って、一文字ずつにバラすのとかもすごく得やすくなって、
それRuby1.8ぐらいから書いてる人ってstring.split++とかで、一文字ずつにバラすみたいな、テクスチで書くのよくあったと思うんですけど、
charsがあってlinesもあるんだなっていうのはね、charsとセットで、多分これ僕覚えたから次使うシーン来たらこれ使えるだろうなと思います。

ぜひぜひ。

うん。ありがとうございました。
21:01

あとは、じゃあ次ね、次の知らなかったやつ。次164。

164の。

うるうどし。うるうどし判定メソッドあるんだって。

ね。これも僕は知ってたかな。

知ってた?

多分そのレシピ集の項目考え出すみたいなときに、こういうタイトルそのままうるうどしかどうか判定したいって項目みたいな、ブレスみたいな感じで。

リープっていうメソッドがあるんですね。

本当にメソッドを紹介してるだけなんですよね。

だから、多分本当にレイトクラスの公式ドキュメント見に行ったらリープメソッドがちゃんとあって、
トゥルーフォルス返す審議値のメソッドだっていうのはわかるけど、これもやっぱり目次がなかったら、
まあでもどうだろうな、実際判定したい段になったら、なんかRuby、レイト、うるうどしで検索して、そのときにたどり着いてたんじゃないかなと思う、これに関しては。
ストリングラインズはもう手癖で同等の処理を自前で書いてたから、多分しばらく知らなかった可能性が高いけど、
これは必要になってたら書いたかもなっていうね、気持ちはしますね。

まあそう、探しますよね。
これおもしろいのは、なんかグレゴリオ歴とユリウス歴みたいな。

はいはいはい。

なんかそういうのもあるんですよね。
グレゴリオンリープだっけな、ちょっと度忘れしちゃいましたけど。

えー。

ちょっと紹介しきれてないけど。

うん。

なんか、僕はリープしか知らなかったけど、格段で調べたときに、そういうグレゴリオン、グレゴリオンリープだっけな、
まあとにかくグレゴリオ歴、ユリウス歴とかいう使い分けをRubyが組み込みで実装してっていうのは。

へー、ほんとだ。
びっくりしました。
ありますね。
得意メソッドでグレゴリオンリープとジュリオンリープがありますね。

ありますね、そうそう。
知らんなー。
さすがにそこまではいいかなと。

うん、確かにな。
まあ、僕はそもそもグレゴリオン歴とユリウス歴の違いを説明しろって言われたらできない。
わかんない。
わかってない。
必要にならないと調べない。

あたかも知ってますみたいに書くのもね、難しいかな。

でもインスタンスメソッドの方にはグレゴリアンとかがあるんですね。知らなかったな。
そうか、じゃあデイトークラスのインスタンス作られる時点で、ユリウスかグレゴリアンか情報持ってるってことですね、インスタンスがね。

そうそう。使う人いるんすかね、そのユリウス。あれユリウスですよね。
24:00

ユリウス、そうそう。

多分日本カタカナ表記書でユリウスになるんでしょうね、このジュリアンが。

すごいですね。
そっか、これも知らなかったやつ。あとは、あと最後かな。
あとね、僕、これ読んで気づいたのが、僕、Rubyでトムルファイルをパースしたことないんだなってことに気づきました。

これは僕もないですね。

YAMLとかJSONは散々パースするけど、トムルって僕、語言語で何か書いてるときにトムルパースすることはまあまああるなって思うんですけど、
あ、なんかRubyとトムルって自分の中で距離遠かったと思いましたね。

まあやっぱYAMLがめちゃくちゃ強い。
YAMLってそもそもRubyのためのあれですよね、フォーマット。

え、そうなの?

いや、わかんない。

YAMLってどこ生まれなんでしょうね。

でも、RubyだったらYAML使いますよねって感じはしますよね。組み込みでライブラリもあるし。
あるし。
で、Webの技術ではJSON使うから、わざわざトムル使うってまあよっぽどトムル好きとかになりますよね。
でもそんなこと言ってるのかちょっとわかんないけど。

まあ何でもいいっちゃ何でもいい。トムルでもYAMLでも僕は語に入れば語に従うぐらいの、特にそんなにどっちが好きとかもなかったから。
でもトムルのパースの話があって、その場合は全部使うんだっていうのが発見でしたね。

そうですね。

何だっけ、パーフェクトトムルだっけ。

パーフェクトトムル、そうですそうです。
まあいろいろあるんですけどね。パーフェクトトムルでいいかみたいな感じで、そんな深く考えずに選びました、パーフェクトトムルは。

トムル、そっか、244ですね。パーフェクトトムル、パース。
まあだいたいこういうの、パースとダンプとかあとトゥートムルみたいなのがあるんだろうなっていう感じだな。

パーフェクトトムルはね、まめさんっていう。

あ、コミッターの?

そうです。

遠藤さん。
遠藤さんの個人リポジトリなんですよね。

それもこれでいいのかなみたいな、なんか不安?みたいなのあったけど、一番出来が良さそうだからこれかなって感じでした。

あ、本当だ。GitHubのリポジトリのURLにもあった。まめすらパーフェクトトムルでした。
そっかそっか。なるほど。こんな感じですね。
27:00

僕が、えー知らなかったっていうのは今述べたあたりですかね。
あとは、僕は知ってたけど大事だなって思ったのが、47の、なんていうのこれ。ニルガードみたいな。

セーフナビゲーションオペレーター。

あーそうだ、セーフナビゲーション。これが日本語圏ではぼっち演算子とも呼ばれることがありますよっていうのは、こういうのは知ってる人から聞くとかしないと自分からは絶対に出てこない言葉だから、こういうのがちゃんと日本語で解説されてるっていうのはコミュニティにとってすごい大事だろうなって思いましたね。

そうですよね。僕も、ぼっち演算子って、僕が言葉で口頭で使ってるの聞いてたけど、僕はピリオドがポッチだと思ってたんですね。

あーなるほど、はいはいはい。

そうそうそうそう。なんかポチとかポッチみたいな言い方するかなと思って。それでぼっち演算子だと思ってたんですけど。

えー、音から入ったんだ。

一人ぼっちのぼっちから来てるって。

そうそうそう、アローンのね、なんかこう座って石いじってるみたいなそういうやつ。
こういうのは知らない人からすると、へーって感じですね。なんかあんまりオフィシャルなドキュメントっていうのはもうちょっとカジュアルなドキュメントに記されてる系だと思うので。

うんうん。

ちょっと前まではアクティブサポートのオブジェクトトライでやってたやつですよね。

はいはい。これもね、そのRubyのなんかおもしろいユーモア、Rubyコミュニティのユーモアみたいなのを誰かが言ってましたね。
うん。
これを一人ぼっちのぼっちで表すみたいな。

そうそうそう。

あんまり個人的には多用しない方がいいんじゃないかっていう気持ちを。

まあまあね。

結構セーフナビゲーションオペレーターって長いけど、そういうことが多いかな。

はいはいはい。いやそうそう。

でも親しみやすさみたいなのを最初感じてもらうにはそういいと思いますね。

確かに。コードレビューとかでレビューコメント書くときはセーフナビゲーションオペレーターってニルに備えといた方がいいですかねぐらいの書き方をすると思うけど、
フェアプロ中に口頭では言うかも。
言うかも。
そういう感じ。ぬるぽぐらいの気持ち。

確かに。

あんま積極的に文章にはぬるぽって書かないけど、口頭ではこれぬるぽ出るかもね。

口頭表現のね、おもしろさ、かわいさみたいなの大事かもしれないかもね。
30:01

ね、口語として会話の道具としてはいいかもなと思いましたね。

はい。

そんな感じかな。で、全体読んでザザッと読んで、僕も気づけばね、15年とか、ルビーを日常的に書くなって15年ぐらい経つので、
正直、前半のほうは、おそらく自分は対象読者というよりは著者たちに近い、現在地はそうかなと思いつつ読んだんですけど、
手に取るときの感じはですね、観光ガイドに近いなと思いました。そんな印象で読みましたね。

はいはいはい。

うん、なんで、例えば僕、約1年半前に長野県松本市に引っ越してきたんですけど、
うんうん。
来たら、まずJALANとかベタナー観光ガイドの本、1冊買うんですよ、まず。

うん。

で、見て、ここにこういう景色があるよとか、ここにこういう名物グルメがあるよっていうのがザッと載ってて、
やっぱり最初ってこう、何でどう検索していいかがわかんないから、
そういうある程度こう、キュレーションされた編集者が入ってる情報を、とっかかりにいろんなとこ見に行って、
で、わかってきて、もっとこういうのないのかなってなったら、ようやく自分でこう検索したりとか、
能動的なサーチっていうのができるようになるんだけど、そこに行くまでには、その観光ガイドブックみたいなのがあるとすごくよくて、

うんうん。

だからやっぱりRuby、Ruby書くようになって1年、2年ぐらいの人が、とりあえず一旦これされて、読み物として目次パッと見て、
なんか順番に見てて、ああ、これは自分の頭の中でRubyのコード浮かぶなみたいなやつはそれで全然よくて、
うんうん。
うん、これってなんか1記事になる、1レシピになるんだって思う、なんかうんって思うものがあったら読んで、
読んで、あ、へえ知らなかったとか、あ、もうちょっと周り駆属やってたわみたいなのが知れると、
うん、なんかよりRubyと仲良くなって楽しくなるんじゃないかなと思いました。

ありがとうございます。

うん。

でもまさに僕は、まあ出してからだけど、そのディスクガイドみたいだなって思いましたね。

うーん、なるほど。
あのCDとか。
はいはいはいはい。

まあ、同じ感じです。

そうそうそう。

何にもわかんないから。

うん。

あると、で、いつか聞くかもなーとか思いながらでも1回パラパラ全部。
はいはいはいはい。
うん。

一旦ね、目次眺めておくのはすごくお勧めできると思いましたね。

ありがとうございます。
僕、あの、ポッドキャストでインタビュー撮ろうって言われてから、
33:02

はい。
あの、じゅんさんの昔のワクワクRubyガイドだっけな。

ああ、連載。

連載をね、見たんです。

はい。

似たようなことがあったかなって思いました。
そのRuby1.9の。

1.9の時でしたよね。
そうそう。

うん。

それあるんだよな。
なんか、やっぱり手癖でもやってる人は新しいのをチェックしないがちになるから。

うんうん。

それはいいですよね。
別に今まで通りのコードでも動くけど、
あ、1.9ならもっとスマートにできるんだっていうのは見つかったらいいなと思って書いた覚えがありますね、当時ね。
2009年とかじゃない?

2011って書いてありました。

あ、2011か。
うん。
あ、2011か。あ、そっかそっか。
いやもう13年前とか。怖い、怖いですね。

いや結構ね、覚醒の感ありましたね。
AS3とか。

そうですよね。そうそうそうそう。
そうだよね、3、うん。
最近なんかすんごい大きな変更はないけど、着実に良くなってるんだなっていうのが分かるのおもしろいですね。
あとあれか、ショートハンドシンタックスとかか。

最近レシピに載ってたかな?

ショートハンドシンタックスの話ありましたね。
あれは僕は自力では知らなかったんだけど、
ユータさんと一緒にコード書いたりコードレビューしてもらってるときにユータさんから知ったって感じだな、あの辺は。

それ多分今もしレールズニューとかしたら、
そのRubocopのおまかせルールみたいのが入って、
勝手に直されちゃう気がしますね、今のレールズニューだったら。

7.2以降はそうかも。
7.2でレールズニューすると結構ビビるからな。

うんうん。

いろいろ入ってる最初っから。
だんだん、なんていうか、もともとのレールズイズおまかせって言ってた、いつだ?レールズ3ぐらいのときかな。
あのときの雰囲気がちょっと戻ってきていて、おもしろいですよね、最近の。

おまかせってワードはそのときからあったんだ。

いつだっけな、レールズイズおまかせってあれ、いつだろうな。
あるときに出たんですよね。
あ、2012年とかかな、DHHのブログが出てきて。
2012年の年末頃にDHHがレールズイズおまかせって記事書いてて、
これレールズ何のとき?

3か4じゃないですか。3な気がするな。

3が結構エポックメイキングだったんだよな。3ってすごいでかい変更入ってるんだよな。
36:01

それ、そう、連載読んで分かりました。
JQueryコーヒースクリプト、バンドラーじゃないな、アセットパイプラインか。

しかもすごいのはレールズ3があれなんですよ、MARVと統合されてリソースルーティングとかがガッツリ入ったんですよね、2から3になるときに。
今のroot rbの原型みたいなのは確かレールズ3のときで。
レールズ3.1でアセットパイプライン入ったんですよね。
1.1で入る大きさじゃないだろうみたいなのが。

レールズってそうなんですよね。1.1で割とでかい変更が来るんですよね。

そうそう。コーヒースクリプトとかね、当時ね。すごいですよね。
いやでも今いろんな現場でコーヒースクリプト剥がしをやってるところもこれも隠せるかな。
推奨してましたね、でも。
すごい便利じゃんみたいな。

便利便利。

最高じゃん。コーヒースクリプト自体はいいですからね。
それでUI組むのは大変だけれども、プログラミング言語のソースコードの内面みたいなところではおもしろかった、当時も。
今はJavaScriptのほうがだいぶそのままでもスラスラ書けることが増えましたけどね。やりましたね。
はい、というわけで、この本は対象読書、僕はやっぱりRuby半年くらい書いてる人かな。
なんか書きたいこと書けるけど、もうちょっとスラスラ書きたいみたいな人にはいいんじゃないかな。
こういういろんな、あ、こんなのあるんだっていうの知っとくといろいろできそうだな。

そうですね。
なんか、そうそう、完全なこれからプログラミング始めますみたいな人は、
割と対象、一応その環境構築とか、最初のほう触れてるんですけど、

確かに、RGMとかね。

そんなにがっつり対象にしてはいないんですよね。
ちょっとRuby始めた人とか、他の言語には習熟してて、
Rubyは初めて見た人とかは多分、目次ぱらぱらしてみたりすると、なんか楽しいかもしれない。

ね。いや、そう思いますね。
そして改めてね、Rubyの本体というか、本体のストリング、アレイ、カッシュ、ファイル、デートあたりの充実っぷりに、
久しぶりにそうだよなって、Rubyってこの辺が本体が充実してるような、
だいたいちょろっとしたスクリプト、書き捨てのスクリプトを書くときにやりたい文字列とか、
ファイルをどうこうして一括でこうするとか、こういうときに必要な道具がだいぶ揃ってて、
39:04

これがいいんだよなっていうのを改めて思いました。

そうですね。

後半はアプリケーション開発みたいな感じでしょうね。

うんうん。

よく290レシピも載せましたね。
これはどうやってこの数になったんですか?

どうやってかな。最初300あったかもしれないですね。
あ、なんとなく300ぐらいにしようみたいな。他のシリーズがそうなのかしら。

そうだと思います。多分、そうですね。他のシリーズをベースに考えてたと思うんで。
確かに。Pythonコードレシピ集が302で、JavaScriptコードレシピ集が278だから、
まあ、なんとなく300ぐらいあるといいっていう感じか。
そうですね。
でも、Ruby3.1、3.2、3.3って出たことで書けたレシピもあるから、
まあ、これは3年ぐらいかけて書かれる本だったのかもな。
確かにね。減ったり増えたりした気がしますね。

書くことによって増えたり。
文章とかベースは結構もう、最初の1年ぐらいで割と書いたのかな。一生懸命。
へえ。
だから、実行結果とか書いたやつが、今最新だとなんかバグってるみたいなやつとかもあったよね。
そう。そういうのも大変でしたね。
今これ動かないじゃんみたいな。

怖い。
いやでも、3.4出たらまた環境が変わるからね。これ難しいですよね、本当にね。

うーん。

まあでも、だからこそ多分これ3年に1回ぐらい出るといいんだよな、こういう本。

うんうん。まあ大変ですけどね。

大変だよね。

改訂とかさせてもらえたらいいのかもしれないですね。

まあ確かにね、Ruby3.、まあ3.4だとそこまで変わらないと思うけど、
まあちょっと、分かんない、Ruby4とか出た時にはちょっと見直して、Ruby4対応とかしたやつが、ちょっと手直ししたやつとかが出ると、
Ruby業界的にはすごいいいなと思いました。

確かに。

いや、いいですね。いやいやいや、よかったです。著者インタビューっていうのをやってみました。

ありがとうございます。なんかメモにある、他のちょっとしたメモとか、観光ガイドってやつがこれなんですか?

あ、これは、この本の独語感が、独語感っていうかめくってる時の気持ちが、
42:05

あ、ジャランな話か。
そうそう、新しい場所に引っ越した時に一冊買う時の気分だなって思ったんで、
あ、これはなんかそういう言い方、紹介の仕方できるといいなと思ってね、メモしましたね。
あとメモで、今喋ってないのは集合のとこだな、セットのとこだな、97か。

これね、僕もメモを見て気になって調べたんですよね。

うん。

集合のとこで本では、ベンズが重なってる部分、ベンズで書いたら重なる部分を共通部分って書いてあるんですよね。
でもその重なってないとことかは左集合とか。

そう、和集合、左集合っていう言葉を使ってるけど、この本では赤集合という言葉はなんか出さないように説明していて、
あれ、なんだっけって思った。

これはですね、僕も調べたんですけど、赤集合っていうこともあるらしいんですが、
集合の直席っていうのがあって、

あー直席、はいはいはい。

直席のことを赤集合っていうこともあるらしくて、紛らわしいんですよね。

左集合、左集合ほどビビった概念じゃないか。

明確ではない、そうなんです。

多分これは僕側が理解できてない要因があってこうなってんだろうなって思ってね、読んでて、
ん?って思いながら読みましたね。

これは僕もさっき調べて勉強になりました。

あと小集合ってのもあるんですね。
ワーサー、ショーは出てくるけど席が出てこないから、
なんかの事情があるんだろうなって思ったんだよな。
おもしろいですね。

これも多分レビューとかもしてるんですけど、
その時にもレビューして調べて、
あ、共通部分の方が明確だからこっちなんだなみたいな。
そこで多分腹打ちしてるんですよね、きっと。

でしょうかね、レビュー撮ってるから。
そうそう。
これは、いや、なんかそうだろうなって。
いや、席集合っていう、この執筆の過程でその言葉が一度も出てこなかったわけはないなと思いながら読んだんで。
はい。
集合論。
集合論の方の知識が僕の方に足りてなかった。いやおもしろかったですよ、ここも。

集合をね、セットたまに使うんだよな。

ほとんどのファイアレイで済むんだけど、セットたまに使うんだよな。

使えますね、セット。

うんうんうんうん。
いや、おもしろいですね。
はい。
これで、そうか、一応読みながら撮ったメモに書いたことは多分一通り消化できたんじゃないかな。
45:04

ありがとうございます。

はい。
いや、よかったです。
じゃあ、Rubyコードレシピ集、技術評論者さんから2024年8月26日かな、出版となりまして、
僕も一冊ね、送っていただいたんで、読んで、この本を広める、お手伝いしたいと思って、
著者の一人の板倉優太さんをお呼びして喋ってみました。

ありがとうございます。
いや、僕もね、他の二人はブログとか書いてるんですけど、僕だけ書いてないから。
ひけ目とかもあるかもしれない。

ちょっとでもお手伝いできて嬉しいです。
いや、よかったです。
はい。
純木生活で急にすごいプログラミングの話をしました。

確かに。確かに一番、こんななんかテックポッドキャストみたいな。

いいんじゃないですか。

いいんですか?

いや、いいんですよ。もう僕が喋ってればOKっていうぐらいのレギュレーション。

DSラジオから来た人は急に聞いて。

いやいや、これもまあ働き者な感じで、これはこれで。
それはそうっすね。
いや、ありがとうございます。別にこの話嫌いなわけじゃなくて、したくないわけでは全然ないので。
そういう話ができたのもね、よかったですね。
なんか誰かが、なんかRubyのポッドキャストあったらいいじゃんみたいな話もあったりして、会話。

そうですね、確かに。

がっつりRubyの話だけをするポッドキャストあっても全然よくない。

ありそうですけどね。

日本語で。で、全然、なんか日本語でね、コミッターの話とかも聞ける国だから。
全然あったり。なんか誰かが準備してるのかな。
なんか始まりそうな噂を聞いたことはあるが、ちょっと実際どうかわからないけど、
なんかそういうのがあると、あ、次のバージョンでこういうの入るんだみたいなのも、
もうちょっとカジュアルにキャッチできておもしろいかもしれない。
いや、いいですね。Rubyの話をしてみました。
ポッドキャストでこういう話をするのもいいですね。

よかったです。そう言ってもらえて。

というわけで、今回は著者の一人、板倉優太さんをお招きして、
Rubyコードレシピ集のお話をしてみました。
ここまで聞いていただいてありがとうございました。
優太さん、ありがとうございました。

ありがとうございました。

どうも。

どうも。