The Zen of Python
Jun-ya HASEBA
What is Python?
• Guido van Rossumによって開発されたオブジェク
ト指向スクリプト言語。
• 教育用を意図して開発された言語ではないが、その
特徴から教育に用いられることも多い。
• 標準で豊富なライブラリが用意されており、プログ
ラミングを強力にサポートしてくれる。
The Zen of Python
• Tim Petersによって書かれた、Pythonの基本的な考
え方をまとめた全19条の指針。
• Pythonインタプリタ上で import this と入力す
れば、その内容をいつでも確認できる。
• 絶対のルールというわけではないが、プログラミン
グの際には頭の片隅に置いておきたい。
1. Beautiful is better than ugly.
• 【訳】きたないのよりきれいな方がいい。
• 書いたあと、誰にも読まれることのないプログラム
は存在しない。
• ほかの人のために、そして未来の自分のために綺麗
なプログラムを書こう。
2. Explicit is better than implicit.
• 【訳】ごちゃごちゃ難しいのより、白黒はっきりし
てるのがいい。
• プログラム中の変数、関数、クラス、パッケージ…
などには、意味が明確にわかる名前をつけよう。
• キラキラ変数名をつけるのはやめよう。
3. Simple is better than complex.
• 【訳】めんどうなのよりかんたんな方がいい。
• 簡単なことは簡単に書こう。
• 格好をつけてアクロバティックな書き方をするのは
やめよう。
4. Complex is better than complicated.
• 【訳】けど、訳分かんなくなるくらいならめんどう
な方がまし。
• 複雑なことを簡単に書こうとして、逆に意味が伝わ
りづらくなっていないだろうか?
• わかりづらかったり、ほかの部分に悪影響が出たり
するのであれば、別に無理をする必要はない。
5. Flat is better than nested.
• 【訳】ネストさせなくていいならしない方がいい。
• ネストが深くなってしまう場合、プログラムの構造
を見直すべきかもしれない。
• 「ネストって何?」と疑問に思った人は、後期の授
業で先生に質問すればきっと丁寧に教えてもらえる
よ!
6. Sparse is better than dense.
• 【訳】たくさん詰め込んだのよりスカスカな方がい
い。
• プログラムには適度に空行を入れよう。
• たくさんの処理を1行に詰め込むのはやめよう。
• このスライドにもZenの考え方を取り込み、あえて
スカスカに作ってあります。
7. Readability counts.
• 【訳】読みやすさがたいせつなのよ。
• Pythonではプログラムの読みやすさが特に重要視さ
れる。
• ほかのメリットを追求するあまり、読みやすさを損
ねてしまわないように気をつけよう。
8. Special cases aren't special enough to break the rules.
9. Although practicality beats purity.
• 【訳】特別なこともあるけど掟破りってほどじゃな
い。実用性を求めてくと、ちょっとはずれちゃうこ
ともあるけどね。
• その特別扱いが本当に必要なことかどうか、もう一
度よく考えてみよう。
• もし本当に必要なのであれば、特別扱い自体は別に
悪いことではない。
10. Errors should never pass silently.
11. Unless explicitly silenced.
• 【訳】わざとそうしてるんじゃない限り、エラーを
だまって通すようなことがあっちゃいけません。
• 例外処理は不祥事を隠すための仕組みではない。
• 「例外処理って何?」と疑問に思った人は、後期の
授業で先生に質問すればきっと丁寧に教えてもらえ
るよ!
12. In the face of ambiguity, refuse the temptation to guess.
• 【訳】あいまいなことをてきとーに処理しちゃいけ
ません。
• 思い込みや決めつけで処理をしてはいけない。
• あなたのプログラムを使う人は、あなたが思いもよ
らなかったような操作を平気で行うということを肝
に銘じておこう。
13. There should be one - and preferably only one - obvious way to do it.
14. Although that way may not be obvious at first unless you're Dutch.
• 【訳】間違えようのないやり方がひとつだけあるの
がいいね。オランダ人以外には、ちょっと分かりに
くかったりしてもね。
• There’s Only One Way To Do It.
• いくら同じ書き方になるからといって、ほかの人の
課題の答えを丸写しにして提出するのはやめよう。
15. Now is better than never.
16. Although never is often better than *right* now.
• 【訳】やらないよりは今やるべき。けど今「すぐ」
やるならやんない方がいいこともある。
• 面倒だからといって後回しにするのはやめよう。で
も、行動に移すのはよく考えてから。
• 慎重かつ大胆に。
17. If the implementation is hard to explain, its a bad idea.
18. If the implementation is easy to explain, it may be a good idea.
• 【訳】作るものをうまく説明できないようならそれ
はボツ。うまく説明できたらたぶんそれがグッド。
• ほかの人に上手く説明できないことは、自分も完全
には理解できていない。
• たとえ複雑な処理であっても、やりたいことの本質
は簡単に説明できるはず。
19. Namespaces are one honking great idea - lets do more of those!
• 【訳】ぶらぼーなアイディア名前空間、やっぱこれ
ですね。
• 名前空間はPythonの仕組みを支える考え方。
• 「名前空間って何?」と疑問に思った人は、後期の
授業で先生に質問すればきっと丁寧に教えてもらえ
るよ!
A list of references
• PEP 20 -- The Zen of Python | Python.org

http://www.python.org/dev/peps/pep-0020/
• The Zen of Python(日本語訳)

http://www.python.jp/Zope/articles/misc/zen
• エキスパートPythonプログラミング

http://www.amazon.co.jp/dp/4048686291
• 空飛ぶモンティ・パイソン

http://www.amazon.co.jp/dp/B000X431A4
ご清聴ありがとうございました

The Zen of Python

  • 1.
    The Zen ofPython Jun-ya HASEBA
  • 2.
    What is Python? •Guido van Rossumによって開発されたオブジェク ト指向スクリプト言語。 • 教育用を意図して開発された言語ではないが、その 特徴から教育に用いられることも多い。 • 標準で豊富なライブラリが用意されており、プログ ラミングを強力にサポートしてくれる。
  • 3.
    The Zen ofPython • Tim Petersによって書かれた、Pythonの基本的な考 え方をまとめた全19条の指針。 • Pythonインタプリタ上で import this と入力す れば、その内容をいつでも確認できる。 • 絶対のルールというわけではないが、プログラミン グの際には頭の片隅に置いておきたい。
  • 4.
    1. Beautiful isbetter than ugly. • 【訳】きたないのよりきれいな方がいい。 • 書いたあと、誰にも読まれることのないプログラム は存在しない。 • ほかの人のために、そして未来の自分のために綺麗 なプログラムを書こう。
  • 5.
    2. Explicit isbetter than implicit. • 【訳】ごちゃごちゃ難しいのより、白黒はっきりし てるのがいい。 • プログラム中の変数、関数、クラス、パッケージ… などには、意味が明確にわかる名前をつけよう。 • キラキラ変数名をつけるのはやめよう。
  • 6.
    3. Simple isbetter than complex. • 【訳】めんどうなのよりかんたんな方がいい。 • 簡単なことは簡単に書こう。 • 格好をつけてアクロバティックな書き方をするのは やめよう。
  • 7.
    4. Complex isbetter than complicated. • 【訳】けど、訳分かんなくなるくらいならめんどう な方がまし。 • 複雑なことを簡単に書こうとして、逆に意味が伝わ りづらくなっていないだろうか? • わかりづらかったり、ほかの部分に悪影響が出たり するのであれば、別に無理をする必要はない。
  • 8.
    5. Flat isbetter than nested. • 【訳】ネストさせなくていいならしない方がいい。 • ネストが深くなってしまう場合、プログラムの構造 を見直すべきかもしれない。 • 「ネストって何?」と疑問に思った人は、後期の授 業で先生に質問すればきっと丁寧に教えてもらえる よ!
  • 9.
    6. Sparse isbetter than dense. • 【訳】たくさん詰め込んだのよりスカスカな方がい い。 • プログラムには適度に空行を入れよう。 • たくさんの処理を1行に詰め込むのはやめよう。 • このスライドにもZenの考え方を取り込み、あえて スカスカに作ってあります。
  • 10.
    7. Readability counts. •【訳】読みやすさがたいせつなのよ。 • Pythonではプログラムの読みやすさが特に重要視さ れる。 • ほかのメリットを追求するあまり、読みやすさを損 ねてしまわないように気をつけよう。
  • 11.
    8. Special casesaren't special enough to break the rules. 9. Although practicality beats purity. • 【訳】特別なこともあるけど掟破りってほどじゃな い。実用性を求めてくと、ちょっとはずれちゃうこ ともあるけどね。 • その特別扱いが本当に必要なことかどうか、もう一 度よく考えてみよう。 • もし本当に必要なのであれば、特別扱い自体は別に 悪いことではない。
  • 12.
    10. Errors shouldnever pass silently. 11. Unless explicitly silenced. • 【訳】わざとそうしてるんじゃない限り、エラーを だまって通すようなことがあっちゃいけません。 • 例外処理は不祥事を隠すための仕組みではない。 • 「例外処理って何?」と疑問に思った人は、後期の 授業で先生に質問すればきっと丁寧に教えてもらえ るよ!
  • 13.
    12. In theface of ambiguity, refuse the temptation to guess. • 【訳】あいまいなことをてきとーに処理しちゃいけ ません。 • 思い込みや決めつけで処理をしてはいけない。 • あなたのプログラムを使う人は、あなたが思いもよ らなかったような操作を平気で行うということを肝 に銘じておこう。
  • 14.
    13. There shouldbe one - and preferably only one - obvious way to do it. 14. Although that way may not be obvious at first unless you're Dutch. • 【訳】間違えようのないやり方がひとつだけあるの がいいね。オランダ人以外には、ちょっと分かりに くかったりしてもね。 • There’s Only One Way To Do It. • いくら同じ書き方になるからといって、ほかの人の 課題の答えを丸写しにして提出するのはやめよう。
  • 15.
    15. Now isbetter than never. 16. Although never is often better than *right* now. • 【訳】やらないよりは今やるべき。けど今「すぐ」 やるならやんない方がいいこともある。 • 面倒だからといって後回しにするのはやめよう。で も、行動に移すのはよく考えてから。 • 慎重かつ大胆に。
  • 16.
    17. If theimplementation is hard to explain, its a bad idea. 18. If the implementation is easy to explain, it may be a good idea. • 【訳】作るものをうまく説明できないようならそれ はボツ。うまく説明できたらたぶんそれがグッド。 • ほかの人に上手く説明できないことは、自分も完全 には理解できていない。 • たとえ複雑な処理であっても、やりたいことの本質 は簡単に説明できるはず。
  • 17.
    19. Namespaces areone honking great idea - lets do more of those! • 【訳】ぶらぼーなアイディア名前空間、やっぱこれ ですね。 • 名前空間はPythonの仕組みを支える考え方。 • 「名前空間って何?」と疑問に思った人は、後期の 授業で先生に質問すればきっと丁寧に教えてもらえ るよ!
  • 18.
    A list ofreferences • PEP 20 -- The Zen of Python | Python.org
 http://www.python.org/dev/peps/pep-0020/ • The Zen of Python(日本語訳)
 http://www.python.jp/Zope/articles/misc/zen • エキスパートPythonプログラミング
 http://www.amazon.co.jp/dp/4048686291 • 空飛ぶモンティ・パイソン
 http://www.amazon.co.jp/dp/B000X431A4
  • 19.