Luaは優れたスクリプト言語
Luaって、組込み用の言語として認識されていると思いますが、組込みを意識しない用途で使用しても単純にすごく優れた言語だと思います。簡潔な記述で目的を達成することが簡単にできると思っています。そこで、もっと優れたスクリプト言語としての側面が認められてもいいんじゃないかと思いました。*1
確かにCとの繋ぎ部分がLuaの特殊な利点ではあるのですが、そうでない部分をクローズアップしてみたいと思います。前置きはこのくらいにして、さくらインターネットで、Luaの簡単なCGIを書くまでを書いてみます。
さくらインターネットにLuaをインストールする。
Luaは、メジャーな言語ではないので、まずインストールすることろからです。
さくらインターネットにLuaをインストールしてみます。
$ cd src $ wget http://www.lua.org/ftp/lua-5.1.3.tar.gz $ tar zxf lua-5.1.3.tar.gz $ cd lua-5.1.3 $ make freebsd $ vi Makefile インストール先を変更する。INSTALL_TOP を自分のHOMEディレクトリに変更する。 $ diff Makefile.org Makefile 15c15 < INSTALL_TOP= /usr/local --- > INSTALL_TOP= /home/smeghead $ make install
おわり。簡単です。
でですね、重要なポイントですが、通常Luaのスクリプトを用意して実行する際に必要なバイナリは以下です。
%ls -hl src/lua src/liblua.a -rw-r--r-- 1 smeghead users 191K Jul 18 13:17 src/liblua.a -rwxr-xr-x 1 smeghead users 141K Jul 18 13:17 src/lua
合わせても、332K です。こんなチッポケなバイナリで、表現力豊かなスクリプト言語が動くのは素晴しいことです。驚異的です。小さいことは良いことです。
hello world
実行ファイル lua は、引数無しでそのまま実行するとインタプリタの実行になります。
$ ~/bin/lua Lua 5.1.3 Copyright (C) 1994-2008 Lua.org, PUC-Rio > (ctrl-Cで終了します)
最初は、このインタプリタ上で、hello worldします。
$ ~/bin/lua Lua 5.1.3 Copyright (C) 1994-2008 Lua.org, PUC-Rio > print('hello, world.') hello, world. >
次に、eオプションで、hello worldします。e オプションは、perlと同じです。
$ ~/bin/lua -e 'print("hello, world.")' hello, world. $
もちろん、print(‘hello, world.’)という内容のファイル名を第一引数に指定してluaを実行することも可能です。
更にもちろん、shebangもできます。(スクリプトを直接実行するための仕組みです。)
hello.lua
#! /home/smeghead/bin/luaprint('hello, lua.')
実行権限を与えて実行します。
$ chmod +x hello.lua $ ./hello.lua hello, world. $
hello world(CGI編)
shebangが使える訳だから、特に考えることはありません。
hello.cgi
#! /home/smeghead/bin/luaprint('Content-Type: text/html\n\n')print('<html><body><h1>hello, lua.</h1></body></html>')
これを、apacheのDocumentRoot配下に配置し、実行権限を与えれば、CGIとして動かせます。(さくら以外で動かす場合など、スクリプトを配置したディレクトリをapacheでCGIを実行可能に設定することは必要です)
$ mv hello.cgi ~/www/ $ chmod +x ~/www/hello.cgi
あとは、ブラウザで http://(さくらインターネットのサーバ名)/hello.cgi にアクセスするだけです。
ここまで、perlでCGIを動かすときと同じで迷うことは無いと思います。
続きは、CGIライブラリ編になると思います。
*1:逆に、Luaの欠点は、ライブラリが揃っていないところでしょうか。でもそれは、ユーザが増えることで簡単に解消できることです。
海外の買取正規 取扱店