試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Luaの言語バインディングとLGIについて(2014年6月時点)

LuaとLuaJITの概要と、LuaJITのLua 5.2との互換性について(2014年6月時点)」の続きとして、Luaの言語バインディングについてを扱う。

LuaC/C++言語のプログラムに組み込んで使うという形が想定されていることなどもあって、単独で呼び出せる機能はそれほど多くはなく、基本的なファイル入出力や数学関数,文字列処理や各種データ型に関係した処理,OSの幾つかの限られたファイル操作や情報取得などしかできない。
別途言語バインディングのパッケージをインストールすることでLuaから扱えるライブラリ(呼び出せる機能)を増やすことはできるが、Pythonなど他の言語向けのバインディングと比べるとあまり数は多くない。また、Lua 5.2へまだ対応していないものも見られる(バインディングのパッケージ自体が対応済みでもディストリのパッケージが対応していないものも含む)。ただ、LuaJIT(バージョン2.0.x系)を用いてプログラムを動かす場合はLua 5.1向けのものが使えるので問題にはならない。
有用と思われる言語バインディング

など。
LGI(https://github.com/pavouk/lgi)という言語バインディングはGObject Introspection(関連記事)対応の多数のライブラリをLuaから利用可能にし(PythonにおけるPyGIに相当)、Lua 5.2にも対応している。Debian/Ubuntuでのパッケージ名は「lua-lgi」。下は対応ライブラリの例。

  • GLib: 色々な処理やデータ型などを提供する汎用のライブラリ
  • GIO: ファイルなどの入出力
  • GTK+: GUIツールキット(バージョン3系のみサポート)
  • GStreamer: プラグインを用いて映像や音声を扱う
  • GdkPixbuf: 画像データやそのバッファを扱う
  • libnotify: 通知バルーンを扱う
  • libsoup: ネットワーク処理
  • GUdev: システム上のデバイスや記憶装置などに関する情報を取得

LGIを使用する場合、別途GObject Introspectionの.typelibファイルを提供するパッケージ(Debian/Ubuntuでは「gir[バージョン]-[ライブラリ名など]」形式の名前のパッケージ・例えば「gir1.2-gtk-3.0」)が必要になる。

まとめドキュメント: