Luaに関する10のコト。採用TOPブログLuaに関する10のコト。Luaはもう駆逐されてしまったのかLuaに関する10のコト。投稿マスターみなさんは、Lua(ルア)をご存知でしょうか。一部の技術者は「Luaは落ち目であり、他の言語に駆逐された」と評価されています。結論をいえばLuaはまだ駆逐されてはいません。その理由を『Luaに関する10のコト』と題して網羅的に解説します。Luaとは『Lua』(ルア)とは、ポルトガル語の「月」を語源とするスクリプト言語です。スクリプト言語はプログラミング言語の分類の一つであり「台本・脚本」という意味があります。「分かりやすく、より簡単に記述できるもの」を指します。■クロスプラットフォームであり、言語に依存せず機能を搭載できる■オブジェクト指向プログラミングが可能であり、ガベージコレクションなどの機能を最初から有する■スクリプト言語・組み込み言語としては最速の部類に入るLuaは、Windows、Mac、Linux、etc、といった様々なOS上で動作します。Luaはオブジェクト指向プログラミングが可能であり、ガベージコレクションなども搭載しています。各種言語用のバインダー(後述)も多く開発されたことや、スクリプト言語としても最速クラスであったため、組み込み用の言語として長年使われてきました。■Luaは標準ライブラリが少なく、他のライブラリを用いると依存性が高まる■オブジェクト指向の定義方法が言語に規定されていない■Luaは言語仕様・その構造的に、セキュリティ確保が難しいまず、Luaは標準で使えるライブラリの数が少ないという欠点があります。Luaが標準的にサポートするのは、CのAPIを用いて実装できる範囲(参考)に留まるため、他の機能は組み込む側に委ねられています。環境毎に互換性が減り、依存性が高くなります。Luaは、オブジェクト指向プログラミングに対応しています。オブジェクトはハッシュテーブルで定義され、シンタックスシュガー(糖衣構文)により効率的にアクセスできます。Luaによるオブジェクト指向の実装方法は利用者に任されており、プロジェクト毎に実現方法が異なる可能性がある点は、明確な欠点となります。Luaはメタテーブルの使用が必要となる場面が多く、これらのアクセスを禁止することができません。メタテーブルにはシステム的な情報と一緒に、オブジェクト指向やリフレクションに必要な情報も記録されているからです。加えてLuaは難読化が可能ですが、多くの場合リソースとしてローカルファイルに保持されるため、改ざんによるセキュリティリスクが他の言語より高いという欠点を有します。Luaをスクリプトとして採用するには■C言語(本家)■C++(Sol2)■Java(JNLua)■C#、VB.Net(LunaRoad)LuaはCをメインとしていますが、多くの言語でバインダーが公開されています。バインダーとは、Luaと変数やオブジェクト(インスタンス)をバインド(接続)して使うためのライブラリのことです。ここであげた例は一例であり、別のプログラミング言語を使用する場合等は「http://lua-users.org/wiki/BindingCodeToLua」へアクセスして確認できます。Wikipediaここからは、Luaを採用したシステム例を3つ紹介します。『Wikipedia』(ウィキペディア)は、『MediaWiki』(メディアウィキ)を用いた世界的に有名な、事典プロジェクトです。詳細は掲載しているリンクをたどってください。このメディアウィキにはテンプレート機能があります。そのテンプレート機能では詳細な制御内容を書く場合に煩雑となるため、Luaを用いて内容を記述することができます(参考)。FlashAir『FlashAir』はTOSHIBAが開発するWi-Fi内蔵の高機能SDカードです。W-03』シリーズ以降、内部にLuaを用いた機能拡張が可能になっています。使用する機器はSDカードにさえ対応していればよいため、Wi-Fi未対応のデジタル一眼レフカメラをクラウド対応機のように振る舞わせることや、ポメラDM100はEvernote連携などが可能になっています。USBタイプのSDカードリーダーを常にコンセントに接続しておけば、メディアサーバーやウェブサーバーを構築したり、PCに接続してGPIO制御ボードの代わりにするといった応用的な使い方も可能です。SE』(通称:マルチプラスSE)は、日本人開発者が主導するペイントソフトです。デジタル漫画を描く機能を中心に開発されていますが、水彩塗りや厚塗りといった表現も可能です。ブラシスクリプトと呼ばれるLuaを用いたオリジナルのブラシを開発し使うことが可能です。拙作のオリジナルブラシも公開しており、多くの利用者から支持を得ています(参考1、参考2)。Decoda』も選択できます。入門用途であれば『codepad』を用いてウェブサイトだけで動作確認が可能であり、Luaの習熟は比較的簡単だといえます。Luaでのデバッグ方法Luaでデバッグを行う場合は、標準ライブラリである「debugパッケージ」を使うか、デバッガを用います。組み込み用のLuaであれば、スタブコード(環境固有のAPIに対する振る舞いをデバッグ用に仮作成したコード)の定義が必要となります。Decoda』(IDE)などがあります。DecodaはLuaを実装したアプリケーションの実行可能ファイル(exe)を指定すると、スタブを自動生成する機能を有しており、ぜひ活用したい機能となっています。■IoTやネットワーク制御において今後の需要増加が見込めるから■UnityやCocosなどのゲームエンジンの需要増により、Lua自体の需要増も見込めるからLuaは、『R』(統計に特化した言語)や、Python(AI方面の開発言語として注目)と比べると、魅力が少なく見えているかもしれません。今後IoTの発展によりLuaの需要も再度高まることと、ネットワーク制御の分野でLuaは地位を確立しているため心配は無用です。UnityやCocosなどのオープンなゲームエンジンへの需要も増加しており、Luaが近い内に駆逐されてしまうことはないと断言し、この記事を終えます。最後まで読んでくださり、ありがとうございました。▼キャパの公式Twitter・FacebookではITに関する情報を随時更新しています!FacebookTwitterこの記事を読んだ人は、こちらの記事も読んでいます。建設資材のコスト予測。