
この記事はだれ向け?
小学高学年から、はじめてRoblox StudioでLua(ルア)を触る子どもと、その保護者の方向けです。
むずかしい漢字にはふりがなをつけました。英語の名前(Explorerなど)は、そのまま画面に出てくる言葉なので残しています。
導入。Scratchの次に、なぜロブロックス(Roblox)でLuaなのか
「Scratchは楽しかった。でも、もっとちゃんとしたコードに挑戦(ちょうせん)したい」
「ロブロックス(Roblox)で作りたいけれど、いきなりむずかしそうで不安」
沖縄の保護者面談でも、この相談は本当に多いです。
結論から言うと、ロブロックス(Roblox)の開発環境(かいはつかんきょう:ゲームを作るためのソフトまわり)であるRoblox StudioでLuaを学ぶのは、子どもが「本物のつくり方」に触れるうえで、とてもバランスの良いルートです。
理由はシンプルで、世界中の作り手が同じ言語(げんご:プログラムの書き方のルール)と、同じ道具の世界(エコシステム:みんなが同じ土俵で作っているイメージ)を使っているからです。
「練習だけの言語」ではなく、お仕事の現場でも使われる書き方や考え方を、そのまま練習できます。
この記事は、ロブロックスプログラミング入門として、Roblox Studio学習の最初の地図になることを目指しました。
ロブロックスプログラミング教室沖縄を検討している方や、家庭で学習を始める方の両方に読んでいただける構成です。
参照(公式):
Roblox Creator Hub
Roblox Studioの入手
Roblox StudioでLuaを学ぶ意義。本物の言語に触れるとはどういうことか
Lua(ルア)は、ロブロックス(Roblox)の中でゲームの挙動(きょどう:動き方や反応)をコントロールするために使われるプログラミング言語(げんご)です。
Scratchのようにブロックで考え方を学んだあと、文字で書くテキスト言語へ進むときに、次の良さが大きくなります。
- 処理(しょり:やることの手順)を正確(せいかく)に書く習慣がつく(コンピューターは「だいたい」というあいまいな言い方をゆるしません)
- エラー(えらー:間違いのお知らせ。画面の英語メッセージ)を読んで、直す練習がたまる(プログラミングでは、ここがいちばんの練習場です)
- 作ったものが、すぐに遊べる形で動く(結果が早く返ってくるのでうれしい)
私は1993年から開発(かいはつ:作る仕事)の現場にいますが、学習効率(がくしゅうこうりつ:早く上達する度合い)が高い環境の条件はいつも同じです。
試す回数が多く、結果が早く返り、失敗してもだいじょうぶなこと。
Roblox Studioは、その条件を満(み)たしやすい環境のひとつです。
ScratchからLuaへ。乗り越えやすい「壁」と対策
多くの子どもがつまずくポイントは、次の3つに集まります。
- スペル(つづり)と記号の厳密さ(げんみつさ:ちょっとした違いでもダメ、ということ)
- エラーメッセージの読み方
- 「どこにコードを書くか」という環境理解(かんきょうりかい:Studioの画面のルール)
対策はむずかしくありません。
最初の1週間は、完成を追わず、printで動作確認(どうさかくにん:ちゃんと動いたか確かめること)を繰り返す。
次に、1つのパーツにだけ小さな挙動(きょどう)を足す。
この順番を守ると、ロブロックスLua沖縄の現場でも成功率が上がります。
最初の一歩。Hello World(出力ウィンドウへの表示)
Roblox Studioを開き、好きな場所にScript(スクリプト:命令を書くメモ)を入れます。
はじめは、Workspace(ワークスペース:ゲームの世界そのものの入れ物)のすぐ下にScriptを置く方法がわかりやすいです。
- ExplorerでWorkspaceを右クリック
- Insert Object → Script
Scriptの中身を次の1行に置き換え、再生ボタン(Play)を押します。
print("Hello World")
ViewタブからOutput(アウトプット:結果が出る窓)を開くと、Hello Worldが表示されます。
ここが最初の成功体験です。
ロブロックスプログラミング入門でいちばん大事なのは、この「確かめられる成功」を早く作ることです。
基礎知識。Luaの基本ルール(Robloxでそのまま使う)
大文字・小文字は区別(くべつ)される
英語の大文字と小文字は、ちがう文字として見られます。score と Score は別の名前です。
タイプミス(打ち間違い)はエラーになりやすいので、最初は短くて統一した名前にすると安心です。
コメント(コメント:メモ。コンピューターは読みません)
行の先頭に -- を付けると、その行はプログラムから無視されます。
-- これはコメントです。説明メモに使います。
print("実行される")
複数行は次の形でも書けます。
--[[
複数行コメント
メモやメモ書きに便利
]]
まとめて書くときの区切り
Luaでは、処理のかたまりの末尾に end が必要な文法(ぶんぽう:書き方のルール)が多いです。
if、for、while、functionはすべて end で閉じます。
「endが足りない」は初心者あるあるなので、インデント(いんでんと:字下げ。そろえると見やすい)を揃える習慣をつけるとよいです。
論理1。順次処理(じゅんじしょり:上から下へ順番に実行)
プログラムは基本、上から順に実行されます。
print("1番目")
print("2番目")
print("3番目")
ゲームでも同じで、「準備→表示→待機(たいき:待つこと)→判定(はんてい:勝ち負けなどを決めること)」のように、順番が意味を持ちます。
順次処理が読めるようになると、あとから入る条件分岐やループ(くりかえし)が一気に理解しやすくなります。
論理2。変数(へんすう:データに名前をつける)
変数は、値を入れる「名札つきの箱」です。
Robloxでは local(ローカル:このスクリプトの中だけ、という意味)を付ける書き方が一般的です。
local playerName = "たろう"
local score = 100
print(playerName)
print(score)
文字列(もじ:文字の列)と数値(すうち:数字)は別物です。
足し算のように文字をつなぎたいときは .. を使います。
local message = "スコアは " .. score .. " です"
print(message)
論理3。条件分岐(じょうけんぶんき:if / then)
「もし〜なら」をプログラムに書くと、ゲームに変化が生まれます。
local hp = 10
if hp > 0 then
print("まだ戦える")
else
print("リトライしよう")
end
複数条件は elseif(えるしーいーえふ:「それとも、もし〜なら」)を使います。
local stage = 2
if stage == 1 then
print("ステージ1")
elseif stage == 2 then
print("ステージ2")
else
print("その他")
end
論理4。繰り返し(くりかえし:for)
同じ処理を何度も書かず、回数を指定して任せます。
for i = 1, 5 do
print("回数 " .. i)
end
論理4補足。繰り返し(くりかえし:while)
条件が真(しん:ここでは「はい、そうです」)のあいだ続けます。無限ループ(むげんループ:止まらない繰り返し)に注意し、条件が必ず変わるようにします。
local n = 3
while n > 0 do
print(n)
n = n - 1
end
論理5。関数(かんすう:function)。処理をまとめて使い回す
関数は、お仕事の現場でもいちばん効く道具です。
「名前をつけて、必要なときに呼び出す」ことで、コードが読みやすくなり、バグ(ばぐ:想定外の不具合)も減ります。
local function greet(name)
print("こんにちは、" .. name)
end
greet("沖縄")
greet("宜野湾")
戻り値(もどりち:計算結果などを返す値)を使う例です。
local function add(a, b)
return a + b
end
local total = add(3, 5)
print(total)
実践。パーツの色を変える(WorkspaceのPart + Script)
WorkspaceにPart(パーツ:ブロックのような形)を置き、そのPartの中にScriptを入れます。
次のコードは、2秒待ってから色を変えます。
local part = script.Parent
task.wait(2)
part.Color = Color3.fromRGB(0, 255, 0)
script.Parent(すくりぷと・ぱれんと)は、そのScriptが入っているオブジェクト(おぶじぇくと:パーツなどのもの)を指します。
Roblox Studio学習の現場では、まずこの親子関係(おやこかんけい:どれが入れ物で、どれが中身か)を体で覚えると伸びが変わります。
実践。触れたら反応する(Touchedイベント)
次は、他のパーツが触れたときに反応する例です。
はじめは爆発より、printで確認するのが安全です。
local part = script.Parent
part.Touched:Connect(function(other)
print("触れた相手: " .. other.Name)
end)
慣れてきたら、見た目の変化や効果音、テレポート(場所をワープ)などに広げられます。
大事なのは、イベント(いべんと:できごと)と処理(やること)を分けて考える癖です。
公開。自分のゲームを世界へ(アップロードの考え方)
公開は、Robloxのアカウントと権限(けんげん:できることの範囲)、体験(Experience:ロブロックスでいう作品の単位)の設定が関係します。
細かい手順は公式ドキュメント(どきゅめんと:説明書)が正しい情報の元になりますが、考え方はシンプルです。
- 何を公開しているか(対象年齢、チャット、課金の有無)を先に決める
- テストプレイで壊れないか確認する
- 公開後も更新できる前提で、「あとから直せる」と考える(お仕事ではバージョン管理と呼ぶこともあります)
家庭学習でも、保護者の方と「公開範囲」と「個人情報」を最初にルール化しておくと安全です。
Roblox Studioの画面を味方にする(初心者が迷わないコツ)
はじめのうちは、次の3つだけ覚えておけば十分です。
- Explorer:世界の中身(パーツ、ライト、スクリプト)がツリー(枝分かれ)で見える
- Properties(プロパティ:せってい画面):選んだオブジェクトの設定(色、大きさ、名前)を変えられる
- Output:printの結果とエラーが表示される
迷ったら、いったん再生を止めて、名前が重複(ちょうふく:同じ名前が2つなど)していないか、Scriptが意図した場所に付いているかを確認します。
ロブロックスプログラミング入門の段階でいちばん多いミスは、「コードは合っているのに、付け先が違う」です。
LuaとLuau。Robloxで書いているのは「Luaに近い言語」である
Robloxで使われるのは、LuaをベースにしたLuau(るあう)です。
入門の段階では「Luaの基本」と考えて大丈夫ですが、細かいルールは公式が更新します。
迷ったら、Creator Hubのドキュメントを正しい情報の元にしてください。
参照:
Luau(言語の背景を知る用。実際の書き方の正本はRoblox側ドキュメントと合わせて読むのが安全です)
ScriptとLocalScript。最初は「どこに書くか」だけ押さえる
ざっくり言うと、次のイメージです。
- Script:サーバー側(さーばーがわ:ゲーム全体のルールを守る側)で動くことが多い
- LocalScript(ろーかるすくりぷと):プレイヤー本人の画面や入力に近い処理向き(置き場所にルールがある)
入門では、WorkspaceのPartにScriptを入れて挙動を確かめる進め方が事故りにくいです。
LocalScriptは、配置を誤ると「動かない」ことが多いので、基礎が固まってからで構いません。
オブジェクトを名前で探す(FindFirstChild / WaitForChild)
パーツ名が分かっているとき、コードから取り出せます。
FindFirstChild(ふぁいんどふぁーすとちゃいるど)は「最初に見つかった子どもを返す」という意味です。
local part = workspace:FindFirstChild("MyBlock")
if part then
print("見つかった: " .. part.Name)
else
print("名前が一致するパーツがありません")
end
存在するまで待ちたいときは WaitForChild(うぇいとふぉーちゃいるど)です。
ずっと待ち続ける可能性があるので、入門ではまず FindFirstChild で十分なことが多いです。
local folder = workspace:WaitForChild("MyFolder", 5)
if folder then
print("5秒以内に見つかった")
end
テーブル(table:てーぶる)。複数のデータをまとめる
テーブルは、いくつものデータを1か所にまとめる入れ物です。
ここでは配列(はいれつ:1番、2番…と並ぶ並び)のように使う例です。
local items = {"剣", "盾", "回復薬"}
for index, name in ipairs(items) do
print(index, name)
end
テーブルが読めると、敵リストやステージ設定、インベントリ(もちものリスト)の設計にそのままつながります。
論理の組み合わせ(くみあわせ:and / or)
条件を組み合わせると、ゲームの判定が豊かになります。
and(あんど:両方OK)、or(おあ:どちらか一方OK)です。
local hp = 5
local hasShield = true
if hp > 0 and hasShield then
print("盾があるので耐える")
elseif hp > 0 then
print("まだ生きている")
else
print("リトライ")
end
Touchedが連発する問題と、デバウンス(連打防止)
Touched は物理接触で何度も呼ばれやすいです。
はじめから「1回だけ反応したい」なら、フラグ(ふらぐ:ON/OFFの目印)で抑えます。
デバウンス(でばうんす:連打を防ぐ仕組み)と覚えておくと便利です。
local part = script.Parent
local busy = false
part.Touched:Connect(function(other)
if busy then
return
end
busy = true
print("触れた: " .. other.Name)
task.wait(0.5)
busy = false
end)
現場では、判定の条件(プレイヤーのキャラクターかどうか等)も足します。
ロブロックスLua沖縄の教室でも、この型を先に覚えると伸びが安定します。
乱数でゲームに幅を出す(math.random)
乱数(らんすう:サイコロのように毎回ちがう数)を使うと、ゲームに「ゆれ」が出ます。
local dice = math.random(1, 6)
print("出目: " .. dice)
抽選、敵の出現、ドロップの演出などに使えます。
「毎回同じ」から「毎回ちがう」へ進むと、作品の厚みが変わります。
属性(ぞくせい:Attribute。プロパティ以外に、自分で名前をつけられる値)の超入門
パーツに独自の値を持たせたいとき、Attributeが便利です。
StudioのPropertiesにAttributeを追加し、次のように読めます。
local part = script.Parent
local power = part:GetAttribute("Power")
if type(power) == "number" then
print("Powerは " .. power)
end
設計(せっけい:最初に決める考え方)の段階で「データをどこに置くか」を考える癖が、あとで大きな作品を作るときに効いてきます。
比較とnil。バグの芽を早めに摘む
nil(にる:からっぽ、まだない、という意味)と比較は、入門でも早めに覚えると強いです。
次の2つは、入門の段階で押さえると効果が大きいです。
- 等しいかどうかは
=ではなく==です(=は代入=値を入れる記号) - 変数がnilのままプロパティを触ると、すぐエラーになります
local x = 10
if x == 10 then
print("一致")
end
local maybe = workspace:FindFirstChild("存在しない名前")
if maybe == nil then
print("まだない")
end
not(のっ:否定=「ではない」)を使う書き方もよく出ます。
local part = workspace:FindFirstChild("Door")
if not part then
print("Doorが見つかりません")
return
end
命名とコメントの最低ルール(将来の自分への投資)
プログラムは、書いた直後がいちばんわかりやすいです。
1週間後の自分が読んでも迷わないように、次だけ守ると伸びます。
- 名前は意味がわかる英単語か、ローマ字でも一貫(いっかん:ルールをそろえること)させる
- マジックナンバー(まじっくなんばー:意味のない数字の直書き)を減らし、変数にする
- 「なぜそうしたか」だけ短くコメントに残す
教室では、提出前に「名前の見直し」を必ず挟みます。
見た目ほど地味ですが、ここができる子は伸びが速いです。
よくあるエラーと、最初に見る場所
初心者に多いパターンです。
- expected near:カンマや括弧、
endの不足など、記号ミスが多い - attempt to call a nil value:存在しない関数を呼んでいる(タイプミス、オブジェクトがnil=からっぽ)
- infinite yield possible:
WaitForChildなどで待ちすぎている(見つからない名前で待ち続けている可能性)
対処の基本は次の3つです。
- Outputのエラー行を読む
- その行の変数がnilになっていないか確認する
- 変更を小さくして、printで挟んで切り分ける(どこでおかしくなったか分ける)
私は30年やっていても、いまだにこの手順です。
スピードは経験で上がりますが、やり方の型は同じです。
保護者の方へ。安全面とアカウント運用の最低ライン
ロブロックス(Roblox)学習は、楽しさとセットで、ネットやお金の「使う力」(リテラシー:りてらしー)も一緒に育てるのが安全です。
- 課金やフレンド、チャットのルールは家庭で先に決める
- 公開や外部ツール連携は、保護者が内容を把握してからにする
- 「知らない人からの誘い」「個人情報」は教材としても必ず話す
教室に通う場合も、家庭のルールと矛盾しないように伴走します。
家庭学習の8週ロードマップ(目安)
週次の目安です。ペースは家庭で調整して大丈夫です。
1週目:printとOutputに慣れる。Scriptの付け方を固定する
2週目:変数、文字列結合、if
3週目:for、while、関数
4週目:Part操作(色、大きさ、透明度)
5週目:Touchedとデバウンス
6週目:FindFirstChildと整理(フォルダー分け)
7週目:テーブルと設定データの持ち方
8週目:小さなミニゲームにまとめる(勝敗条件、リセット)
完成度より、毎週「検証(けんしょう:ためして確かめる)できる一歩」を積むことを優先してください。
教室で学ぶ意味(ロブロックスプログラミング教室沖縄の文脈)
家庭学習が続く子も素晴らしいです。
一方で、教室には次の価値があります。
- エラーの切り分けを短時間で回せる
- 作り方の見直し(設計レビュー)で、あとで直すのが大変な手抜き(ここでは負債と呼ぶこともある)を減らせる
- 同年代の作品を見て、基準が上がる
沖縄マイクラ部では、ロブロックス(Roblox)のLuaを、遊びで終わらせないカリキュラムにしています。
詳しい教育観は、次の記事も参照ください。
「ただの遊び」を「一生モノの武器」に。30年のエンジニアが教えるロブロックスLua言語とDaVinci Resolveの教育的価値
次のステップ。入門のあとに伸びる学習テーマ
入門が固まったら、次は次のどれかに進むと伸びます。
- サーバーとクライアントの役割分担(サーバー:みんな共通のルール/クライアント:自分の画面側。チートや同期の話につながります)
- データ保存(DataStore:データをクラウドに保存する仕組み。むずかしいので大人と相談しながら)
- UI(ゆーあい:画面のボタンなど)と入力
- アニメーションと演出
- チーム開発(役割分担、命名規則)
すべて一度にやらなくて大丈夫です。
「小さく作って、小さく公開して、小さく直す」の繰り返しが、お仕事の現場そのものです。
まとめ。遊びを学びに変え、未来のエンジニアへ
ロブロックス(Roblox)でLuaを学ぶ価値は、単語を覚えることだけではありません。
「やりたいこと」を言葉にして、試して、直して、人に渡せる形にする力です。
この記事が、ロブロックスプログラミング教室沖縄を探す道しるべになり、家庭学習の最初の一歩にもなると嬉しいです。
わからないところは、エラーメッセージの一行からで構いません。そこを一緒に読み解くのが、私たちの仕事です。
沖縄マイクラ部では、このLuaプログラミングを基礎からプロレベルまで指導しています。
教室にお越しの前に(アクセス)
体験・見学にいらっしゃる前に、住所・地図・周辺の目安を確認しておくと安心です。宜野湾市伊佐の教室までの行き方は、次のページにまとめています。
コースの全体像は、あわせてこちらもご覧ください。
ロブロックス(Roblox)コース詳細
プログラミングスクール詳細
マインクラフト プログラミング教室 沖縄
今すぐ、LINEから無料体験を予約できます。「見学だけでもいいですか?」という問い合わせも大歓迎です。まずは一度、教室の雰囲気を体験しに来てください。
お越しの前後で場所や地図を確認したい方は、教室へのアクセスに住所と行き方の詳細があります。
すずきたかまさ(鈴木孝昌)プロフィール ― 沖縄マイクラ部・クロスウェーブ代表
沖縄マイクラ部プログラミングスクール「クロスウェーブ」 代表:鈴木孝昌 (Google/Meta本社招待・政府PM・日本ソフトウェア大賞・マイクラカップTBS賞) 沖縄県宜野湾市伊佐2-20-15伊佐ビル2F
マイクラ部への参加方法
マイクラ部への参加を希望される方はLINEアカウントへ登録を頂くか、メールにて「webcrafts098@gmail.com」までご連絡をお願いします。
沖縄マイクラ部プログラミングスクール「クロスウェーブ」では、マインクラフトカップへの参加を目指す仲間を募集しています。子供たちへのプログラミング教育として「Python」「Scratch」「MakeCode」「JavaScript」「Unity」「Godot」などを指導しています。動画編集講座(Premiere Pro・DaVinci Resolve・CapCut)やHTML/CSSでのWeb制作講座も開催中です。
マイクラカップ参加希望の方へ
マイクラカップへの参加を希望される方は、人数把握のため以下のフォームからも申請をお願いします。申込時はマインクラフト教育版のライセンス費用が発生いたします。
開催地域
沖縄県宜野湾市
沖縄マイクラ部プログラミングスクール「クロスウェーブ」にて開催しています。
沖縄県うるま市
FMうるまにて開催しています。
FMうるま
沖縄マイクラ部について
沖縄マイクラ部は教室ではなく、親子の勉強会というスタイルで運営しています。保護者の方も一緒に参加していただけますので、お気軽にご参加ください。
お問い合わせ
お問い合わせはLINEオフィシャルアカウント、またはメール(webcrafts098@gmail.com)からお気軽にどうぞ。イベント情報は「開催イベント一覧」からご確認ください。