我々は「Python」に何を求めているのか?


弊社ではプログラミング言語としてPythonを採用しています。

最近のウェブ系スタートアップが採用しているプログラミング言語やフレームワークまとめ - laiso

パッと見て頂くと解るかと思うのですが、思った以上にPythonという言語はスタートアップに採用されています。
日本にはLLというと、
CGIで一世を風靡したPerl
そのPerlを塗り替えたPHP
もしくはRailsと共にブームになったRubyというイメージがありますが、

Pythonは十分に実用的な言語でかつ、実践的な言語だということがおわかり頂けるかと思います。
特に我々が重視しているのはその思想です。
バッテリー内蔵言語とも呼ばれるPythonですが、
PythonにはZenの考え方が採用されています。
即ち、

import this
The Zen of Python, by Tim Peters

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!(すげーアイディア名前空間、もっとそれをしようぜ!)

Perlでは"There's More Than One Way To Do It."(やり方は一つじゃない)という思想を持っていますが、
Pythonは"There should be one―and preferably only one―obvious way to do it"(誰もが正しいと考える、たった一つの方法がある筈だからさ!)という思想です。

これが言語の可読性や保守性に大きく寄与する事はおわかり頂けるでしょうか?
誰が書いても大きく違わないものに近づくということは、
チーム内の誰でも読み書きでき、
かつ1ヶ月後、1年後の自分も読み書きが容易だと言うことです。


そして、
中には"誰が書いても一緒になるなんて面白くないじゃないか!"
と考えるエンジニアも時にはいるでしょう。


でも、考えてみて下さい。
本当に自分たちが書くコードをは一緒になるでしょうか?
経験もバックグラウンドも違うのに?
そうです。
本当には一緒にはなりません。
だって、我々は同じ人間ではないから。
でも、みんなで同じ至高=ある筈のたった一つの優れた方法に自然と向かうことが出来る!
それが、Pythonの強さです。


そういう意味でPythonは"至高を目指す言語"とも言えます。
最高のものを作り出すために自己研鑽を繰り返す言語Python
その力は開発者にも及びます。

そのために我々はPythonなのです。