« CBL Partial Updater (20050922) リリース | メイン | RSS Feed と認証 »

2005年10月06日

mod_webdev

 ラボに入社する前に未踏プロジェクトで開発した「ウェブアプリケーション (Apache/Perl) 統合開発環境」(リンク先:PDF)をどうしたものか、というのが個人的な悩みでした。なにしろ、入社してから PHP のコードばかり書いているわけで、Perl の開発環境なんか不要なわけです注1

 一方で、運用中の環境で開発が行えるという点には今でも魅力を感じるので、その部分だけ切り出して、整理することにしました。

 mod_webdev (リンク先: SourceForge.net)です。


管理画面

開発版にアクセスした画面

運用版にアクセスした画面

 mod_webdev は、一言で言うと、条件つき mod_rewrite です。特殊なクッキーを伴ったリクエストについてのみ、ファイル名を書き換えることで、開発者が開発中のファイルをテストすることができます。

表1. アクセス例
URIhttp://example.com/cgi-bin/foo.cgi
実行ファイル (一般ユーザー)/home/www/cgi-bin/foo.cgi
実行ファイル (開発者)/home/www/cgi-bin/.htwebdev-test-foo.cgi

 こんなものの何が便利なのかというと、下表のとおりです。小規模なサービスの機能追加/バージョンアップのサイクルを短くするという目標がご理解いただけると思います。

表2. 開発手法の比較
手法メリット/デメリット
別環境での開発+テストが容易
-開発環境が別途必要
-開発環境と運用環境の同一性を維持する必要がある
運用環境での開発 (別ファイル名)+開発環境が不要
-URL が異なるため結合テストができない
mod_webdev での開発+開発環境が不要
+結合テスト可能
+ファイルリネームでデプロイ

 今後のバージョンでは、 PHP や Perl スクリプト内で、バージョンに応じた require や DB テーブル名の生成ロジック等を書けるようにしていきたいと考えています。

注1: 別に Perl を書いたらダメ、と言われているわけではありません。

投稿者 kazuho : 2005年10月06日 12:22 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/165

このリストは、次のエントリーを参照しています: mod_webdev:

» webdavではない from p0t
Kazuho@Cybozu Labs: mod_webdev mod_webde... [続きを読む]

トラックバック時刻: 2006年02月13日 14:44

» Memo from PukiWiki/TrackBack 0.2
お名前: 題名: mod_webdev † (2006-03-24 ... [続きを読む]

トラックバック時刻: 2006年03月24日 17:11

» mod_webdev from PukiWiki/TrackBack 0.2
概要 † http://labs.cybozu.co.jp/blog/kazuho/archives/2005/10/mod_webdev... [続きを読む]

トラックバック時刻: 2006年03月24日 21:44

コメント

貧乏で;_;開発環境は夢また夢の日曜プログラマです。
大変興味深いんですが、FastCGI環境でも動作可能でしょうか?
もちろん、開発モード時はCGI起動でも構わないんですが、仕組みがよく判ってないので…。

投稿者 ねね : 2005年11月02日 08:05

> FastCGI環境でも動作可能でしょうか?

技術的には fixup hook でパスを書き換えるだけなので、動作すると思います。試したことはないですが。

投稿者 kazuho : 2005年11月04日 15:01