{}const=>[]async()letfn</>var
Lua開発

Luaの最初のコード:プログラミングを始めたいが、気が狂いたくない人のためのガイド

Luaをゼロから理解する。インストールからミニゲームまで10分で。退屈な理論はなく、コード例と楽しいプレゼンテーションがあります。Luaがプログラミングを始めるのに最もフレンドリーな言語の1つである理由、それが使用されている場所、そして最初のプロジェクトを書く方法を学びましょう。

К

Kodik

著者

3分で読める

Luaを開いて、「ちょっと待って、中括弧はどこ?」と思った時のことを覚えていますか?

ノートパソコンを閉じて、村で牛の放牧に行きたくなる言語があります。そして、Luaという言語は、古い友人と会ったかのような感覚を覚えます。余計な儀式もなく、五階建ての構造もなく、偶然に誰かの量子物理学の論文を開いたような感覚もありません。

ワールド・オブ・ウォークラフト、ロブロックス、またはGarry's ModのMODをプレイしたことがある場合、おめでとうございます。あなたはすでに間接的にLuaを使用しています。この言語は、依存関係の宇宙ステーションを展開することなく、何かを素早くスクリプト化する必要がある文字通りどこにでもあります。

ステップ0:インストール(スポイラー:簡単です)

Luaは、インストールが最も簡単な言語の1つです。ギガバイトのSDKも、「Javaのバージョンを847.3に更新してください」というメッセージもありません。

Linux/macOSの場合:

# Ubuntu/Debian
sudo apt install lua5.4

# macOS(Homebrew経由)
brew install lua

Windowsの場合:

LuaBinariesをダウンロード 公式サイト またはscoopを介して配置します。

scoop install lua

すべてが機能していることを確認します。

lua -v

Lua 5.4.7のようなものが応答として到着した場合、あなたはビジネスにいます。そうでない場合は、PATHを確認してください。

🔥 10万人以上の学生が参加中

理論を読むのに疲れた?
コーディングの時間だ!

Kodik — 実践でプログラミングを学ぶアプリ。AIメンター、インタラクティブなレッスン、実際のプロジェクト。

🤖 AI 24時間
🎓 修了証
💰 無料
🚀 始める
今日参加

ステップ1:こんにちは、世界! (イニシエーションの儀式)

ファイル hello.lua を作成して、次のように記述します。

print("Hello, World!")

開始:

lua hello.lua

すべて。一つ。たった一つの呼び出し。public static void mainなし、importなし、#include <iostream>なし。Luaはあなたの時間を尊重します。

比較のために、Javaでも同じことができます。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Luaはこれを次のように見ています。

「兄弟、なぜそんなに文字が多いのですか?print()して、先に進みましょう。」

ステップ2:変数は単に書くだけです

Lua では、変数の型を宣言する必要はありません。intstringfloatはありません。Luaは自分で理解します。

name = "Alexey"
age = 25
is_developer = true

print(name)          -- Алексей
print(type(age))     -- number
print(type(name))    -- string

ローカル変数は local を介して宣言され、これは良いトーンと見なされます。

local score = 100
local player = "Hero"

なぜ localなのか?なぜなら、これがなければ変数はグローバルになり、大きなプロジェクトのグローバル変数は、アパートの鍵をドアマットの下に置いておくようなものだからです。便利なように思えますが、後で驚かれることになるでしょう。

ステップ3:条件—if、elseif、else、end

local hp = 30

if hp > 50 then
    print("Everything is fine, we continue to fight")
elseif hp > 0 then
    print("Be careful, HP is running out!")
else
    print("Game Over. Respawn in 5 seconds")
end

注意:{}の代わりに、thenendを使用します。最初は慣れないかもしれませんが、読みやすくなることがわかります。Luaは文字ではなく単語が好きです。

もう一つのポイントは、Luaには!=がないことです。代わりに、~=が使用されます。

if name ~= "Admin" then
    print("Access denied")
end

うん、チルダ。ただ受け入れて。

ステップ4:サイクル — 回転、回転

while:

local i = 1
while i <= 5 do
    print("Iteration: " .. i)
    i = i + 1
end

ちなみに、..はLuaの文字列の連結です。+でもconcat()でもなく、単なるコロンです。

for:

for i = 1, 5 do
    print("Step " .. i)
end
CODE_BLOCK_12__

for-in (テーブルのバイパス用):

local fruits = {"apple", "banana", "mango"}

for index, fruit in ipairs(fruits) do
    print(index .. ". " .. fruit)
end

ステップ5:機能—コマンドを書く

local function greet(name)
    return "Hi, " .. name .. "! Welcome to Lua"
end

print(greet("Maria"))

Luaの関数はファーストクラスの市民です。これらは変数に格納したり、引数として渡したり、他の関数から返したりできます。一般的に、ここでは機能的プログラミングは言葉ではありません。

local function apply(func, value)
    return func(value)
end

local function double(x)
    return x * 2
end

print(apply(double, 21))  -- 42

42はすべての答えです。偶然?そうは思いません。

ステップ6:テーブル—Luaの心臓部

ここからがマジックの始まりです。Luaには配列も、オブジェクトも、辞書もありません。しかし、 — すべてを置き換える汎用データ構造:

-- Как массив
local colors = {"Red", "Green", "Blue"}
print(colors[1])  -- красный (индексация с 1!)

-- Как словарь
local player = {
    name = "Warrior",
    hp = 100,
    level = 5
}
print(player.name)   -- Warrior
print(player["hp"])  -- 100

-- Как объект с методами
function player:takeDamage(damage)
    self.hp = self.hp - damage
    print(self.name .. " received " .. damage .. " damage. HP: " .. self.hp)
end

player:takeDamage(25)  -- Warrior получил 25 урона. HP: 75

重要なポイント: Luaでのインデックスは0ではなく1から始まります。 はい、これはJavaScriptやPythonに慣れている場合に実存的な危機を引き起こすものです。しかし、あなたは慣れるでしょう。

ステップ7:ミニプロジェクト—テキストクエスト

すべてをまとめる時が来ました。これはちょっとしたテキストゲームです。

local function game()
    print("=============================")
    print("  CODE DUNGEON")
    print("=============================")
    print("")
    print("You are standing in front of the entrance to a dark cave.")
    print("A strange noise is heard inside...")
    print("")
    print("What are you doing?")
    print("1 - Enter the cave")
    print("2 - You go home to drink tea")
    print("")

    io.write("Your choice: ")
    local choice = io.read()

    if choice == "1" then
        print("")
        print("You enter and find... an ancient laptop!")
        print("A file with Lua code is open on the screen.")
        print("You start reading... and you become a programmer!")
        print("")
        print("🏆 VICTORY! +100 to programming skill")
    elseif choice == "2" then
        print("")
        print("A wise choice. Tea is also important.")
        print("But the cave will be waiting for you...")
        print("")
        print("☕ END. But you can always come back!")
    else
        print("")
        print("Unknown command. The cave is confused.")
        print("Try again!")
    end
end

game()

これを quest.lua に保存し、lua quest.lua を起動してください。おめでとうございます。Lua で最初のゲームを書きました。

次は何ですか?

Luaは、ゲーム開発(Love2D、Defold、Roblox)、組み込み開発、既存アプリケーションのプラグインやスクリプトの作成への扉を開く言語です。Luaは、軽くて速く、驚くほど強力です。

ここでは、いくつかの方向性をご紹介します。

  • Roblox Studio — ゲームを作って収入を得たい場合

  • Love2D — インディーゲーム向けのミニマリストな2Dエンジン

  • Neovim — Lua で書かれた構成とプラグイン

  • OpenResty/Nginx — 高負荷のWebサーバー用Lua

  • Embedded/IoT — Luaはマイクロコントローラー(NodeMCU、ESP8266)で動作します

このフォーマットが気に入って、さらに進めたい場合は、 コディック. このアプリケーションでは、PythonやJavaScriptからHTML、CSSなどの技術まで、プログラミングをゼロから学ぶことができます。200ページもの単純な理論ではなく、練習を伴うわかりやすいレッスンだけで、何を書いたのか、なぜ書いたのかを実際に理解できます。

コディック スケジュールや長いコースに縛られることなく、自分のペースで、スマートフォンやパソコンで学習したい人のために特別に作成されています。

また、当社には テレグラムチャンネル 2000人以上の開発者からなるコミュニティで、プログラミングに関する役立つ投稿、タスクの分析、開発の世界のニュースが定期的に公開されています。コーヒーを待つ間でも、素材を繰り返し、トピックに沿った状態を維持するのに最適な方法です。

合計

Luaは、プログラミング言語があなたを脅かそうとしないまれなケースです。それはミニマリストで論理的であり、知り合った最初の数分から実際に作業コードを書くことができます。何か新しいことを試したいと長い間考えていたり、プログラミングへの簡単な入り口を探しているなら、Luaは素晴らしい選択肢です。

🎯先延ばしをやめよう

記事は気に入った?
実践の時間だ!

Kodikでは読むだけでなく、すぐにコードを書く。理論 + 実践 = 本当のスキル。

即座に実践
🧠AIがコードを説明
🏆修了証

登録不要 • カード不要