どうもこんにちは。
禅の世界の話です。ただし、Pythonの、ですが。
はじめに、この記事を執筆するにあたり、以下のサイトを参考にさせていただきました。
stackoverflow The Zen of Python[closed]
我々はPythonに何を求めているか?
プログラマが持つべき心構え (The Zen of Python)
さて、本題。
ご存知の通り、Pythonの基本的な思想として、Zen of Pythonがあります。
Pythonに限らず、全プログラマが意識すべき内容、と言っても差し支えないでしょう。
ちなみに、Pythonインタプリタ上で
>>> import this
と入力するだけで、その内容が確認できます。
「おまえさん、これ知ってるかい?知らなきゃモグりだぜ?」と言われているみたいですね。
なんだかちょっとオサレ(異論は受けつけません)。
内容を思うままに訳してみました。
ものすごく個人的な見解が含まれています。
- Beautiful is better than ugly.
より美しく
- Explicit is better than implicit.
より明示的に
- Simple is better than complex.
よりシンプルに
- Complex is better than complicated.
でも、ややこしくなるくらいならな複雑な方がマシ
- Flat is better than nested.
ネストなんかクソくらえ
- Sparse is better than dense.
詰めすぎない
- Readability counts.
読みやすさは正義だ
- Special cases aren’t special enough to break the rules.
どんなに特殊なことも、ルールを破る理由にはならない
- Although practicality beats purity.
でも、そうも言ってられない現実もある
- Errors should never pass silently.
エラーは隠すな
- Unless explicitly silenced.
でも、わざと隠れているものは、見て見ぬふりしていい
- In the face of ambiguity, refuse the temptation to guess.
あいまいなものを適当に推測するな
- There should be one– and preferably only one –obvious way to do it.
真実(=実現するための方法)はいつもひとつ!
- Although that way may not be obvious at first unless you’re Dutch.
でも、それは 名探偵 オランダ人にしか理解できないかも
- Now is better than never.
いつやるの?今でしょっ?
- Although never is often better than *right* now.
でも、今「すぐ」じゃない方がいいことも
- If the implementation is hard to explain, it’s a bad idea.
説明できないコード?クソくらえ
- If the implementation is easy to explain, it may be a good idea.
説明できるコードを持ってこい
- Namespaces are one honking great idea — let’s do more of those!
すばらしいアイデアは積極的に使おう!名前空間のような、ね
どっちやねん!的な表現も多いですが、納得できる内容です。
こういうの、各企業さんの新人教育的なところで叩き込んでもいいんじゃないですかね?
各文の後ろに隠されている意味合いみたいなものは、
執筆にあたり参考にさせていただいた記事をご参照いただくものとして、
私が語りたかったことを少々。
プログラムって、人間が作るもので、
人間は人それぞれ個性があり、経験やバックグラウンドも違うし
考え、こだわりなんてものも違って当然。
作り上げられるソースコードだって違ってくるでしょう。
でも、各プログラマの自我の部分を極力抑えて、
なるべくみんな同じ方向に向かっていこうぜ、というのが
Pythonの思想であり、理想形なんだと私は思います。
「zen of python = Pythonの禅」なんて仰々しいタイトルつけたな、
と初めは思ってました。でも、よくよく考えると、禅の世界は、
- 極力自分の意志を抑え込み
- ただ一つのことに向き合って
- 悟りを開く
ものだそうです。
そう思うと、zen of python も
- 極力自分の意志を抑え込み(=zen of pythonの定めたルールに従う)
- ただ一つのことに向き合って(=Pythonのプログラムをコーディングする)
- 悟りを開く(=全Python技術者が見たら全員わかるものができあがる)
と言っていると考えてもいいのではないでしょうか。
かの孔子も、「四十にして惑わず」なんて言葉を残しています。
きっと、脇目も振らずに学問に邁進し、40歳にて惑うことがなくなった、
悟りの境地みたいなところにたどり着いた、ということなのでしょう。
zen of pythonに従ったコーディングをすれば、
「吾○○にしてPythonを学び、○○にして惑わず」
なんてことを言う人が出てくるかもしれません。
規約なんか、破るためにあるんだ!なんてことを言わずに
zen of pythonを意識したプログラミング、心がけてみてください。
いや、心がけましょう。
長文にお付き合いいただいて、ありがとうございました。
r.tanakaがお届けしました。