困った時の自分用メモ

読んだ本を考察してメモったり、自分でいじった物の感想をメモったりする場。週1更新を目指します。

Luaの話~2:試す方法(LuaInterpreterとC++バインディング)~

これから、数回の渡り、アプリ開発で得たLuaの知見を共有していく。
今回は、Unity以外(というより、恐らくこっちがメジャー)でLuaを実行する方法を紹介。

〇LuaInterpreter
手っ取り早くスクリプト内容を簡単に見たいのであれば、Web上で動くLuaVMの環境を用意してくれているのでそこで試すといい。

https://www.lua.org/cgi-bin/demo

例えば、以下のコードを打ちこんで「run」ボタンを押せば、実行される

function CalcSet(a, b)
    return a+b, a-b, a*b, a/b
end

add, sub, mul, div = CalcSet(6, 2)
print(add)
print(sub)
print(mul)
print(div)
※出力は
8
4
12
3.0

これは、CalcSetに引数を渡すと、加算減算乗算除算を結果を返してくれて、それを表示するプログラムだ。

また、Windows環境で動くInterpreterも存在するので、興味があれば探してみるといい。

C++バインディング
何かの言語に実際に組み込んでみる場合は、まずはC++バインディングをお勧めする。
理由としては、

・実行できるアプリを動かすには、WindowsアプリケーションはC++で作るのが簡単
・Unityよりは、Luaバインディングがメジャーなので、情報が豊富

この辺りが理由だ。
実際、筆者もUnity(C#)でのバンディングを研究する前に、C++Luaとのバインディングの仕組みを実際に動かし、勉強した。
その時の知見が、Unityへのバインディングをする際にも役に立った経緯がある。

ここで得てもらいたい考え方とは、LuaVMの大雑把な役割は、値のやり取りをスタックに積んでそれを操作するという実装になっているという事だ。 これを理解して使うのと使わないのでは、ただ使うだけだと恐らく問題に詰まった時の解決能力の差がかなりでると思う。