本文へスキップ
totonoe.tech

プログラミング言語を整える

中級

Lua を整える

= 1始まりの添字と多値返却——Lua 5.4 をブラウザ内で動かして覚える練習場

サンプルコード(クリックでエディタに挿入)

LUA EDITOR Lua 5.4 (wasmoon WASM)

OUTPUT

Lua コードを書いて「実行」を押すと、ここに print 出力が出ます。

使い方

6 ステップで Lua の骨格をつかむ。

  1. 1

    Hello World — print で出力する

    print("Hello") が Lua の一番の基本。

  2. 2

    変数と型 — local で宣言する

    local を付けないとグローバル変数になってしまう点に注意。型は number / string / boolean / nil の動的型。

  3. 3

    テーブル — 配列も辞書もこれ1つ

    Lua には配列型・辞書型が別々にはない。{ } で作るテーブルが両方を兼ねる。添字は1始まり

  4. 4

    for / while — 繰り返し

    数値 for・ipairs による配列走査・while の3種類。

  5. 5

    関数 — 複数の値を同時に返せる

    function で定義。return a, b のように多値返却ができるのが特徴。

  6. 6

    メタテーブル — クラス風の設計図

    Lua に class 構文は無い。__index を使ったメタテーブルでオブジェクト指向っぽく組む。

💡 io / os はこの練習場では使えません(ファイル・OS 操作は送信ゼロの原則から外れるため)。 無限ループを書いても既定 3 秒で自動的に停止します。 書いたコードと実行結果は、どこにも送信されません(すべてブラウザ内で実行)。

🌐 ただし1点だけ補足します。このページを開いただけでは外部通信は発生しませんが、 「実行」を押した最初の1回だけ、Lua の実行環境(wasmoon 1.16.0・Lua 5.4)を配信元の cdn.jsdelivr.net から取得します(約0.3MB)。 これはプログラムを受け取るだけの通信で、あなたが書いたコードや実行結果が送られることはありません。 ただし通信である以上、配信元にはお使いの回線の IP アドレスが見えます。 「入力は端末から出さない」という当サイトの原則に関わる点なので、隠さずに書いておきます。

このツールについて

Lua はテーブル1つで配列も辞書も表す、軽量で組み込みやすい言語。ブラウザ内で Lua が動くので、書いて → 実行 → print 出力と戻り値を安全に何度でも試せます。

ブラウザ内 Lua 5.4(wasmoon)Hello World → 変数 → テーブル → 繰り返し → 関数 → メタテーブル を試せる Playground。1始まりの添字・多値返却など Lua らしい癖も体験できます。

主な機能

  • 7サンプル(テーブル・多値返却・メタテーブルのクラス風表現を含む)
  • Web Worker 実行で無限ループは3秒で自動停止
  • 戻り値(最後の return)と print 出力を分けて表示
  • CodeMirror 6 シンタックスハイライト・Ctrl/⌘+Enter で実行
  • 処理系は cdn.jsdelivr.net から初回のみ約0.3MB・以降はキャッシュ
  • io・os は使えない練習用環境・送信ゼロ

よくある質問

Q. Lua のコードはどこで実行されますか?外部に送信されますか?

A. すべてブラウザ内で Lua 5.4(wasmoon・WASM)が実行します。書いたコードも実行結果もどこにも送信されません。最初の1回だけ、実行環境(約0.3MB)を cdn.jsdelivr.net から取得します。

Q. 無限ループを書いたらどうなりますか?

A. Web Worker の中で実行しているため、3秒を超えると自動的に停止し、画面が固まることはありません。次の実行では実行環境を作り直します。

Q. local を付け忘れるとどうなりますか?

A. Lua では既定でグローバル変数になります。サンプル「変数と型」のとおり、local を付けるのが基本です。

Q. 配列の添字が思った値と違うのですが?

A. Lua のテーブル(配列)は 0 ではなく 1 始まりです。「Lua らしい1本」のサンプルで確認できます。

Q. io.open や os.execute は使えますか?

A. 使えません。ファイル操作や OS 操作は、この練習場では呼び出さない運用です(送信ゼロの原則)。

入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

続けて整える

KOINOBORI ECOSYSTEM

私たちが運営するサイト