「AIにスクリプトを書いてもらったけれど、何が書いてあるのか分からない」「少しだけ直したいのに、どこを直せばいいか分からない」
ロブロックス(Roblox)のスクリプトの読み方を、実際の画像付きで誰でも簡単に分かるように解説します。Robloxの公式のチュートリアルでは、変数・関数・if・ループ・テーブルなどを、たくさんの章に分けて教えています。この記事では、踏むと色がピカピカ光る床のコード1本に、よく出る6つの書き方をまとめて、1行ずつ読んでいきます。分からない行を、Studioのアシスタントに説明してもらう方法も紹介します。
中級ステップ24/28 前の記事:ロブロックス(Roblox)スタジオで一人称視点・カメラ固定・ダッシュを作る方法 全体の順番を見る
使うもの:Roblox Studioが起動するパソコン、マウス、キーボード。スクリプトの入れ方はスクリプトの作り方と同じです。
今回の完成状態:下の画像のように、分からない行をアシスタントに聞いて、日本語で説明してもらえれば、AIのコードを自分で読む準備ができています(赤い枠)。

よく出る6つの書き方
| 書き方 | 見た目 | ひとことで言うと |
|---|---|---|
| 変数 | local touchCount = 0 | あとで使う物や数に、名前を付けておく |
| テーブル | local COLORS = { ... } | いくつかの物を1つの名前にまとめた入れ物 |
| 関数 | local function flash(times) ... end | 何度も使う動きに名前を付けたもの |
| for | for i = 1, times do ... end | 決まった回数だけくり返す |
| if | if 条件 then ... end | 条件に合うときだけ、中を動かす |
| イベント | pad.Touched:Connect(function(hit) ... end) | 「触られた」などが起きたときに、中を動かす |
アソビシフトの入門・中級の記事に出てきたスクリプトは、ほとんどがこの6つの組み合わせでできています。この6つが読めると、AIが書いたコードのどこで何をしているかが分かるようになります。
1. 試すための床を置く
新しいBaseplateを開き、エクスプローラの「Workspace」にマウスを乗せて、右に出る「+」を押します(赤い枠)。

一覧の検索欄に「Part」と入れ、一覧の「Part」を押します(赤い枠)。

エクスプローラで「Part」を押して選び、F2キーを押して名前を「MagicPad」に変えます(赤い枠)。

プロパティの検索欄に「Size」と入力し、Sizeに「8, 1, 8」と入力します(赤い枠)。

プロパティの検索欄に「Position」と入力し、CFrameの中のPositionに「0, 0.5, -12」と入力します(赤い枠)。

プロパティの検索欄に「Anchored」と入力し、Anchoredにチェックを入れます(赤い枠)。

2. スクリプトを入れる
エクスプローラの「MagicPad」にマウスを乗せて、右に出る「+」を押します(赤い枠)。

一覧の検索欄に「Script」と入れ、一覧の「Script」を押します(赤い枠)。

MagicPadの中にScriptが入り、中身の画面が開きます。エクスプローラで「Script」を押して選び、F2キーを押して名前を「MagicPadScript」に変えます(赤い枠)。

開いているMagicPadScriptの画面で、中身を全部消して、次のコードを貼り付けます。-- で始まる行は「コメント」といって、スクリプトを読む人のためのメモです。動きには関係しません。
-- 変数:あとで使う物や数に、名前を付けておく
local pad = script.Parent
local touchCount = 0
local busy = false
-- テーブル:いくつかの色を、1つの名前にまとめておく
local COLORS = {
Color3.fromRGB(255, 80, 80),
Color3.fromRGB(80, 200, 255),
Color3.fromRGB(255, 220, 80),
}
-- 関数:何度も使う動きに、名前を付けておく
local function flash(times)
-- for:決まった回数だけくり返す
for i = 1, times do
pad.Color = COLORS[(i - 1) % #COLORS + 1]
task.wait(0.2)
end
end
-- イベント:「触られた」ときに、中の動きを始める
pad.Touched:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChildWhichIsA("Humanoid")
-- if:条件に合うときだけ、中を動かす
if humanoid and not busy then
busy = true
touchCount = touchCount + 1
print("ふまれた回数:" .. touchCount)
flash(3)
busy = false
end
end)

3. テストで動きを確かめる
3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。床まで歩いて乗ると、床が赤・水色・黄色の順に光り(画像の1)、出力に「ふまれた回数:1」と出ます(画像の2)。
右上の名前の欄はモザイクにしています。

一度降りて、もう一度乗ると、出力に「ふまれた回数:2」と出ます(赤い枠)。数が増えていくのは、変数にこれまでの回数が記録(保存)されているからです。

確かめたら、Shift + F5キーでテストを停止します。
4. 6つの書き方を1つずつ読む
変数:あとで使う物や数に、名前を付けておく
local pad = script.Parent
local touchCount = 0
local busy = false
local 名前 = 中身 で、中身に名前を付けます。pad にはスクリプトの親(MagicPad)、touchCount には数の0、busy には「はい・いいえ」のいいえ(false)が入ります。touchCount = touchCount + 1 のように、あとから中身を入れかえられます。
テーブル:まとめて入れておく
local COLORS = {
Color3.fromRGB(255, 80, 80),
...
}
{ } の中に、カンマで区切って物を並べます。並べた順に1番、2番、3番と番号が付き、COLORS[2] と書くと2番目の水色が取り出せます。#COLORS は、中に入っている数(ここでは3)です。
関数:動きに名前を付ける
local function flash(times)
...
end
local function 名前(受け取る物) から end までが1つの関数です。flash(3) と書くと、times に3が入って中が動きます。同じ動きを何度も書かずに済み、直すときも1か所で済みます。
for:決まった回数くり返す
for i = 1, times do
pad.Color = COLORS[(i - 1) % #COLORS + 1]
task.wait(0.2)
end
i が1から times まで1ずつ増えながら、中を何度も動かします。% は割り算の余りで、(i - 1) % #COLORS + 1 は「1、2、3、1、2、3……」と番号をくり返す決まった書き方です。task.wait(0.2) は0.2秒待つ命令で、これがないと色の変わり方が速すぎて見えません。
if:条件に合うときだけ
if humanoid and not busy then
...
end
then と end のあいだは、条件に合うときだけ動きます。ここでは「触った物にHumanoidがある(プレイヤーの体)」かつ「光っている最中ではない」ときだけです。and は「かつ」、not は「〜ではない」という意味です。
イベント:何かが起きたときに動く
pad.Touched:Connect(function(hit)
...
end)
Touched は「触られた」というイベントです。:Connect(function(hit) ... end) で、触られるたびに中の関数を動かします。hit には、触った部品(足など)が入ります。ほかにも、ボタンが押された(Activated)、体力が変わった(HealthChanged)など、ゲームの中の出来事に合わせて動かすときは、この形が出てきます。
5. 分からない行をアシスタントに聞く
スクリプトの画面で、分からない行をマウスで選びます(画像の1)。選んだ行の右に「アシスタントに聞く」と「コードを説明」が出るので、「コードを説明」を押します(画像の2)。

Studioの右側にアシスタントが開き、選んだコードの説明が返ってきます(赤い枠)。アソビシフト編集部が試したときは、最初の説明は英語でした。

英語で返ってきたときは、アシスタントの入力欄に次のように入れて送ります(赤い枠)。
今の説明を、日本語で、初めてスクリプトを読む人にも分かるように説明し直してください。コードは変えないでください。

日本語で、1行ずつの説明が返ってきます(赤い枠)。試したときは、% が「割った余り」を求める計算であることや、busy が途中で止まらないための印であることまで説明されました。

「コードは変えないでください」と書いておくと、説明だけを返してくれます。アシスタントは作品の中のスクリプトを書きかえることもできるので、説明を聞きたいだけのときは、このひとことを入れておくと安心です。
6. 赤い文字が出たときの読み方
AIのコードを直していると、1文字の打ちまちがいで動かなくなることがあります。ここでは試しに、上のタブの「MagicPadScript」を押してスクリプトの画面を開き、17行目の pad.Color を pad.Colr に書きかえてみます(「o」を1文字消します)。
書きかえたところ(画像の1)が、左の行番号の17(画像の2)の行にあります。

3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。床に乗ると、床の色は変わらず、出力に赤い文字が出ます。

| 出力の部分 | 読み方 |
|---|---|
Colr is not a valid member of Part "Workspace.MagicPad" | MagicPadに「Colr」という項目はありません、という意味(画像の1) |
Line 17 - function flash | まちがいは17行目、flash関数の中(画像の2) |
Line 30 | 17行目のflashを呼び出したのは30行目 |
スクリプトの画面の左の数字が行番号です。17行目を見ると、Colr の打ちまちがいが見つかります。Color に直せば元どおりに動きます。出力の読み方は、スクリプトが動かないときの確認手順でくわしく解説しています。
数字や中身を変えて試す
| 変えたいこと | 変える場所 | 例 |
|---|---|---|
| 光る回数 | 30行目の flash(3) | flash(6) |
| 色が変わる速さ | for の中の task.wait(0.2) | task.wait(0.1)(速くなる) |
| 色を増やす | テーブル COLORS | Color3.fromRGB(150, 255, 150), の1行を足す。#COLORS が4になり、for はそのまま動く |
| 出力の文 | print("ふまれた回数:" .. touchCount) | .. は文字をつなぐ記号 |
よくある質問
プログラミングを習わないと、AIのコードは読めない?
全部を読めなくても大丈夫です。この記事の6つが見分けられると、「ここが回数」「ここが色」のように、直したい数字の場所が分かります。分からない行は、アシスタントの「コードを説明」で1行ずつ聞けます。
アシスタントの説明はいつも正しい?
アシスタントの答えは毎回少し違い、まちがうこともあります(Robloxの公式の説明にも、結果を確かめるよう書かれています)。説明を聞いたら、数字を1つ変えてテストし、説明どおりに動きが変わるかを確かめます。AIの答えの確かめ方は、AIにできること・できないことで解説しています。
次は、if・elseif・while・配列・辞書など、Lua言語の書き方を覚えます。次のステップ(中級 25/28)
次に知りたいことを選ぶ
- 次のステップ:if・elseif・while・配列・辞書など、Lua言語の書き方を覚えます → ロブロックス(Roblox)のLua言語の基本
- AIにスクリプトを書いてもらいたい → ロブロックス(Roblox)スクリプトの作り方
- スクリプトが動かないときの直し方を知りたい → ロブロックス(Roblox)でスクリプトが動かないときの確認手順
- AIの使い分けを知りたい → ChatGPT・Claude・Roblox Assistantの役割と使い分け
- StudioのAI機能をまとめて知りたい → ロブロックス(Roblox)スタジオのAI機能の使い方