Rubyには最近かなり話題のRailsがあるように、PythonにはDjango、Ploneがある。ただどちらにもいえることだが、高機能な分、覚えることが多い。[追記]Djangoはそんなことないようです。今度、試してみたいです。
なんか見通しの悪いソースコードがきらいな僕はcgiを作る時はweb.pyを利用している。と、言っても簡単なものしか書いたことないけど。
- web.py: makes web apps
web.pyの良いところは、充分なことが最小限の手数で行えること。充分な機能とは、
- テンプレート
- DBとの連携
- URLの操作
この辺りをしっかり押さえているため、MVCモデルのCGIを非常に直感的に構築しやすい。また、インストールもcgi直下にweb.pyを置くだけのため、インストール権限のないレンタルサーバでも使いやすい。
また、RSSをパースするためのライブラリーとしては、feedparserの機能が直感的ですばらしい。
- Universal Feed Parser
atom、RSSを問わず、urlを入力するとあとは辞書形式かインスタンス形式で以下のようにアクセスするだけである。
>>> import feedparser
>>> d = feedparser.parse("http://feedparser.org/docs/examples/atom10.xml")
>>> d['feed']['title'] # feed data is a dictionary
u'Sample Feed'
>>> d.feed.title # get values attr-style or dict-style
u'Sample Feed'
atomとRSSを問わないあたりが非常にインテリジェンスであり、簡潔だ。
あと、Pythonで日本語を扱う時に、うかつにunicode対応だと考えて、u'日本語'のような記述をパースしてはいけない。以下のような問題がおきる。
- Pythonでの日本語問題解説
http://lowlife.jp/nobonobo/zine/5/6.html
またPythonの標準ライブラリはunicodeには十分に対応していない。特にre(正規表現モジュール)はマッチオブジェクトを生成するため、この問題を避けて通れない。日本語を正規表現のライブラリで処理する場合には慎重になる必要がある。webブログラミングでも以下の記述を忘れずに。
import sys
sys.setdefaultencoding("utf-8")
さてさて、いろいろPythonのWeb開発環境を説明したが、Rubyに勝るとも劣らない環境が構築されていることは確かだろう。そろそろ自分はため込んだ知識をアウトプットする時期が来ているのではないかと考えた僕は、Pythonで以下のコンテストに応募することにした。
- ドリコムソフトウェアコンテスト:Drecom Award on Rails:
もう作成するサービスのイメージはできているので、5月から連休を使って実装に入ろうかと思う。小粒ですが、ぴりりと辛いサービスをつくるつもりなので、すこしだけ期待して待っててください。