禅 of Python: 20の格言

Pythonには "Zen of Python"という、Pythonの設計原則を簡潔に20個の格言にまとめたものがあります。それを単純に翻訳しても伝わりにくいだろうなぁと思ったので、訳注をたくさんつけて翻訳してみました。

  • 美は醜より良い
  • 明示は暗黙より良い
  • 単純は複雑より良い
  • 複雑なほうが理解しにくいよりは良い *1
  • 平坦は入れ子より良い
  • 疎は密より良い *2
  • 読みやすさが重要
  • 「特殊なケース」はルールを破るほど特殊ではない*3
  • しかし、実利は純粋さより重要 *4
  • エラーを黙って通してはいけない
  • ただし、明示的に黙らせた場合は別 *5
  • 曖昧さに面したら、正解を推測したくなる誘惑を退けよ *6
  • 一つの明確なやり方があるべきだ。そしてただ一つであることが望ましい。 *7
  • しかし、その方法はオランダ人以外にはとっつきにくいかもね *8
  • 今やる方がやらないより良い
  • しかし、やらないほうが、今 *すぐ* やるより良いことが多い。 *9
  • もし実装方法を説明するのが難しければ、それは悪いアイデア
  • もし実装方法を説明するのが易しければ、それは良いアイデアかもしれない *10
  • 名前空間は超すごいアイデアだ、もっとすごいことをやろうぜ!

ちなみにPythonインタプリタでimport thisを実行すればこの原文が表示されます。

今までにも何度か日本語訳が試みられているのですけど、原文が言葉を省いているので訳にも解釈の違いが結構あります。他の人のも読んで自分が一番良いと思う解釈を選ぶといいんじゃないかな。訳に関しての意見や反論は大歓迎です。

*1:単純なのは複雑なのよりもよいが、単純にしようとして理解が難しくなってしまうぐらいなら、複雑にしたほうがよい。中庸が重要。

*2:例えばソースコードで説明すると、ぎっしり密集していたのではどこが意味上のまとまりなのかがわかりにくい。適切な余白・空行を入れることによって、意味の上のまとまりがわかりやすくなる。詰め込みすぎると理解を損ねる。

*3:あなたが「特殊なケース」と思っているものは、本当にルールを破って特別扱いをしなければならないほど特殊なケースなのか?よく考えよう

*4:ルールを守ることは重要だが、それに具体的な実用上のデメリットがある場合は別だ。実利が優先されるべき。

*5:「明示は暗黙より良い」の一つの具体例

*6:「たぶんこうだろう」で進むんじゃなくてきちんと正解が何か確認してから進め

*7:Perlの「ものごとにはいくつものやり方がある(There's more than one way to do it)」に対するアンチテーゼ http://en.wikipedia.org/wiki/There's_more_than_one_way_to_do_it

*8:Pythonの作者Guidoがオランダ人であることを踏まえたジョーク

*9:すぐにやろうと慌てると間違いが入りがちなので、それよりは何もしないほうがよい

*10:説明が難しいアイデアは間違いなく悪いアイデアだが、説明が易しければ必ず良いアイデアだというわけではない