YAGNI 原則というのは,おおむね「本当に必要かどうか分からないようなものをあれこれ考えすぎて設計・実装したりするのはやめたほうがいい」というようなものだと思う。
で,YAGNI が何の略か調べると,以下の二とおりが出てくる。
- You Ain’t Gonna Need It.
- You Aren’t Gonna Need It.
どっちが正しいのだろう?
ain’t って何だ?
「aren’t」が「are not」の短縮形なのは知ってる。
じゃ「ain’t」って何?
英和辞典によると,「ain’t」は「エイント」と読み,「am not」の短縮形に由来するそうだ。
アムノットぉ? えっ,じゃあ「You」に続くことはあり得ないわけ?
おっと,辞典をよく見たら,説明があった。由来はそうでも,「am not」のほかに,「are not」「is not」「have not」「has not」「do not」などなどの短縮形としても使われるのだそうだ。
いずれにしても,普通の表現ではないらしい(口語的?)。
というわけで,YAGNI が何の略かという点では「ain’t」でも「aren’t」でも,どっちでもいいようだ。
言い出した人がどっちで言ったか,までは調べる元気がなかった。
gonna って何だ?
「gonna」もよく知らんので,英和辞典を引いてみる。
「going to」を米国の口語で [ɡɔ́ːnə] とか [ɡənə] のように発音するらしい。その発音から作られた綴りが「gonna」。
「ゴンナ」じゃないんだね。英語には [nn] とか [mm] のような音は無いらしい。
文全体の意味は?
「You Ain’t Gonna Need It.」はとても口語的な表現のようだ。
これを学校的な英語に機械的に置き換えると
You are not going to need it.
になるのかな。
ええと,英語ダメ生の知識では,「be going to (do)」は「~しつつある」だったような気がするんだけど,それだと意味が通じない気がする。
そこで英和辞典。えーと,「going」で引くのか「be」で引くのかと思ったら,「go」で引かないといけなかった。
「go」で引くとすさまじい量の説明が書いてあって,途方に暮れていたら,ふと「be going to do」という子見出しが見つかった。
それによると,確かに,人が何かをしようとしている意味(主語である人の意志や予定など)も書いてあったけど,それ以外に二つの意味が書いてあった。
そのうちの一つが,「~になる(であろう)」。ええと,これは近い未来についての話者の推量なのかな。
おお,これなら意味がつながる。要するに話者は近い未来について,「You need it.」(あなたはそれを必要としている)を否定する予測を立てているわけだ。
だから,「あなたはそれを必要としないでしょう(必要になったりはしないでしょう)」ってことか。
口語的に訳すと「それ要らなくね?」。
これでようやく意味が分かった。ふう。
英語は苦手なのでマサカリ歓迎。
あぐに?
どうでもいいけど,「ヤグニ」って耳で聞くと,どうしてもインドの火の神「アグニ(Agni,अग्नि)」を連想してしまう。
火の神アグニはインドの弾道ミサイルの名前にもなっているので,YAGNI と聞いただけで,何か烈しい原理のような気がする。
さらにどうでもいいけど,英語で「点火する」の意味の ignite はラテン語の「ignis」(火)から来ていて,これはインドのアグニと同源なのだそうだ。
2016年4月29日追記
当初,「You Ain’t Gonna to Need It.」のように誤って余計な「to」を入れてしまっていたので直しました。テキトーなサイトからコピペしたのが失敗のもと。