FireFoxにWebサーバ機能を追加するエクステンション


POW -- Plain Old Webserver :: Add-ons for Firefox
キタコレ

FireFoxにWebサーバ機能を追加するエクステンションだそうです。といっても、Apacheの置き換えのような本気サーバではなく、オフラインで使えるWebインターフェースのアプリケーションを作る土台を狙ってるそうです。

こんなツリーをどこか適当な場所に作っておき、

siteroot
  pow
    htdocs
    log

htdocsにコンテンツを格納、で、POWのオプション画面で、siteroot(この名前は何でもいいけどサブフォルダ階層は守ること)のフォルダを選択すればOK。ごく普通のファイル(htmlとかcssとかjsとかgifとか)なら、期待通りのMIME-Typeを返すし、index.*があればそれも表示するし。

これ、仕組みを考えれば考えるほど、Webデザイン屋としては放っておけない代物ですね。すぐに仕事の効率アップに使えそう。

外部参照が絶対パスで指定される場合のWebページデザイン

一番使えそうなのがこれ。大きなWebサイトの一部のHTMLページを受注制作しているとき、サイト全体の共通モジュールとして、/CSSと/imagesに置いたファイルをリンクせよ、とか、/cgi-bin/hoge.cgiを使え、とかいう「サイトルートからの絶対URI」を指定されることがよくあります。
デザイナーの環境では、ローカルファイルシステム以外に何もなく、しかたなく、その案件専用のテストサーバをひとつ調達し、ファイルを少し変えるたびにいちいちFTPで転送してはブラウザプレビューする…。こんな非効率な現場がざらにありそうです。
ローカルにApacheなり何なり立てて、適当にmod_rewriteでURLを書き換えて本番環境に似せるのが本筋でしょうけど、デザイナーの作業環境すべてにそれを要求するのは、ちょっとかわいそうです。
デザイナーとしては、「サイトツリーの入った自分の作業フォルダをGUIで指定するだけ」で、「ファイルを変更したら即座にブラウザに反映される」ことは相当なメリットになるんじゃないかと思います。

Flashコンテンツの非ローカル環境テスト

ブラウザのFlashPlayerは、コンテンツを本当にWebに置いてないと(つまりHTMLとswfをHTTPプロトコルでアクセスしていないと)、外部ファイルの動的ロードやHTML-Flash間通信をサイレントに拒否したりします。ちょっと賢いFlashコンテンツを作ると、どうしてもテストサーバ必須になってしまいます。
FlashでActionScriptコーディングありの案件を、POWのサイトツリーに入れると、ローカルファイルプレビューと同じ気軽さで、HTTP経由swfとして正しい動作を期待できます。

Ajaxのクライアント側のみのコーディング

なにやら、サーバ側はデータ守秘の都合とか何とかで、システム系の会社さんががっつり握っていて、どーんと設計が送られてきて、Webページデザインとその中で動くAjax部分のコードだけを書くなんていうような(SQL投げてそのままXMLに変換しただけの自称サーバシステムより、なぜか予算割り当てが低いHTMLデザインという)仕事、よくありますよね。
クライアント側だけ、とか言われたって、サーバのレスポンスを動的なものとしてシミュレーションするためには、どうしたってテストサーバとスタブプログラムが必要です。が、それ抱えちゃうと、システム会社の仕事半分やってしまったようなもので…。
そこで、サーバ側のテスト用ハンドラも(Ajaxのついでのお手軽さで)JavaScript使って実装しておき、システム会社の仕事半分をタダでやるなんていうもったいないことを避けられれば嬉しいですね。もちろん、データベース使うときはFireFoxに入ってるsqlite3が使え、これまたFireFoxのSQLiteManagerでテストデータのメンテする、と。(sqliteファイルへのバッチ処理は、PythonRubyなんかも便利に使えますよね)

SQLite Manager :: Add-ons for Firefox

      • -

説明サイトでは、phpやpyに任意のインタプリタを割り当てられると書いてあるのですが、残念ながら、それらがCGIとして機能するわけではありませんでした。単に、スクリプトの標準出力がHTMLとして書き出されるだけです。リクエストパラメータ等について調べることができるのは、sjsのPOW用APIだけでした。
普通のWebサーバとあまりにも違いすぎるので、サーバアプリケーションの開発環境としては使えません。というか、そもそも元からサーバの案件なのであれば、それなりの環境を作るべきでしょう。

なんだか、Greasemonkey以来のエキサイティングな機能な予感。コンセプトとしては、WebアプリのUIを使ってオフラインアプリを作るという点で、Adobe AIRとかぶるけど、個人的には、新しい別のウィンドウを(スタートメニューから)開くAIRより、すでに開いてるブラウザの新しいタブで動いてくれる方が嬉しいな。という意味では、むしろGoogle Gearsなのかも。