ロブロックスのLuauは本当のプログラミング?|子どもが学べる基礎を確認

子どもがロブロックスでゲームを作り始めて、

「Luau(ルアウ)を書いている」

と言うようになった。

親からすると、

「ロブロックス専用のものなら、本当のプログラミングとは違うのでは?」

と思うかもしれません。

結論からいうと、Luauは実際のプログラミング言語です。

ロブロックスの中だけでプログラミングを疑似体験する教材ではなく、文字でコードを書き、コンピューターへ処理の指示を出します。

ただし、

「Luauを覚えれば、そのままPythonやJavaScriptも書ける」

という意味ではありません。

親が見るなら、言語名より、子どもがLuauを使ってどんな考え方を身につけているかを見る方が重要です。

Luauはロブロックスが使っている実際のプログラミング言語

ロブロックスでゲームの動きを作るときに使うのが「Luau(ルアウ)」です。

Lua(ルア)という既存のプログラミング言語を基に、Robloxが発展させました。

ロブロックスのゲームで、

床を踏んだら消える。

ボタンを押したらドアが開く。

敵がプレイヤーを追いかける。

アイテムを取ったら点数が増える。

一定時間が過ぎたらゲームを終了する。

といった仕組みを作るときにLuauを使います。

画面上のブロックを組み合わせるだけではなく、キーボードから文字でプログラムを書きます。

その意味で、「プログラミングのようなもの」ではなく、実際にコードを書くプログラミングです。

Robloxの外でも動かせる言語

LuauはRoblox Studioだけに組み込まれた秘密の命令集でもありません。

言語自体は公開されていて、パソコン上でLuauのコードを実行したり、間違いを分析したりするための道具も用意されています。

そのため、

「Robloxの画面上でしか存在しない子ども用言語」

という理解も正確ではありません。

ただし、実際の利用の中心がRobloxであることは変わりません。

子どもがLuauを学ぶときも、ほとんどの場合はRoblox Studioでゲームを作りながら使うことになります。

最初に学ぶ「変数」は他の言語にも出てくる

Luauの初心者教材で最初に出てくるものの一つが「変数」です。

難しく聞こえますが、簡単にいえば、数字や文字などに名前を付けて覚えておく場所です。

たとえばゲームなら、

プレイヤーの点数。

残り時間。

体力。

持っているコインの数。

などを覚えておくために使えます。

これはLuauだけの考え方ではありません。

Python、JavaScript、C#など、ほかの多くのプログラミング言語でも変数を使います。

書き方は違っても、

「値を保存して、後から使う」

という考え方は共通しています。

条件分岐では「もし○○なら」をプログラムにする

ゲームでは、いつも同じことが起こるわけではありません。

鍵を持っていたら扉を開ける。

体力が0になったらゲームオーバーにする。

点数が100を超えたら次のステージへ進む。

こうした、

「もし、この条件なら、これをする」

という処理を「条件分岐」といいます。

Luauでは「if」という命令などを使います。

これもLuau特有の考え方ではありません。

ほかの多くのプログラミング言語でも、条件によって実行する処理を変えます。

子どもが、

「鍵を持っているときだけ開けたい」

と考え、

その条件をコードへ落とし込んでいるなら、一般的なプログラミングの基礎を使っています。

繰り返しでは同じ処理を何度も書かない

ゲームでは、同じ動作を繰り返すこともあります。

ライトを点滅させる。

10回敵を出す。

制限時間を1秒ずつ減らす。

複数のアイテムを順番に調べる。

同じ命令を何十行も書くのではなく、「繰り返し」という仕組みを使います。

Luauには、回数を決めて繰り返したり、条件を満たしている間だけ繰り返したりする方法があります。

これもプログラミングでは基本的な考え方です。

PythonやJavaScript、C#などへ移っても、書き方を覚え直すだけで「繰り返す」という考え方自体は残ります。

関数では処理をひとまとめにする

ゲームが少し複雑になると、同じ処理を何度も使うようになります。

たとえば、

プレイヤーの体力を回復する。

敵を出す。

点数を追加する。

扉を開く。

という処理です。

そこで使うのが「関数」です。

関数とは、複数の処理をひとまとまりにして名前を付け、必要なときに呼び出せるようにする仕組みです。

これもLuauだけのものではありません。

ほかの多くの言語でも使います。

長いコードをただ書き続けるのではなく、

「この処理は一つにまとめられないか」

と考え始めたら、プログラムを整理して作る段階へ進んでいます。

配列や辞書では、多くのデータを整理する

ゲームが大きくなると、一つずつ別の変数に覚えさせるだけでは扱いにくくなります。

たとえば、

10種類のアイテム。

100人のプレイヤー。

複数のステージ。

キャラクターの名前と能力。

といったデータです。

Luauでは「テーブル」という仕組みを使い、順番のある一覧や、「名前と値」の組み合わせとしてデータを整理できます。

一般的なプログラミングでいう「配列」や「辞書」に近い使い方です。

ほかの言語へ移れば名前や書き方は変わります。

しかし、

「大量の情報を一つずつ別々に持つのではなく、まとまりとして扱う」

という考え方はそのまま使えます。

「何かが起きたら動く」仕組みも学べる

ゲームでは、

プレイヤーがボタンを押した。

床に触った。

ゲームへ参加した。

アイテムを取った。

といった出来事をきっかけに処理します。

こうした「何かが起きたらプログラムを動かす」という考え方もLuauで学べます。

ロブロックスではゲームの中で結果がすぐ見えるので、

「床に触れた」

↓

「プログラムが動く」

↓

「床が消えた」

というつながりを確認しやすいところがあります。

ただ文字を画面に表示する練習より、「自分が作ったゲームが動いた」という結果につながるため、ゲームが好きな子には入り口にしやすい面があります。

エラーを見つけて直すこともプログラミング

子どもがコードを書いていると、

「動かない」

ということが必ず起きます。

文字を間違えた。

名前を間違えた。

条件がおかしい。

処理する順番が違う。

原因はいろいろあります。

そこで、

どこから動かなくなったのか。

何を変えた直後からおかしくなったのか。

数字を表示して確認できないか。

一つずつ変えて試せないか。

と考えて直します。

この「不具合の原因を探して直す」こともプログラミングの重要な部分です。

正しいコードを暗記することだけがプログラミングではありません。

Luauには型を確認する仕組みもある

さらにLuauには、扱っているデータの種類を確認して間違いを見つけやすくする仕組みがあります。

たとえば、

これは数字。

これは文字。

これは「はい・いいえ」の二択。

といったデータの種類です。

初心者のうちは細かく意識しなくてもコードを書けます。

一方、より大きなプログラムを作るようになれば、「ここには数字が来るはずなのに文字が入っている」といった間違いを、プログラムを実行する前に見つけやすくできます。

つまりLuauには、初心者がゲームを作るだけでなく、コードが増えてきたときに整理・検査するための仕組みもあります。

「子ども向けだから単純なことしかできない言語」というわけではありません。

Roblox専用の部分も当然ある

ここまで読むと、

「ではLuauを覚えれば、ほかのプログラミングも全部できるの?」

と思うかもしれません。

そこは違います。

ロブロックスでゲームを作ると、

プレイヤーを取得する。

ゲーム内の部品を探す。

キャラクターを動かす。

画面にボタンを出す。

ゲームデータを保存する。

など、Robloxが用意した機能を呼び出すコードをたくさん使います。

これらはRobloxというゲーム制作環境の使い方です。

Pythonへ移っても同じ命令が存在するわけではありません。

ここは「プログラミング言語の基礎」と「Robloxの使い方」を分けて考えます。

別の言語へ行けば書き方は覚え直す

たとえばLuauでは条件分岐を書くときに「if」を使います。

C#でも「if」は使いますが、記号やコードの囲み方は違います。

Pythonも書き方が違います。

配列の最初の番号も、Luauでは1から始まりますが、多くの言語では0から始まります。

そのため、

「Luauを覚えればPythonを勉強しなくてもPythonが書ける」

とはなりません。

別の言語へ進むと、

文法。

使える命令。

開発するための道具。

を新たに覚える必要があります。

それでも、

変数とは何か。

条件分岐とは何か。

繰り返しとは何か。

関数をなぜ使うのか。

データをどうまとめるか。

という考え方を一度理解していると、すべてをゼロから覚えるわけではありません。

「Luauしか知らない」ことを心配するのはもっと後でいい

小学生の子どもがLuauを楽しんでいる段階で、

「将来はPythonの方が役に立つのでは?」

と急いで別言語へ移す必要はありません。

まだ、

変数。

条件分岐。

繰り返し。

関数。

といった基礎を使って、自分のゲームを作る段階なら、その経験を十分積む意味があります。

一つの言語で、

自分で考える。

コードを書く。

動かす。

失敗する。

直す。

完成させる。

ところまで経験する方が、複数の言語の最初の部分だけを次々触るより、その子には合う場合があります。

「Luauだから価値が低い」と言語名だけで判断しないことです。

反対に、コードをコピーするだけなら学びは浅くなる

Luauという本物のプログラミング言語を使っているからといって、何をしても深い学習になるわけではありません。

動画に表示されたコードをそのままコピーする。

生成されたコードを意味が分からないまま貼る。

エラーが出たら別の完成コードへ入れ替える。

これだけでもゲームを動かすことはできます。

しかし、これでは、

「なぜこの条件が必要なのか」

「この数字を変えるとどうなるのか」

「自分のゲームなら何を変える必要があるのか」

をあまり考えません。

親が見るなら、

「コードを書いているか」

だけではなく、

「そのコードを自分で変えられるか」

まで見ると違いが分かります。

AIにコードを書かせても「何を考えているか」で変わる

現在は、人工知能に、

「触ったら消える床のコードを書いて」

と頼めばコードを作れる時代です。

では、それではプログラミングを学べないのでしょうか。

ここも使い方次第です。

出てきたコードをそのまま貼るだけ。

動かなければまたAIへ丸投げする。

なら、本人が考える部分はかなり少なくなります。

一方、

この行は何をしているのか。

消えるまで3秒にするにはどこを変えるのか。

一度だけではなく何度も使えるようにするにはどうするのか。

を確認しながら使うなら、AIを説明役として使うこともできます。

これからは「全部自分で文字を入力したか」だけでは、学習しているか判断しにくくなります。

親は「このコード何?」と聞けなくてもいい

親自身がプログラミングを知らなくても問題ありません。

コードを見せられて、

「何を書いてあるか全然分からない」

という家庭の方が普通でしょう。

親が理解する必要があるのはLuauの文法ではありません。

たとえば、

「これを変えると何が起きるの?」

「なぜこのコードを書いたの?」

「一番困ったところはどこ?」

「どうやって直したの?」

と聞いてみます。

子どもが、

「ここは点数を覚えていて、ここで100以上か調べている」

と自分の言葉で話せるなら、ただ写しているだけとは違います。

学校のプログラミング教育とも共通する部分がある

文部科学省は、小学校のプログラミング教育を、特定の言語の文法を覚えるためだけのものとはしていません。

自分が実現したい動きを考える。

そのために必要な処理を分ける。

どの順番で組み合わせるか考える。

うまくいかなければ直す。

こうした考え方を重視しています。

Luauでゲームを作るときにも、

「ボタンを押したら橋を出したい」

という目的から、

ボタンが押されたことを調べる。

橋を表示する。

一度だけなのか何度でも使えるのか決める。

うまく動かなければ直す。

という順番を考えます。

その意味では、Luauを使ったゲーム制作にもプログラミング的思考を使う場面があります。

ただし、Robloxをしていれば学校のプログラミング教育をすべて代替できるという意味ではありません。

「本物か」を判断するより、子どもがどこまで使っているかを見る

Luauは実際のプログラミング言語です。

その点を心配する必要はありません。

しかし、子どもがLuauを使っていることと、プログラミングの基礎を十分理解していることも同じではありません。

親が見るなら、

教材のコードをそのまま動かしている。

数字や文字を自分で変えている。

条件を自分で追加している。

複数の処理を組み合わせている。

エラーの原因を自分で探している。

自分のアイデアをコードで実現している。

という変化を見ます。

ロブロックス独自の命令は、将来別の環境へ行けば使わなくなるかもしれません。

しかし、

条件を考える。

処理を分ける。

繰り返す。

データを整理する。

問題の原因を探す。

という経験まで身についていれば、Luau以外のプログラミングへ進むときにも完全なゼロからではありません。

「Luauは本当のプログラミングなのか」

への答えは、はいです。

その次に親が見るべきなのは、言語の名前ではなく、子どもがその本物のプログラミング言語を使って、自分で考え、試し、直すところまで進んでいるかです。

出典

Roblox Creator Hub|スクリプティング
LuauとLua 5.1の関係、変数・関数・条件文・繰り返し・配列などについて確認した公式資料。

Roblox Creator Hub|Luau
Luauのデータ型、データ構造、型チェック等について確認した公式資料。

Roblox Creator Hub|コーディングの基本
初心者がLuauで学べる基礎的なコンピューター科学の内容について確認した公式資料。

Roblox Creator Hub|LuauとC#の比較
ほかのプログラミング言語と共通する条件分岐、繰り返し、データ構造などについて確認した公式資料。

Luau|Why Luau?
LuaからLuauが開発された経緯と、言語としての設計について確認した公式資料。

Luau|An introduction to Luau
Roblox Studio以外でもLuauコードを実行・解析できる公式ツールについて確認した資料。

Luau|An introduction to Luau types
型推論・型チェックについて確認した公式資料。

文部科学省|小学校プログラミング教育の手引
学校におけるプログラミング教育の目的について確認した公的資料。

文部科学省|小学校算数におけるプログラミング教育
プログラミング的思考の意味について確認した公的資料。