2007-10-20

_ Zopeの開発環境

Zope3に依存した話ではないが、 Pythonの環境を整備するのに、最近いろんな用語が飛び交っていて、 異常にわかりにくい。 自分も完全に理解したとは言えないが、 適当にまとめておく。

  • distutilsはPython標準の配布・構築ライブラリ。みんな前から使っている。
  • setuptoolsは生でdistutilsを使うのは疲れるので、割と使われているもの。
  • eggは事実上の標準Pythonパッケージ形式。
  • Easy InstallはPyPIとかから簡単に新しいパッケージをインストールするためのツール。apt-get installみたいなもの。
  • PyPIはPythonのパッケージを登録できるところ。
  • virtualenvはローカルに分離したPython環境を構築するためのユーティリティ。パッケージを非標準なところにインストールするのが簡単になる。virtual-pythonやworkingenvの後継らしい。
  • zc.buildoutはZopeな人たちが作った、virtualenvに似たもの。もっといっぱり出来る代わりに、もっと面倒くさい。よくbuildoutと呼ばれている。
  • Pasteは設定支援ツール。
  • zopeprojectはいろいろ組み合わせて、手軽にZope3な環境で遊べるようにするためのもの。Zopeを単なるライブラリとして捉えるところが新しいと言えば新しい。

Zope3はbuildout+eggに完全移行なので、 buildoutを使うのが当然という空気になっている。 しかし、このbuildoutだが、いまいち「具体的に」みんなどうやって使っているのか見えにくい。 Zope 3 Wikiの Using Buildout なんて、ほとんど中身がないし、 Jimの Introduction to zc.buildout は前提知識が多すぎて、最初はさっぱり意味が分からなかった。 Zope 2用に書かれているが、 Ploneの Managing projects with zc.buildout が一番マシな気がする。

こうもいろんなものが山ほどあると、とてもとっつきにくい。 用語は多いし、必要なものは一箇所にまとまってないし、 分かりにくいこと、この上なしである。 しかも、最近のZopeは分解ブーム(全部普通のPythonパッケージにして、かつ、ライブラリを多数のパッケージに分割しまくり)なので、 ますます混乱しやすくなっている。

こうしたくなる気持ちはわからないではないが、 依存関係の深いものまで分割されると、むしろ迷惑。 もはや「Zopeにはこれとこれとこれがあって、こういうときにはこれを使うとよくって...」みたいな説明が簡単にはできなくなっている。 何たって、「これがZopeです」とはっきり示せるものがほとんどないんだから。

こういう状況はいかにもPythonらしいわけだけれど、 こういう風にやればうまく行きますよ、みたいなガイドラインが欲しいところだ。 そういう意味で、zopeprojectは名案だと思う。 だが、zopeprojectは今までのやり方と違いすぎるのが問題で、 慣れをある程度放棄しないといけないのが玉に瑕。

[]