Webのソーシャル時代を担う「Python & Ruby」に行ってきた。
講師は「株式会社 ゼロスタートコミュニケーションズ」という会社の
山崎さん。(社長さんらしい)
「Python & Ruby」という表題だが、実質的には Python の勉強会だった。

講演中に山崎さんもおっしゃっていたが、Python は中級者向けの
勉強資料(日本語)が少ない。

別に言語の構文とかコードリーディングについては、英語のドキュメントがいくらでもある。
でも、現在の流行とか、現場の声を気軽に聞くことができる環境が無いと、
"Hallo World" の次に何を学べば良いのか分からない。
そういった意味で、今回の勉強会は大変参考になった。

講演内容は、前半が WAF (Web Application Framework) を中心とした
Python の紹介で、後半が実演(その場でウェブアプリを作成)。

Python の紹介内容は、だいたいこんな感じだった。
(私の解釈も含まれているので、山崎さんの意図と若干異なるかもしれないが、
  そこはご容赦をしてください。)
・Perl に比較して WAF が速い
  (Perl の場合、それぞれ異なる Author が作成した多くのモジュールを使用する。
    そして、モジュール単位で抽象化やサニタイズを行うので遅くなるというご意見)
・言語自体が、オブジェクト指向で設計されている
・インデントが構文に含まれているので、読みやすい
・GAE (Google Apps Engine) などでも使用可能。
  おそらく、Google は利用ユーザーは Python を使用する事を
  想定している模様。
・現在、バージョン2から3への移行中
  今から始めるのであれば、2系の方が良いと思う。
・日本では Ruby の方が有名だが、世界では Python の方が有名
  今後は、日本でも Python が主流になるのではないか


また、Python で有名な WAF として、Django, Turbogears, Tornade の
簡単な紹介もしてくださった。
Django
・MVC ではなく、MVT
  Cは無い。(URLと関数のマッピングのみ)
・テンプレート機能は弱い
  最近、if などをテンプレート中に書く事ができるようになった。
  テンプレート中の足し算などはまだできない。
・現在、山崎さんがメインで使用している

Turbogears
・今はあまり使用されていない。
・SQLObject, Kid など、一部の機能を切り離して使う事が可能
  (山崎さんも時々使用するとの事)

Tornade
・Facebook の使用しているフレームワーク
・まだ機能が充実していないが、超高速
・ノンブロッキング
・nginx と併用する事が多い



講演を聞いて思ったのが、今後は Python の方が主流になるだろうと言う事。
Ruby 大好き人間としては悔しいが。

Python には、実装方法が 1種類であるべきという思想がある。
(There should be one―and preferably only one―obvious way to do it)

例えば、ループを回す際に、それぞれ
・Python では for 文を
・Ruby では each メソッドを
良く使用する。

そして、Python も Ruby も共に、これらのループに関連した
便利な機能を、デフォルトで多く持っている。
(両者で似た機能も多い。)

しかし、Ruby の each はメソッドなので、上書きが可能だ。
そして、each を上書きすると、内部的に each を使用する
他のメソッド(例えば map)も上書きされる。

でも、Python ではそれが出来ない。


いわゆる「中2病」をこじらせたような人には
このような Ruby の特性は面白いだろうし、
世間で天才と呼ばれている人には、これが Python の機能不足と
思えるかもしれない。

Railes が Ruby で作成されたのは、このような言語の特性が
大きく影響しているのでは無いか。

でも、これらの特性は逆に Python の保守の良さと
解釈する事もできる。

グローバル変数を多用がバグの温床となるように、
必要以上の自由度は無い方が良い事も多い。

また、実演を見て思ったのが、他人のコードを本当に読みやすい。
今まで他人が書いた Python のコードはあまり読んだ事が無く、
今回初めて実感した。

Ruby は実験的な新しいアイディアのが湧きだす
魔法の言語かもしれない。
でも、私のような人間がつくる平凡なアプリは、
これから Python の実装が増えていくような気がした。