PR
<b>左から露木氏,柴田氏,松野氏</b>
<b>左から露木氏,柴田氏,松野氏</b>
[画像のクリックで拡大表示]

 スクリプト言語で書かれたWebアプリケーション・フレームワークといえば,なんといってもRubyで書かれたRuby on Rails(Rails)の存在感が大きい。しかし,Pythonにも優れたフレームワークが登場してきている。2006年4月8日に開催されたイベント「Python Workshop the Edge 2006」のセッション「最新Webアプリケーションフレームワーク比較」では,Pythonで書かれた「Django」「TurboGears」「web.py」という三つのWebアプリケーション・フレームワークがそれぞれ利点をアピールした。

 Djangoについてプレゼンしたのは露木誠氏。大阪大学の増田泰氏などとともに「Djangoと日本の仲間たち」というサイトを立ち上げている。Djangoの最大の特徴はスケーラビリティ。高速なキャッシュを採用しており,1台のWebサーバーと1台のデータベース・サーバーで1日2500万ビューのアクセスをこなしている例もある。従来は,トランザクションに対応していなかったのが最大の欠点だったが,最近のリリースで対応したという。「何より名前がかっこいい」(露木氏)。

 すべて自前で実装する方針のDjangoと対照的に,既存の優れたライブラリやフレームワークを組み合わせて作られているのがTurboGearsである。ウェブコアの柴田淳氏が紹介した。JavaScriptライブラリ「Mochikit」,テンプレート・エンジン「Kid」,Webアプリケーション・サーバー「CherryPy」,O/Rマッパー「SQLObject」を利用している。Webアプリケーションを効率よく作れるのが特徴。実験的なソーシャル・ネットワーク・システム(SNS)をわずか500行程度のコードで実現した例もあるという。

 web.pyはモバイルファクトリーの松野徳大氏が紹介した。同氏は,PerlのWebアプリケーション・フレームワークであるSledgeの関連や,RailsによるWikiであるInamode6(イナモデ)を作ったことでも知られている。web.pyの特徴はシンプルさ。豊富な機能はない代わり「web.py」という一つのファイルだけで動作する。

 それぞれのフレームワークの紹介が終わったあとは,三つのテーマで機能比較を行った。各テーマについて発表者がアピールし,会場の挙手で勝者を決めるという方式だ。

 最初のテーマは「HTMLテンプレート」。Djangoのテンプレート機能の特徴は,非XML型なので処理が高速である点。「XMLのパースは実はとてもコストがかかる」(露木氏)。ただ,デザインとロジックが分離されていないため,デザイナがDjangoの実行環境を使う必要がある。一方,TurboGearsは,デザインとロジックが分離されており,デザイナがオーサリング・ツールを使ってWebページをデザインできる。「デザイナにやさしい」(柴田氏)のが特徴だ。web.pyでは,オプションで「Cheetah」という強力なテンプレート・エンジンを利用できるという。ただ,埋め込み型オンリーで「デザインとロジックの分離は考えられていない」(松野氏)。勝敗は,TurboGearsの圧勝だった。

 次のテーマは「O/Rマッピング機能」。DjangoのO/Rマッピング機能は,TurboGearsが利用しているSQLObjectを参考に作られているという。このため,機能が似通っている。一方,web.pyはSQLを直接書くタイプで,そもそもO/Rマッピング機能がない。勝敗は,DjangoとTurboGearsの引き分け。

 三つ目のテーマは「フォームの自動生成」。Djangoは,内部で使う管理画面も自動生成されるのが特徴。Railsのscaffoldに相当する自動生成機能も有志により用意されているという。TurboGearsは,「CatWalk」という機能で内部の管理画面を生成し,「Widget」という画面で外部に公開するフォームを生成する。web.pyは「form.py」というファイルを使うことでフォームの生成やバリデーションを行えるが,自動生成機能はない。この勝敗は,TurboGearsの勝ちになった。

 会場からは「既存のシステムからの移行にはどの程度の手間がかかるか」という質問が出た。DjangoとTurboGearsはそれなりに移行は大変だという回答だった。これらに対し,SQL直書きと正規表現によるURL処理で動作しているweb.pyは「既存のシステムを置き換えるのはラク」(松野氏)。終始,二つの重量級フレームワークの引き立て役にされた感のあるweb.pyだったが,最後に一矢報いた格好になった。