Lua
| Lua | |
|---|---|
| 拡張子 | lua |
| パラダイム | マルチパラダイム |
| 設計者 | TeCGraf |
| 最新リリース | 5.2.2 / 2013年03月27日 |
| 型付け | ダック・タイピング |
| 主な処理系 | Lua、LuaJIT、LLVM-Lua、Lua Alchemy |
| プラットフォーム | クロスプラットフォーム |
| ライセンス | MIT License |
| ウェブサイト | www.lua.org |
| 作者 | Mike Pall |
|---|---|
| 最新版 | 1.1.7 / 2011年05月5日 |
| 最新評価版 | 2.0.0 beta 8 / 2011年06月23日 |
| プログラミング言語 | C言語 |
| 対応OS | Linux、Windows、Mac OS X、*BSDなど |
| 対応言語 | Lua |
| サポート状況 | 開発中 |
| ライセンス | MIT License |
| 公式サイト | luajit.org |
Lua(ルア)は、リオデジャネイロ・カトリカ大学の情報工学科コンピュータグラフィックステクノロジーグループ TeCGraf によって設計開発されたスクリプト言語である。
手続き型言語として、また、プロトタイプベースのオブジェクト指向言語としても利用する事が出来、関数型言語、データ駆動型としての要素も併せ持っている。
目次 |
概要 [編集]
Lua は、C言語のホストプログラムに組み込まれることを目的に設計されており、高速な動作と、高い移植性、組み込みの容易さが特徴である。いったんバイトコードにコンパイルされ、Lua VM で実行される。LuaJIT は The Computer Language Benchmarks Game によると、変数に型のないスクリプト言語では最速の言語・処理系である[1]。
TIOBE Programming Community Index の2011年6月版では10番目に人気なプログラミング言語である[2]。2007年に人気が急上昇した[3]。2009年2月の調査で、ゲーム開発者がイベントスクリプト等の内部処理に利用する言語として、最も利用例が多いと報告されるなど、近年はゲーム産業での利用が広がっている。[4]
MIT ライセンスのもと配布されているため商用プロダクトにも組み込みやすい点も高く評価されている。
特徴 [編集]
Luaの特徴としては、汎用性が高いが比較的容易に実装が可能である、というものである。実際のところLuaは、オブジェクト指向などといった他の要素としての働きを明白にはサポートしていないが、サポートしていない範囲においても容易に拡張が可能である。また前述のような、動作の高速性や優れた移植性なども大きな特徴である。
文法的な特徴としては、Pascal によく似た構文を採用していること、コルーチン(協調的マルチタスク)のサポート、数値型は整数と浮動小数点数の区別がないこと、関数を変数として扱えることなどが挙げられる。
Lua はいわゆる汎用スクリプト言語であり、特定の用途に限定されない性質を持つが、同じく汎用スクリプト言語である Perl、Python、Ruby と比較して高速に動作する。これはLuaの理念である、簡素、高効率、高移植性を目指した実装の産物である。また、Lua におけるテーブル(連想配列)の実装はかなり最適化されており、特にキーに数値のみを使用した場合は、単純な配列としてさらに高速に動作するようになる。
Lua 5.0 以前はメモリ管理にマーク&スイープ方式のガベージコレクションが使用されていたが、Lua 5.1 ではメモリ管理にインクリメンタル・ガベージコレクションが採用され、リアルタイム用途における性能の改善が図られている。なお、Python は参照カウント方式、Ruby は主にマーク・スイープ方式のガベージコレクションを採用しているが、ガベージコレクションの実装形態も Lua の高速動作および高リアルタイム性能に一役買っている。
また、Lua を C++ 言語で記述されたホストプログラムへ組み込むための省力化ツールとして、 tolua++[5]、Luabind[6]などが開発されている。
また、Luaj というJava仮想マシン向けの実装もある。これは、Lua 5.1相当の仕様を Java で実装しなおしたものであり、Javaのクラスからバインダ無しでインスタンスを生成したりメソッドを呼び出したりすることが可能である。
LuaJIT [編集]
Lua のJITコンパイラである LuaJIT が Mike Pall により開発されている。変数に型がないにもかかわらず、Javaよりも少し遅くなる程度の速度で動いている[1]。静的単一代入などをつかった高度な最適化が行われている。
Lua 言語自体は、変数が型がなかったり、連想配列と配列が同じ表記法・オブジェクトだったり、クラスベースオブジェクト指向言語ではない点などが、JavaScript と似ているが(JavaScript はプロトタイプベース、Lua はメタテーブルベース)、2009年頃から JIT コンパイラを搭載して高速化した JavaScript の処理系と比べても大きく速い[要出典][7]。
Lua の歴史 [編集]
Lua [編集]
- 1993年7月28日 - Lua 1.0 リリース。
- 1995年2月7日 - Lua 2.1 リリース。
- 1997年7月1日 - Lua 3.0 リリース。
- 2000年11月6日 - Lua 4.0 リリース。
- 2003年4月11日 - Lua 5.0 リリース。
- 2006年2月21日 - Lua 5.1 リリース。
- 2008年8月22日 - Lua 5.1.4 リリース。
- 2010年5月14日 - Lua 5.1.4-2 リリース。
- 2011年12月16日 - Lua 5.2.0 リリース。
- 2012年6月14日 - Lua 5.2.1 リリース。
- 2013年3月27日 - Lua 5.2.2 リリース。
LuaJIT [編集]
コード例 [編集]
挿入ソート [編集]
a = {5, 3, 1, 4, 2} for i = 2, #a do for j = i, 2, -1 do if a[j - 1] <= a[j] then break end a[j], a[j - 1] = a[j - 1], a[j] end end
Lua を採用している製品 [編集]
ゲーム [編集]
- Blue Mars
- CRYSIS
- Far Cry
- Garry's MOD
- Lost Wind
- RagnarokOnline
- Roblox
- Xenepic Online Revo
- ソニック・ザ・ヘッジホッグ (2006年のゲーム)
- ソニック ワールドアドベンチャー(北米版のタイトルは Sonic Unleashed)
- ティアーズ・トゥ・ティアラ 花冠の大地
- アイドルマスター2
- Warhammer Online: Age of Reckoning
- World of Warcraft
- カンパニー・オブ・ヒーローズ
- GRAVITY DAZE
- PHANTASY STAR ONLINE 2
- ファイナルファンタジーXIV[8]
ゲーム以外 [編集]
- 3DMLWプラグイン
- Adobe Photoshop Lightroom
- Aegisub
- Anime Studio
- MySQL Proxy
- nmap
- OpenWrt
- RigidChips
- Renoise
- Strata 3D
- Tachyon
- ヤマハのルータ (RTX1200、RTX810、SRT100、NVR500、FWX120)[9]
- LuaTeX
- VOCALOID3 - ユーザー側で歌唱合成用データを加工するエフェクタを自作できる[10]
- Wireshark
脚注 [編集]
- ^ a b x64 Ubuntu : Intel® Q6600® one core Computer Language Benchmarks Game
- ^ TIOBE Programming Community Index
- ^ The Lua Programming Language - TIOBE Software: The Coding Standards Company
- ^ Satori » The Engine Survey: General results
- ^ Ariel Manzur (2009年2月16日). “toLua++ - binding c/c++ code to lua” (英語). 2013年4月2日閲覧。 “MIT License”
- ^ “luabind” (英語). Products. Rasterbar Software (2007年4月1日). 2013年4月2日閲覧。 “MIT License”
- ^ Lua LuaJIT ÷ JavaScript V8 − x64 Ubuntu : Intel® Q6600® one core Computer Language Benchmarks Game
- ^ 「FFXIV: 新生エオルゼア」プロデューサー吉田直樹氏インタビュー
- ^ “Lua スクリプト機能”. ヤマハネットワーク周辺機器 技術情報ページ. ヤマハ株式会社 (2012年11月28日). 2013年3月28日閲覧。
- ^ ボーカロイドストアでAPIリファレンスを配布している。
関連書籍 [編集]
- 上野豊 『入門Luaプログラミング』 ソフトバンククリエイティブ、2007年12月25日。ISBN 978-4797342727。2013年4月2日閲覧。
- 浜中誠 『スクリプト言語による効率的ゲーム開発 : C/C++へのLua組込み実践』 ソフトバンククリエイティブ、2008年9月30日。ISBN 978-4797348552。2013年4月2日閲覧。
- 浜中誠 『スクリプト言語による効率的ゲーム開発 新訂版 : LuaとC/C++連携プログラミング』 ソフトバンククリエイティブ、2010年9月29日。ISBN 978-4797361667。2013年4月2日閲覧。
- Roberto Ierusalimschy 『Programming in Lua : プログラミング言語Lua公式解説書』 新丈径訳、アスキー・メディアワークス、2009年8月31日。ISBN 978-4048677974。2013年4月2日閲覧。「Programming in Lua.2nd ed」
- 清水美樹 『はじめてのLuaプログラミング : 人気の軽量スクリプトでアプリケーション開発!』 工学社〈I/O books〉、2008年12月25日。ISBN 978-4777514137。2013年4月2日閲覧。
関連項目 [編集]
- Squirrel
- SciTE
- Wikipedia:Lua - ウィキペディアにおけるLuaの解説ページ。
外部リンク [編集]
|
|||||||||||||||||||||||||||||||||