viewcvs

http://sf.net/(sf.net)でも採用されているViewCVS(sourceforge.net)。私はずっとcvsweb(fh-heilbronn.de)を使っていると思っていたのだが実はそうではないらしい。ダウンロードしてみた。

このViewCVSはPythonで書かれている。しかもCGIはもちろん、standaloneでも動かせるというスグレモノだった。standaloneはおもしろい。-rでリポジトリを指定して動かすとWebサーバが上がって、そのリポジトリを見ることができる。しかも-gオプションをつけるとGUIのコントロールまでついてきちゃう。ログはApacheのに似たのがstdout(かstderr)に出てくる。

この実装力(?)は何からくるものなのだろう。普通はそこまで作らないでしょ。ソースを軽く眺めてみたのだけど、Webサーバを動かす力はBaseHTTPServerモジュールの威力のように見える。単にGETやPOSTのハンドラを定義するだけでWebサーバになるわけだから。GUIはおなじみTkinterだ。こいつには私も何度もお世話になっている。Tkだからネイティブ(?)のGUIと比べると今となってはショボい感じもあるが、WindowsでもLinuxでもほとんど同じように動いてくれる。

つまりPythonの偉いところはモジュールが最初からついてくるところだろう。Rubyもだんだんそうなるらしいが、PythonやPHPのモジュール力の強さはどうしようもないところまできている。Rubyけっこう好きだけど使わないのはそういうところだ。いくらPythonのスレッドがタコっぽくても、気づくとPythonを使ってしまう。あとPythonはモジュールの調査もしやすいんだよね。起動してimportほげほげ、help(ほげほげ)でだいたい使い方がつかめる。

それに、Pythonは性悪説の言語だから悪人でも安心して使えるというのもある。おれ、プログラマとしてはけっこう邪悪だからね。

(追記) 2003-08-08 11:02

Python 性悪説というのはあまりメジャーな説ではないらしい。

(追記) 2003-08-08 09:55

Pythonは追加モジュールもソースをとってきてpython setup.py bdist_rpmだけでRPMのパッケージができてしまうものが多い。Rubyは1.4時代は次のようなテンプレートからspecファイルを作っていた。今は1.8だから、もう使えないかもしれないが。

%define name    ---rewrite-me---
%define ver     x.x.x
%define rel     1
%define prefix  /usr

Summary: ---rewrite-me---
Name: %name
Version: %ver
Release: %rel
Vendor: Watanabe
Packager: Watanabe T <XXXXXXXX@XXXX.XXX>
Copyright: GPL ---checkit---
URL: http://www.rewrite-here.neto/
Group: Foo/Bar
Source: http://www.rewrite-here.neto/%{name}-%{ver}.tar.gz
BuildRoot: /var/tmp/%{name}-root
NoSource: 0
# PreReq: hogehoge

%description
(from README)
 ---rewrite-me---

%prep
%setup

%build
ruby extconf.rb
if [ "$SMP" != "" ] ; then
  make -j $SMP
else
  make
fi

%install
rm -rf $RPM_BUILD_ROOT
make install libdir=$RPM_BUILD_ROOT%{prefix}/lib/ruby/1.4 \
  archdir=$RPM_BUILD_ROOT%{prefix}/lib/ruby/1.4/${RPM_ARCH}-linux

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root)
%doc README* COPYING ChangeLog TODO doc*
%{prefix}/lib/ruby/*/*.rb
%{prefix}/lib/ruby/*/*/*

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です