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/lua
print('hello, lua.')

実行権限を与えて実行します。

$ chmod +x hello.lua
$ ./hello.lua
hello, world.
$

hello world(CGI編)

shebangが使える訳だから、特に考えることはありません。

hello.cgi
#! /home/smeghead/bin/lua
print('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の欠点は、ライブラリが揃っていないところでしょうか。でもそれは、ユーザが増えることで簡単に解消できることです。

1件のコメント

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


The reCAPTCHA verification period has expired. Please reload the page.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください