QuickWikiやってる途中

引き続きQuickWikiチュートリアルをやっています。
もともとの趣旨からはかなり離れたところにいるわけですが、最終的には戻ってきますよ。

QuickWikiに関しては、すべてのコードを理解しながらやろうと思ったんですが、ちょっと時間がかかりすぎそうなのでざっくり終わらせてから理解を深めたいと思います。できれば最終的にはQuickWiki詳解みたいなまとめを書いて自分なりの理解度を確認したいと思います。

以下、前回の疑問点などを調べてみたメモ

  • PasteはWSGI用のWebアプリ作成支援ツール見たいな感じのもの。
  • そもそもWSGIを知らなかったんだけど、WSGIというのはPythonでWebアプリを作るための規格・・・というより規約で、これに準拠(という言葉が適当かどうかはわからないけど)してなくてもWebアプリは作れるけど準拠しておけば他のツールやライブラリとの連携が楽になる、というもの。Webサーバ-WSGI-(フレームワーク)-Webアプリというレイヤーになっていて、直接WSGIに従ってゴリゴリとアプリを作ってもいいし、WSGIフレームワークを使ってアプリを使ってもいい。いずれにしてもWSGIにのっとって作られたアプリであればPasteのようなツールが利用できるし、Webサーバを置き換えるとかどこかのライブラリを置き換える、といった場合の互換性がある程度確保されていることになる。
  • Javaで言えば「JavaでWebサーバ作るときには大体最初は似たようなこと書くんだからそこは規格は統一しましょう」ということでServletが作られたような感じ。Servlet(Tomcatとか)を直接使ってアプリ作ってもいいし、フレームワーク(Strutsとか)を使ってもいい。これも大体同じ。ただ、Servletという規格に対するTomcatという実装、のようにWSGIが仕様で実装がいくつもあるのかとかそういう点はよくわからなくて、どうやらServletと違ってWSGIというのはクラスじゃなくてインターフェイスなんじゃないかと想像。
  • Pylonsは最初からWSGIに準拠するつもりで作られたフレームワークなのでWSGIの互換性は非常に高く、その結果Pasteを使いまくっている。WSGI準拠フレームワークのリファレンスを狙ってるのか!? ちなみに他のDjangoZopeは元々独自に作られたフレームワークだけど、最近のバージョンではWSGI互換になっている。

こんな感じかな。違ってたらどなたかツッコミよろしく。

以下、新たなメモ

  • SQLAlchemyのマッピング定義はやってみると結構煩雑。RoRDjangoの内蔵ORMよりはJavaHibernateに近い。XMLの代わりにPythonで書いてるだけ、みたいな。
  • そこで調べてみた。やはりSQLAlchemyはちょっと面倒くさいと思う人が多いようで、SQLAlchemyをさらにラッピングして簡単にしたElixirとか、SQLAlchemyオフィシャル?で同様の機能を実装したdeclarativeプラグインというのがある。だったらSQLAlchemy使わずにSQLObjectでいいじゃん、という話もある。その辺の違いなどはまだ使ってないので不明。そもそもORM自体が苦手というか実用性をあまり評価してない(SQL書きゃいいんじゃないの?みたいなノリ)ので、もちょっと調べてみる必要がありそう。