Web アプリケーションを配布するにあたっていろいろとあって、 PHP スクリプトが圧縮されていたり、 Rails のプロジェクトディレクトリが圧縮されてたり、プロジェクトディレクトリを git clone してこいだとか、だいたいそんな感じじゃないかと思います。
これは実際使用者にしてみればめんどくさくて、そのプラットフォーム毎の作法というのを覚えなければいけなかったりする。それくらい覚えろやカスといえばまあそうなんですが、そこをなんとかしたい。
ところで僕は Ruby を使って Web アプリケーションを作りますので、 gem install web-application とかで一発でアプリケーションをインストールできて、 web-application コマンドとかを叩けば起動できるとかだと嬉しいなあと思っていました。
というわけでそういうの作りました
https://github.com/ssig33/pig-media-server
http://rubygems.org/gems/pig-media-server
gem install pig-media-server
でインストール出来て
$ pig-media-server server {PORT}
とかコマンド打てば Web アプリケーションが起動します。 Unicorn など rack 用 Web サーバーを使用したい Ruby の事情に詳しい人の場合はいい感じにプロジェクトディレクトリを作って
require 'pig-media-server/web'
run PigMediaServer::Web
とか config.ru に書いておけばいいようになってます。
この仕組みを実現する為に、 JS と CSS をそれぞれ coffee テンプレートと scss テンプレート(と erb テンプレート)にして gem の中にぶっこんでます。故にこれらのアセットを配信するにあたって Sinatra アプリケーションを経由する形になってしまいます。個人がインストールして使うものなのでそこまでそれは問題にならないですし、いざとなれば前段においた nginx とかでキャッシュしてもらえればという感じです。
ちなみにこのアプリケーションは大量に動画を録画してそれを一切消さないで保存するという人が簡単に動画を管理し、ブラウザ経由で視聴したり Podcast として受信したりする為のアプリケーションです。今のところインストールと起動までは簡単にできるんですがそれ以外の環境構築とかが簡単にできるようになっているわけではないので、すぐに使えるというわけではないです。
こういう感じに使用者に優しい Web アプリケーションの配布を考えてみましたという話です。