【ルア】

Lua とは?

最終更新:
💡 アプリの中で、処理を追加する軽量スクリプト言語

アプリケーションへの組み込みを得意とする軽量なスクリプト言語。ホスト側の機能を呼んで処理を追加できる。ゲームやWeb基盤などで使われ、利用できるAPIや言語の版は組み込み先によって異なる。

📌 このページのポイント
ホストアプリの中で、スクリプトを動かす ホストアプリケーション Luaの処理系 📄 スクリプト 処理を追加 組み込み先のAPIを使う ホストの機能 ゲームの操作 データの取得 など 呼び出す APIや言語の版は、組み込み先による テーブル:キーと値の組を扱う 数値キー → 配列風 / 文字列キー → 辞書 単体実行も可能。大きさ・速度は版や環境で確認
ホストにLua処理系を組み込む概念例。矢印はホストの機能を呼ぶ方向。OpenRestyはLuaJIT、RobloxはLua由来のLuauを使うため、実装を区別する。
ひよこ ひよこ
Luaってどういう言語なの?
ペンギン先生 ペンギン先生
別のアプリへ組み込み、処理を追加するのが得意な言語だよ。ホスト側が公開した機能をスクリプトから使える。単体で実行することもでき、設定や試作などにも使えるんだ。
ひよこ ひよこ
ゲームで使われているの?
ペンギン先生 ペンギン先生
公式紹介ではWorld of Warcraftなどの採用例が挙げられているよ。Robloxで使うのはLua 5.1から派生したLuauで、Luaそのものと仕様が完全に同じではない。ゲーム側のAPIや言語の違いは、その環境の資料で確認する必要があるんだ。
ひよこ ひよこ
軽量なら必ず速く動く?
ペンギン先生 ペンギン先生
Luaは組み込みやすい小さな処理系として設計されているよ。ただし大きさや速度は版、ビルド、処理の内容で変わる。LuaJITはJITコンパイルを使う別の実装で、標準のLuaと区別して考える。リアルタイムの処理に使うなら、実際の環境で測ろう。
ひよこ ひよこ
NginxやRedisでも使える?
ペンギン先生 ペンギン先生
OpenRestyはNginxとLuaJITなどを組み合わせ、Luaで処理を追加するWeb基盤だよ。RedisにもLuaスクリプトをサーバーで実行する仕組みがある。Redisではスクリプト全体の実行中にほかの処理が止まるので、処理が長すぎると影響する点にも気をつけよう。
ひよこ ひよこ
テーブルって何?
ペンギン先生 ペンギン先生
キーと値を対応させるデータ構造だよ。例えば数値のキーを使う配列風の表や、名前をキーに使う辞書を作れる。テーブルを組み合わせてオブジェクトのような仕組みも作れるけれど、言語にある値がすべてテーブルという意味ではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Lua」って出てきたら「アプリに組み込んで使う軽量スクリプト言語」と思えればだいたいOK!
📖 おまけ:英語の意味
「Lua」 = 月(ポルトガル語)
💬 ブラジルのPUC-Rioで生まれた言語。Luaはポルトガル語で「月」を意味し、略語ではないのでLuaと表記するよ

参考資料

← 用語集にもどる