Web屋さんのアレ

Python大好きなWeb屋のおじさんがぺろぺろ何かを書いてくよ。

Web開発にPythonを使う理由

僕の周りだけかもしれないですが、国内のWeb受託開発案件はPHPで作るのが暗黙のルール」ってな勢いでPHP案件ばっかりなのですが、Python大好きな僕としては、何としてでもPythonを使って仕事をしたい!
なので頑張って布教活動をしているのですが、中々良い手応えが得られないのが現状です。。

という訳で、改めてPythonを使うメリットとか、安心してクライアントにPythonを進められる理由なんかをまとめてみました。

技術者がPythonを使うメリット

「今までPHPでやってきて何の問題もなかったし、これからPython始める意味なんてあんの?」

ぶっちゃけ、そんなにないですw
結果的に出来上がる物に関しては大差ないですからね。
ただし、開発効率やメンテナンス性は飛躍的に上がると僕は思います。

ライブラリがとても豊富

PHPも沢山ライブラリありますけど、Pythonだっていっぱいあるんですよ。
標準ライブラリがとても充実しております。
さらにeasy_installとかpipを使えば追加モジュールだって簡単に導入出来ます。
PHPPECLがありますが、品揃えだけで言えばPythonの方が圧倒的に多いです。

言語仕様と理念が素晴らしい

Pythonは何と言ってもシンプルです。
PEP20というPythonの設計理念的な物があるのですが、読んでみると「書きやすい・読みやすい・判りやすい」という部分に注力して設計されている事が理解出来ると思います。

http://www.lifewithpython.com/2013/01/pep-20-the-zen-of-python.html

PEP20で定義されている事柄というのは(全てではないけれど)プログラムを組む上でどの言語を使用したとしても注意するべき事ばかりです。
これは僕個人の印象ですが、Pythonという言語を使うと、あまり意識をせずともPEP20の理念の方向へ実装の形が進んでいく様な気がします。

開発効率&メンテナンス性が高い

シンプルで判りやすいという事は、効率に直結します。
極端に言うとPythonは何かしらの言語を習得している人ならば、読み解く事はそれ程難しくはありません。
さらに、Pythonは誰が書いてもある程度似通った実装になる傾向があります。
それはつまり、誰が見ても判りやすいプログラムになるという事だと思います。

また、ソースコードの量が目に見えて減ります。
体感ではPHPの2/3ぐらいに感じました。 下手すると半分ぐらいになったりもします。
やっぱりコード量が少ないというのは開発の効率もよいですし、メンテナンス性も高いです。

複数人での開発や引き継ぎ案件等を考えると、メンテナンス性が高いというのはとても大きなアドバンテージになると思います。
勿論、ボケーッと書いてたら汚くなるので、ちゃんと綺麗に書く努力をしないとダメですけどね。
Pythonはそういう努力が報われ易いという事です。

強力なフレームワークがある

PHPにもCodeIgniterやSymfonyの様な素敵なフレームワークが多々ありますが、一長一短というか、ぶっちゃけどのフレームワーク使ってもストレスが溜まってしまいます(僕は)。。

PythonにはDjangoという素晴らしいフルスタックのフレームワークが存在します。
フルスタックは重たくて嫌だというのであればFlaskやPyramidもあります。
Tornadoというフレームワークを使うとnode.jsの様なWebSocketサーバーも簡単に作れます。
Pythonフレームワークにはしっかりと個性があり、完成度も素晴らしいです。
ストレスの無いフレームワークを使えるというだけでも、Web開発でPythonを選ぶメリットがあると僕は思います。

クライアントにPythonを選んで貰うために

色々あーだこーだ言いましたけども、結局クライアントにPythonでやっていいよ」って言って貰えないとどうしようもないので、説得する材料を集めてみました。
結局はPythonなんて良く分からん物より皆使ってるPHPがいい」という事なんですけど、そこら辺を紐解いて行きたいなあ、と。

そんなマイナー言語使える人少ないんじゃないの?

国内外で圧倒的なシェアを持つPHPに比べれば、Pythonの技術者は少ないです。
PHPだと担当の技術者が何らかの理由でダメになった場合でも、交代要員を簡単に見つけられるという強みがあるのは確かです。
しかし、まともにPHP書ける人はPythonなんかすぐに書けるようになるんです。
技術者を探すのは、実はそれほど難しい事じゃないんです。

ちなみにご存知だと思いますが、Pythonは国内ではマイナーってだけで、海外では物凄いメジャーな言語です。
最近のLinuxには必ずインストールされてますし、Googleの公用言語の1つだったりしますし。
後述しますが、普段使ってるサービスもPythonで作られてるものは多いです。

何それ、ちゃんと動くの?

依頼する側としては、動作実績があるとか、ちゃんと動きますよっていう保証が欲しいんです。
PHPはその点、物凄い量のWebサービスがPHPで実装されているので、安心できるのでしょうね。
でも本当の事言うと、まともに動いてないシステムってPHPで作られたもの多いっすよ。。

Pythonで作られてる主なサービスをリストアップしてみました。

  • Pinterest (Django + Tornade)
  • Instagram (Django)
  • DropBox (Pylons)
  • dotCloud

他にソーシャルゲーム業界だと株式会社gumiという会社がDjangoを使ってゲームを開発しています。
ソーシャルゲームは毎秒数百リクエストを処理する必要があるので、Webサービスとしては高負荷な部類になりますが、何ら問題なく動いています。

自社でメンテナンスするからPHPでお願い

PHPの技術者を抱えてるクライアントさんからの案件は、開発終了後にクライアントさんの方で運用保守をやることが殆どなので、やっぱり慣れた言語で書かれた物の方がメンテナンス性が高いのは当然ですよね。
でも、上でも申しましたけども、「まともにPHP書ける人はPythonも書けます」
そして、メンテナンスや開発の効率を重視するならば、是非ともPythonを採用して頂きたい!
そりゃ確かに、初めてのPython案件は学習のコストも掛かるので効率が悪いかもしれませんが、未来への投資だと思って頑張ると必ず見返りが得られます。
でも、こればっかりはその会社の方針なので、外注の我々がとやかく言う所ではないのですけどね。。

まとめ

そろそろ面倒くさくなってきたのでまとめます。。

何が言いたいのかって言うとだな

「そんな怪しいもんじゃないし便利だから安心してよってか良いから1回使わせろよ!そしたら判るよ!」

って事です。。

Pythonに限った話じゃないですけど、RubyなりScalaなりHaskellなり便利な物が沢山あるんだから、ビクビクしてないで適材適所に便利な物を使って、もっと楽して生きていこうよって事を言いたい訳ですよ。