カテゴリから探す
Geekly
コラム
技術・
テクノロジー
職種・
ポジション
Web・
ゲーム
転職準備
転職活動
  1. HOME
  2. Geekly Media
  3. 技術・テクノロジー
  4. LuaとC言語との関係性を徹底解説!そもそもの内容からその特徴まで分かりやすく解説します。
  • 技術・テクノロジー

LuaとC言語との関係性を徹底解説!そもそもの内容からその特徴まで分かりやすく解説します。

プログラミング言語には様々な種類がありますがその中でもベーシックで利用頻度の高いC言語と融和性が高いと言われるのがLuaです。Luaとはどういう言語でどのような場面で利用されているのでしょうか?今回はプログラミング言語Luaについてその特徴からC言語と組み合わせ方、実際の使用例などを詳しく解説していきます。

Luaとは?

 

Luaはスクリプト言語の一種

 

 

Luaはプログラミング言語の中でもスクリプト言語と分類される言語の1です。スクリプト言語はコンパイラを必要としない言語で、有名なもので言えばJavascriptやPythonなどがあります。

スクリプト言語は用途が限定される場合が多いですが、Luaは特にC言語と組み合わせる事を前提としたスクリプト言語になっています。

元々Luaはポルトガル語で月を意味する言葉でブラジルの大学で設計開発されました。

 

Luaの特徴

 

組み込みしやすく拡張性が高い

 

 

Luaの特徴は他の言語と組み合わせて使う場合に非常に組み込みやすい事にあります。元々C言語への組み込みを前提に開発された言語であるだけにC言語以外と組み合わせても使いやすいのが特徴といえます。

同じスクリプト言語と比較しても非常にシンプルな構造であるが故に、プログラム自体を軽量にしやすいのも組み込みやすさを後押ししています。

またシンプルであるゆえに拡張性が高いのも1つの特徴といえます。Lua自体はオブジェクト指向型のプログラミング言語ではありませんが、擬似的に再現する事もしやすいです。

 

その幅広い拡張性からLuaはどのような場面でも活用しやすい言語だと言えます。詳しくは後述しますが、Luaは単独で使われるよりも「他のプログラムの一部」として使われる場合が多いです。

またLuaはフリーソフトとして配布されていて、商用利用であったも無償で利用出来るという点でも組み込みやすいと言われています。

他の言語では制約が強く、また媒体的に利用できないという言語も多い中、Luaはそういった制約が限りなく少ないという意味でも使いやすい言語です。

 

動作が早い

 

 

Lua最大の特徴とも言えるのが動作の早さです。こちらもシンプルさ故といえる部分で他のスクリプト言語の一つの指標としても利用される事があるほどに動作が早くなっています。

基本的にスクリプト言語は小規模な開発向きと言われていますがLuaはその動作の早さから大規模な開発でも使われるスクリプト言語になっています。

 

汎用性が高い

 

 

スクリプト言語は基本的に動作を軽くシンプルにする事を目指して製作された言語が多いですが、その代償として特定の場面においてしか利用できない限定性を持っている場合が多いです。

現在一番普及していると言われるスクリプト言語の1つであるJavascriptであってもWeb上でしか動作しないなど、スクリプト言語は場面を選ぶというのは最早当たり前になっているといえます。

しかしLuaは機能を最小限にする事で動作を軽くしている為、多くの場面で利用でき組み込む事が出来るのがメリットの1です。

 

C言語とLuaの関係性は?

 

C言語はコンパイラ言語

 

 

スクリプト言語であるLuaに対してC言語はスクリプト言語の対義語であるコンパイラ言語です。

コンパイラ言語は動作を確認しようとする度に「コンパイル」という言語を機械が理解出来るようにする動作に入る為、特に開発中の場面においては規模が大きくなればなるほどにその作業の時間が必要になります。

その分実際に動作させる場面ではスクリプト言語とは比較にならないほどに高速で動作するのが良さでもあり、C言語は特に動作が早い事から現在でも利用頻度が高くなっています。

 

根幹部分をC言語で作ってLuaで拡張させる

 

 

LuaとC言語のそれぞれの特徴を生かしてプログラムの根幹部分をC言語で開発した上でLuaを使って機能を拡張させていくという使い方がC言語とLuaの1つの関係性と言えます。

その比率は開発する物によって異なりますが、近年ではスクリプト言語が多様される傾向が強い事からC言語を土台にLuaをメインに開発するという場合も増えています。

 

LuaはC言語と相性の良いスクリプト言語

 

 

プログラミング言語は基本的に融和性が高くない場合が多いです。特にスクリプト言語はシンプルな構造である故に使用できる場面が限定されるという側面ももっています。

それはそれぞれのプログラミング言語が基本的にその言語単独で動作させる事を前提としている為です。

しかしC言語とLuaに関してはかなり親和性が高いと言えます。元々LuaはC言語に組み込む事を前提としているのがその最大の理由です。

 

Luaはその根幹的な構造をC言語に合わせて設計されているのでプログラミングの動作の流れが不自然にならないというのも大きなポイントといえます。

もちろんLuaも単独で動作させる事が出来ないわけではありませんし、Luaは他の言語と組み合わせても使いやすい言語です。

 

本来コンパイラ言語であるC言語はどんな環境でも使いやすい言語ですが組み合わせるスクリプト言語によっては一気に使用できる場面が限られてしまいます。

しかしLuaであれば場所を選ばない汎用性の高さも持ち合わせているので複数のプラットフォームに対応したい場合などにも頻繁に利用されています。

 

Luaが利用される事が多い場面

 

ゲーム開発

 

 

近年Luaが使用される場面として増えているのがゲーム開発の現場です。

最近のゲームでは全て開発してから発売という形ではなく、発売後もアップデートを重ねていくような物が主流となっているので組み込みのしやすさと動作の早さというLuaの特徴が生かされる場面となっています。

 

Luaは動作環境を選ばないスクリプト言語なのでゲームという複数の媒体で動かす事が多い場合も動かしやすいという点も後押ししていると言えます。

家庭用ゲーム機であれば追加シナリオの配布やDLCなどのシステムはまさにLuaが得意とする拡張性の部分なので頻繁に利用されます。

 

また特に利用される場面が多いのがデータの更新が多いMMORPGを始めとしたオンラインゲームです。

他のゲームに比べて機能の追加や変更などが多いオンラインゲームにはLuaをメイン言語として使用している事を公言しているゲームも多くなっています。

 

プラグイン開発

 

 

ゲーム開発の現場と同じく拡張性の高さと組み込みのしやすさから利用される場面が多いのが、プラグイン開発です。

そのソフトウェアが本来持たない機能を追加するプラグインの機能を搭載したソフトウェアは最近増えており、そのプログラムとしてLuaを利用している場合があるのです。

使用されている場面は多岐に渡りますがいずれもLuaのシンプルさと組み込みやすさから公式だけでなく多数のユーザーがお互いのプラグインを公開して配布するような使われ方をしています。

 

Luaを使って作られているシステム例

 

Wikipedia

 

 

インターネット百科事典として最大の規模を誇るWikipediaですがここでもLuaが利用されています。利用されているのは日本語Wikipediaのテンプレート機能に限定されています。

あくまでも組み込むことができるという形であって根幹のシステムがLuaで作られているわけではありませんが組込で多様されるLuaらしい使われ方をしている例といえます。

 

AviUtl

 

 

同じく組み込み、拡張という意味合いで使われているのが個人制作ながらフリーの動画編集ソフトとして高い拡張性を有し、人気の高いAviUtlです。

AviUtlの1つのウリである拡張性の高さはLuaを使う事で確保されています。ユーザーによって多数のプラグインが作られているAviUtlですがそのプラグインは全てLuaを使って動作させているのです。

特にAviUtlでは自作したエフェクトを配布する事も頻繁に行われており、この配布もプラグインとして扱われるのでLuaが使われています。

 

Adobe Photoshop Lightroom

 

 

Aoobe社が提供する写真加工に特化した画像編集ソフトであるAdobe Photoshop Ligitroomでもプラグインを作る事ができ、このプラグインはLuaを使って製作されます。

またその動作の早さ故か、Adobe Photoshop Ligitroomでは本体の実に40%のプログラムがLuaで書かれている事も公表されています。

 

まとめ

 

 

Luaはその組み込みやすさと動作の早さ、様々な環境に柔軟に対応出来る事から注目を集める機会の多いプログラミング言語です。

特に元々の目的であったC言語との相性が抜群に良く、インターネットやIoTなどの普及もあって様々なプログラムを発売後にアップデートするような機会も増えている事から利用される機会の多い言語といえます。

習得していると使いやすい場面の多い言語なので、今後プログラミングを勉強するならぜひ1度候補の1つに加えてみてはいかがでしょうか?

Lotus0

Geekly Media
ライター

この記事が気に入ったら
シェアしよう!

  • twitter
  • facebook
0

関連記事

求人数×IT業界での紹介実績数で、納得の転職をサポート。IT業界専門だからこそできる提案力を実感してみてください。