LLでお手軽Webサーバ、そしてkanazawa.js v1.6.5のご紹介

ここ何年かずっと Web のフロントエンドの人にももっと Web サーバが手軽に使えるといろいろ捗るんじゃないかと思っている。なのでその紹介。

なお、分かっている人は読む必要ないし、とても冗長な記述になっています。

で、その前に、

kanazawa.js v1.6.5 に行きます

kanazawa.js v1.6.5 - もくもく会とたまにLT - : ATND

12/17(土) ITビジネスプラザ武蔵でボクと握手!

スケジュールに入ってないけど、このネタでデモります! デモらせろ!

なぜ Web サーバか

  • いちいちサーバにアップしなくても手元で本番と同じパスでアクセスできる1
  • <a href="./index.html" とか書かなくても <a href="./" でよい2
  • ついでに LL で開発もできちゃうかも

Webサーバの選択肢

  1. Apache, nginx など本格的なもの
  2. 主に個人向けなシンプルで軽量なもの
  3. LLで書かれたもの

選択基準 - 面倒はイヤ

  • コンパイルとか面倒
  • 設定とか面倒

面倒はイヤなので

  • 設定ファイル書かなきゃいけないのはボツ

あと個人的には

  • 環境が変わるたびに調べ直すのは面倒
    • Mac でも Linux でも Windows でも動いてほしい。説明もその方が楽。

ということで

3. LLで書かれたもの

だけを扱うことにします。

Windows には小さい Web サーバはたくさんある

ちょっと脱線。

実は Windows にはバイナリインストールできる軽量 Web サーバがたくさんある。KUROIGAMEN とか知らないし、マウスでポチポチするだけがいい、という場合はそれらの中から好きに選んでもらえばいいんだけど、これと同じものが Windows 以外では動かないとか動くけどコンパイルが必要で面倒くさいという場合が多い。こうなると Windows 以外の環境とノウハウを共有することが難しい。ここが自分の中では問題だと感じている。

例えば開発者が Windows でデザイナが Mac という環境の場合、どちらかのノウハウもお互いに教えることができず、効率が悪い。また個人で複数の OS を使うのは作り手としてはそれほど珍しい話ではない。そうなったときにもノウハウが共有できないと面倒が増える。

それに、一つくらい LL が使えるといろいろ世界が広がるよ。

※ 実はしばらくの間 Windows でも Mac でも mongoose ( 旧 shttpd ) を使えばノウハウも共有できるし立ち上げっぱなしでも邪魔にならないし、いいじゃんと思っていたんだけど、v3 になって Windows のタスクトレイに入るようになってからどうも Windows で挙動があやしいのでオススメしないことにした。

Python

長らく LL で手軽な Web サーバと言えば Python が有名だった。と思う。

python -m SimpleHTTPServer

と打てば

  • カレントディレクトリを Document Root に
  • port 8000

で Web サーバが立ち上がる。

http://localhost:8000/

を開くと python を起動したディレクトリの中身が一覧に出てくる。

インストール

Python は Windows ではインストーラで手軽に入るし、OSX なら最初から入っているので新たな作業は不要。

http://www.python.org/download/releases/

Ruby

Ruby も標準で WEBRick という Web サーバを持っているのだが、長いこと手軽に起動する方法がなかった。これが 1.9.2 になって改善した。

ruby -run -e httpd DIRCTORY

で ok. DIRECTORY を `.` とするとカレントディレクトリを Document Root として動作する。

ただし OSX や Linux などでは 80 番ポートで動かそうとして root 権限がないと怒られる。

sudo ruby -run -e httpd DIRCTORY

ruby -run -e httpd -- --port[=]3000 DIRCTORY

などとすると良い。代表的なのはこんな感じになる。

ruby -run -e httpd -- --port 3000 .

WEBRick サーバを自分でスタートするよりは手軽だけどまだ Python に比べるとちょっと気を使うし、面倒な感じはある。

cf. ruby -run -e httpd – –port=3000 . - %!zt! <diary> (2010-12-02)

インストール

  • Windows なら http://rubyinstaller.org/
  • Mac の場合は
    • コンパイルしたくない場合は実は JRuby が手軽じゃないか
    • jruby –1.9 -run -e httpd – –port 3000 でイケる

Perl

Perl は Perl 入れて cpan から好きなもん入れてください。以上。

PHP

フロントエンドの人といちばん仲の良さげな PHP. 実は PHP も 5.4 から build-in の Web サーバを持つらしい。でもまだそれが本当に手軽に手に入る環境はないので、これも割愛。

まとめ

やっぱ手軽さでは Python か。PHP 5.4 が来たら実は本命になる可能性もあるのかなぁなんてことを思ったりしている。.htaccess と php.ini から解放されるなら、だけど。

  1. JavaScript URL Dispatcher とか考えると実は必須。 

  2. こういう細かいところ気になるでしょ? 

More

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Develop Document Jekyll