LUA ファイル形式とは?
.luaファイルには、通常ゲームや組み込みアプリケーション向けにLuaスクリプト言語で記述されたプログラムまたはアプリケーション拡張のソースコードが含まれています。ソースコードとは、定義された構文を使用して記述されたコマンド、命令、および変数定義の集合です。.luaはプレーンテキストファイルであり、任意のテキストエディタで開いて編集できますが、構文ハイライト(シンタックスハイライト)をサポートする編集ツールで開くことが推奨されます。.luaファイルには、いくつかの短いコマンドから、完全なプログラムやモジュールのコードまで含めることができます。
Luaの構文はPascalからインスピレーションを得ており、この言語は連想配列(«テーブル»と呼ばれます)とメタテーブルによる拡張可能なセマンティクスを使用します。Luaは開発者によって次のように説明されています:
- 堅牢でテスト済み - Adobe Lightroomのプラグイン、WikipediaのScribuntoテンプレートシステム、CCTVや組み込みファームウェア、World of Warcraft(UIアドオン)や初代Angry Birdsなどのゲームを含む、多くの著名な開発者やプロジェクトで使用されています。
- 高速 - 最速のインタプリタ型スクリプト言語として広く認識されています。Just-In-Timeコンパイル方式のLuaJITは、そのパフォーマンスをさらに向上させます。
- クロスプラットフォーム - Luaはプラットフォームに依存しないANSI Cソースとして配布されており、Linux、Windows、macOS、Android、iOS、組み込みシステム、メインフレームコンピュータで動作します。
- 組み込み可能 - ドキュメントが充実しており、C APIを介して、コンパイル済み言語や他のスクリプト言語で書かれたコードと簡単に統合できます。
- シンプルかつ強力 - 必要に応じて拡張可能なメタ機能(メタテーブルとメタメソッド)のサポートを提供します。
- 軽量で無料 - インタプリタはアプリケーションに約300 KBを追加するだけであり、言語はMITライセンスの下でリリースされています。
Luaは、1993年にリオデジャネイロ・カトリック大学(PUC-Rio)のコンピュータエンジニアであるRoberto Ierusalimschy、Waldemar Celes、Luiz Henrique de Figueiredoによって作成されました。同大学のコンピュータサイエンス学部内にあるLabLua研究室によって保守されています。«Lua»はポルトガル語で「月」を意味します。作成以来、複数のバージョンが開発されており、現在の安定版は2020年に導入されたLua 5.4で、新しい世代別ガベージコレクタと個別の整数サブタイプが導入されました。プリコンパイルされたLuaバイトコードは.LUACファイルに保存され、可読テキストではなくバイナリの\x1BLuaマジックヘッダーを保持します。
セキュリティと安全性
リスク: MEDIUM.luaファイルはソースコードであるため、閲覧は安全ですが、信頼できないものを実行するのは安全ではありません。Luaスクリプトは os.execute、io.open、os.remove を呼び出したり、ネイティブライブラリをロードしたりできるため、悪意のあるスクリプトはファイルを削除したり、データを流出させたり、システムコマンドを実行したりする可能性があります。これは一部のゲームチートや «無料スクリプト» の.luaファイルがユーザーを攻撃する手法そのものです。ダウンロードした.luaは実行前に必ず読み、ゲームのアドオンやModは評判の良いソースからのみ入手し、中身を確認できない難読化されたスクリプトやバイトコード(.luac)には注意してください。Robloxなどのサンドボックス化されたホスト内ではリスクは低くなりますが、ソーシャルエンジニアリングによる «スクリプト» は依然として一般的な詐欺の手口です。
形式の詳細
概要LUA ファイルを開くプログラム
技術的詳細
詳細仕様| ファイルタイプ | プレーンテキストソースコード (UTF-8 または ASCII) |
| MIMEタイプ | text/x-lua |
| ファイルシグネチャ (マジックバイト) | ソースファイルにはありません。バイナリヘッダーのないプレーンテキストです。プリコンパイルされたバイトコードは 1B 4C 75 61 (ESC + "Lua") を使用します |
| 構文パラダイム | マルチパラダイム:手続き型、メタテーブルによるオブジェクト指向、および関数型 |
| 主要なデータ構造 | テーブル(連想配列) - 唯一の複合型であり、配列、辞書、オブジェクトとして機能します |
| コメント構文 | 単一行は -- 、ブロックコメントは --[[ ... --]] |
| シバン (Shebang) サポート | Unix系システムで直接実行するために、ソースファイルは #!/usr/bin/env lua で始まる場合があります |
| 標準ランタイム | lua (インタプリタ), luac (バイトコードコンパイラ), luajit (JITコンパイラ) |
| ホスト組み込みAPI | コンパクトなC API (lua_State, luaL_newstate, lua_call)。C++、Python、Javaなどのバインディングも利用可能 |
| 標準ライブラリ | io, os, string, table, math, coroutine, package, utf8, debug - 設計により最小限のフットプリント |
| コルーチンサポート | coroutine.create / coroutine.resume / coroutine.yield による第一級の非対称コルーチン |
| ガベージコレクタ | インクリメンタルな3色マーク・アンド・スイープ。Lua 5.4からオプションの世代別モードを導入 |
| 数値型 | Lua 5.3以降、個別の整数(デフォルトで64ビット)と浮動小数点数(倍精度)のサブタイプ |
| モジュールシステム | require() が package.path / package.cpath を介して .lua ソースおよびバイナリC拡張 (.so / .dll) を解決 |
| ライセンス | MITライセンス(オープンソース、商用を含むあらゆる用途で無料) |
| リリース日 | Lua created in 1993 at PUC-Rio (Pontifical Catholic University of Rio de Janeiro) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.lua.org |
LUA の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。LUA ファイルについて最初の質問をしてみましょう。