2014年11月12日水曜日

マルチリンガルになりたい!② Lua編

ご無沙汰しています。本田です。

「マルチリンガルになりたい!」第二回は少しマイナーな言語を、という事で何を題材にするか悩みました。
いっそのことBrainf○ck系のニッチな派生言語でも紹介しようかとも思いましたが、少しでも役に立つ可能性のある言語の方が良いですよね。

という訳で、今回取り扱う言語は・・・「Lua」です。



■ Luaってなんぞや?

そもそも皆さんLuaって言語、聞いたことがありますか?個人的にはマイナーな部類の言語だと思うんですが、Wikipedia先生によると2011年にはTIOBE Programming Community Indexの10位に入っていた事もある言語だそうです。
分類としてはスクリプト言語ですが、JITコンパイラも開発されている様です。ついさっき知りました。基本的には手続き型の言語ですが、プロトタイプベースオブジェクト指向とか、関数型っぽいプログラミングもできます。この辺はJavaScriptとちょっとだけ似てますね。

■ 何に使われてるの?

LuaはそもそもがC言語のプログラムに組み込まれる想定で作られた言語です。なので、プラットフォームの機能をフルに活かしつつ、部分的に動作をスクリプト化する必要がある様な開発で良く使われます。例えばゲーム開発とかゲーム開発とかゲーム開発とか。

ゲーム開発ではベースのエンジンをネイティブアプリケーションとして組んで、イベントやダメージ計算等のバランス調整要素をスクリプト化する、なんてことが良くありますから、相性は最高ですね。
私がLuaを知ったのも、とあるMMORPGでサポートキャラクタの行動制御AIのカスタマイズ用言語としてLuaが使われていたのがきっかけでした。

当然ですが、ゲーム以外でも使われています。私の知る有名どころでは、nginxがリクエスト制御用にlua-nginx-moduleというものを提供していたり、VOCALOID3のJob Pluginなんて機能に採用されていたりします。

また、「組み込まれる想定」とは言いましたが独立したインタプリタで動かす事もできます。実行ファイルとdll併せて500KBにも満たないコンパクトな処理系なのもあり、一時期の私はカッコつけてUSBメモリにいれて持ち歩き、バッチファイルやVBScriptの代わりに使っていた頃もありました。

■ ここがスゴいよLua

先述の通り、組み込み用途を視野に入れて設計された言語というのもあり、非常にコンパクトです。ソースコードのサイズで言えば最新のLua5.2.3のサイズはtar.gz圧縮でたったの246KB!Rubyの最新版(5.1.4)のtar.gzが14.4MBである事を考えると、2桁も少ないんですね・・・。

かと言って言語として貧弱かというとそうでもなく、ガベージコレクションはもちろんクロージャとかmetatableとか、モダンな言語機能が一通り揃っている印象です。標準ライブラリは流石に最小限に留まっていますが・・・。

後はとにかく速いです。「Lua 速度 比較」でGoogle検索してみたところ、スクリプト言語としては大体トップを取っている印象ですね。すごいなLua

■ 使ってみよう

とりあえず触ってみたい!という方は処理系をバイナリファイルで直接入手するのがお勧めです。Luaのバイナリを提供しているプロジェクトはいくつかありますが、基本的にはLuaBinariesを利用すれば良いでしょう。

以下、入手からインストールまでをダイジェストでお送りします。


ね?簡単でしょう?
後は「lua52.exe」をダブルクリックして対話型のプロンプトを開くか、lua52.exeの引数にソースファイルのパスを指定してあげればプログラムが実行できます。これであなたもLuaプログラマ!


■ まとめ

Luaは小さいながらもやることはしっかりと手早くこなすことができる、まるで仕事ができるかわいい後輩のような言語です。今回は紹介しきれませんでしたが、言語としてもコード量が比較的少なく抑えられたり、コルーチンのような使いこなすと便利な機能を持っていたりと、かなり使いやすい部類に入る言語だと思います。

是非、一度触ってみてはいかがでしょうか。

0 件のコメント:

コメントを投稿