Seiichi Yonezawa — How creativity is helped by failure

Array#forty_twoに迫る

GWですね。今年の連休はあえて旅行よりもコードを優先しようと思いました。その一環としてこのサイトを全文検索対応したり、タグを追加したりしました。そのついでにリニューアル時にひそかに閲覧できなくなっていた昔の投稿も見られるようにしました。この投稿では表題のArray#forty_twoには触れていませんが、もともとはこのArray#forty_twoの理由がわからなかったのです。

Equal to self[41]. Also known as accessing “the reddit”. #

Railsのドキュメントを見ても、『self[41]と同じ。redditのアクセサとしても知られる』という記述のみで、ますます意味がわかりません。長らく謎のままでしたが、YouTubeでDHHのアカウントにあるWhy Ruby?というビデオに答えがありました。

This sort of came out of a thread on reddit where somebody was complaining so loudly of why we could care to add second and third and fourth to array this is redundant, there's already a mathematical approach to her doing the same thing it doesn't make sense to them it was weird like why would somebody care about this level of aesthetic and just spite them I added forty_two

YouTubeの自動生成字幕より引用です。訳すと、「このメソッドはredditのスレッドで声高に『どうして配列にsecondやthird、fourthなどといった冗長で、わざわざすでに数学的なアプローチと同じ意味のメソッドを加えるなんてどうかしている』などと主張したコメントからで、そのおかしな審美眼に対する皮肉に対する返答としてforty_twoを追加しました」

日本語のニュアンスが微妙ですが、redditのスレッドで上から42番目のコメントがどうというわけでもなく、もともと42という数字がいわゆるミームから来ていたようです。若干腑に落ちませんが、同じビデオの中でDHHはこう続けています。

because it made even less made sense than second and third and I think it's even more important, especially because I've used it exactly zero times I don't think anybody in here has a program actually raise your hand if you have a program that actually uses forty_two on the right, perfect nobody.

「なぜならsecondやthirdといったメソッドよりも使われる頻度は少ないと思います。私もまさしく一度も使ったことがありません。もしあなたがたの中に実際のプログラムでforty_twoを使ったことがあるという人は手をあげてください。素晴らしい、誰もいませんね」

this is just here to prove a point and proving that point and embedding it into something that actually goes into Ruby that looks like absolute madness to somebody who's treating programming languages as those are just functional and we're looking for the best tool for the job nobody's going to look at check list of features and say oh I'm going to Ruby because it has array forty_two

「これは単に正しさの証明と、何かを埋め込むための実証で、それはつまり実際にRubyを使うことに狂信的で、この素晴らしいプログラミング言語の対して誰も見ていないような関数の一覧を調べていて『あっ、Rubyの配列にはforty_twoというメソッドがあるから、この言語を使おう』などという誰かに対する褒美みたいなものです」

that doesn't make any sense you wouldn't you wouldn't do that and I find that that's just a great way just like the marching band at railsconf of shocking people into sort of making making their brain see things differently this is great role of shock factor like that okay so we can make extensions to string or array

「Arrayに対してこのようなメソッドを追加することは的を射ておらず、わざわざそんなことはすべきではありません。むしろ私はこれがRailsConfでマーチングバンドが出ていることに驚くような人々に対する表現でもあります。これはStringやArrayに対して自由にメソッドを拡張できることに対する驚きに似たようなものでもありますね」

若干翻訳に自信がありませんが、まとめるとforty_twoは削除されたsixthなどのアクセサとは異なり、実際に使われはしないけれども、この一連のやり取りを調べさせるために存在しているメソッドなのでしょう。実際このメソッドで私もここまで興味を持ってしまったこともありますし、Railsには他にもこのようなイースターエッグがどこかに隠されているかもしれません。

他にもString#squishDate#at_end_of_dayなどのように、知らなくてもいいけれど、知っていれば楽になるメソッドもRailsにはいろいろと存在しています。こういった背景まであるメソッドは稀でしょうけれど、他にもこのようなメソッドが見つかれば調べてみるのも面白そうですね。