2008年11月 6日 (木)

TurbogearsからDjangoに乗り換えてみて

去年から、プロトタイプ実装に使っていたpythonのweb application frameworkを

最近、TurboGearsからDjangoに乗り換えました。

それで、両者の違いとか、感想などを書いてみようかと思い立ったわけです。

Turbogearsを使い始めたのは,去年の一月くらい。TurboGearsの勉強会があって、いきなり全くの素人なのに参加して、柴田さんに教えてもらったturbogears製のソーシャルブックマークアプリを簡易ハックしてプレゼンなんかして、turbogearsデビューとなりました。

もう、その時には,Djangoはあって、まだ、google app engineはなかったころですね。

で、5月くらいから、会社のプロトタイプ実装に使い始めて、結構いろいろ、コードを書きました。sqlobjectで苦労したり、resourceのパスで苦労したり、いろいろ。

そもそも、djangoじゃなくて、turbogearsを使い始めた理由はいくつかあるのですが、大きくは

  • 定評のあるpythonライブラリによるメタフレームワーク
  • template言語がxmlベースのkid
  • sqlobjectがよさそうだった。

でした。

今思い返してみると、すべて裏目に出たよう感じがしてます。メタフレームワークなので、情報がばらばらで、バージョンの変化とかが面倒だし、文書が整備されないとか、

また、xmlベースのテンプレート言語のkidを嫌いじゃなかったけど、私の書き方の問題かもしれないが、記述が煩雑、表示速度が遅い。デバグがやりにくい。ってところ。

あと、けっこう、sqlobjectには手こずったかもしれない。バージョンが

0.7から、いまは、0.10くらいなってるか、で、リレーションの扱いがいまいちわかりにくく、使いにくかったように今になって思う。

ResultSet を取ってきて、for ループでまわしていて、リレーションのの不整合で、

exceptionはいたら、for 全体でしか、ハンドリングしてくれなかったりとか、これは、こっちの問題かもしないが、情報ほとんどないし、やっぱり使いにくかったかな。

Djangoのほうは、統一された、フルスタックのフレームワーク、シンプルなテキストベースのtemplate言語、シンプルなORMで、Turbogearsとは逆の方向かもしれない。本格的に乗り換えて、ここ一ヶ月くらいだが、上記の3つはどれも、いまのところ、使いやすく、おおむね気に入っている。

詳細はまた、違うエントリーに書くかもしれないが、目立った、気づいた両者の違いを列挙してみたい。

  • djangoのurls.pyのurlconf ?は、turbogearsにはなく、使いやすい。
  • djangoには、paginationが標準装備
  • turbogearsでは、http request, http responceが隠蔽されていたが、djangoは明示的に使われている。最初これがだめで、tgの方がかっこいいとおもったけど、implicitよりexplicitのほうがいいね
  • djangoのORMはシンプル、リレーションがかなりわかりやすく、つかいやすい。
  • djangoのORMをmysqlで使うとき、charfieldはデファルトで、大文字小文字を区別しないっぽい
  • djagnoのmod_pythonによる、デプロイは結構簡単だった
  • django 0.96と1.0の違いが、少々あってその違いは、情報探す時ちょっといや
  • djangoのテンプレートは、シンプルにかける
  • が、ちょっとpythonの処理をさせたい時は、kidのほうが簡単かな、djangoの場合、filterを書かなくちゃいけないし,そもそも、pythonの式、文をかけない
  • キャッシュがdjangoには、標準装備。tgには、ない。data, objectnのキャッシュはmemcachedとかでできるけど、ページキャッシュがexpose()でどうやんのかわからんかった。
  • 最近発売された、django本はいい。国内のtgの本も悪くないけど、著者が忙しいためか、情報、内容がすくない。
  • 英語のtg本ももってるけど、わかりやすい。。ほうではないような。というか、メタフレームワークなので、必要とする情報が多すぎる。sqlobjectもcherrtypyも、kidも、、、で、一冊におさまりきれてないような。
  • formも使いこなせてないけど、djangoのほうが、tgよりわかりやすい。というか、tgのform, widgetはわかりにくく、情報がない。

まあ、何事も偏見なく、冷静に、自分で使って、判断しましょうってことかな。

| | コメント (0) | トラックバック (0)