roblox-luau-core について
Luauの仕様と、JavaScriptやPythonから移行する際の注意点をまとめたリファレンススキルです。Luauを書く開発者やコードレビュー担当者向けに、実行時の挙動と構文を簡潔な規則や例で説明します。
主な機能
- 01真偽値と等価性の規則
- 02テーブルと反復処理の挙動
- 03Luau構文と文字列パターン
- 04バイナリデータとエンコーディングの指針
- 05JavaScript・Pythonからの移行時の注意点
活用シーン
- 01Luauの言語仕様の確認
- 02JavaScriptコードのLuauへの移行
- 03言語間の前提に関するコードレビュー
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tabooharmony/ roblox-brain --skill roblox-luau-coreインストール後、Claude Code で/roblox-luau-coreを入力して読み込まれたか確認します。
同梱ファイルreferences/full.md
詳細
Luau コア言語
読み込むタイミング
Luau のセマンティクスや JS/Python からの翻訳では読み込みます。型については roblox-luau-types、ライフサイクルについては roblox-luau-patterns、エンジン API についてはドメインスキルを参照してください。
クイックリファレンス
- falsy なのは
falseとnilだけです。0、""、{}は truthy です。 - 等価比較では型変換されません。
0 == "0"は false です。不等号には~=を使います。 - 配列のインデックスは 1 始まりです。
#arrayが意味を持つのは、nilによる欠落のないシーケンスだけです。 nilを代入するとテーブルのキーが削除されます。テーブルを代入すると参照がコピーされます。table.cloneは浅いコピーです。- ディクショナリの反復順序は未指定です。順序に依存する動作を作らないでください。
- 動的キーには角括弧が必要です:
record[field]。ドット構文ではリテラルの識別子を使います。 - 引数が不足すると
nilになり、余分な戻り値や引数は破棄されることがあります。 aが falsy になる可能性がある場合は、condition and a or bではなくif式を使ってください。- ローカル変数のスコープは宣言位置から始まり、
repeat内のローカル変数はuntilまで有効です。相互再帰には前方宣言を使ってください。 - Luau の文字列パターンは正規表現ではありません。構文や機能が異なります。
- バッククォートによる補間と
..は有効です。ホットループでは、多数の断片を一度に結合してください。 - NaN は自身と等しくなく、
</>の比較もできません。x ~= xで判定してください。 - バイナリデータには
bufferライブラリを使います。サイズは固定で、オフセットは 0 始まり、読み書きには幅の明示が必要です。buffer.readinteger/writeintegerは使わないでください(スタブであり、リリース済みのランタイムではありません)。 - Base64、ハッシュ化、圧縮には
EncodingServiceを使ってください(文字列ではなくバッファを使用し、JSON にはHttpServiceを使います)。詳細は完全版リファレンスを参照してください。
local label = if enabled then "On" else "Off"
local message = `{name}: {score}`
local byId: {[number]: string} = {}
byId[userId] = name
for index, value in values do
print(index, value)
end
翻訳時の注意点
- JavaScript の
===、!==、null、オプショナルチェーン、スプレッド構文、アロー関数、配列メソッドは Luau の構文ではありません。 - Python の
None、リストが 0 始まりであるという前提、リスト内包表記、例外、暗黙のタプル動作は、そのまま翻訳できません。 x or fallbackは、値が存在しないかどうかではなく、truthy かどうかを判定します。有効なfalseの値も置き換えます。typeof(value)は Roblox のデータ型を認識します。type(value)は基盤となる Luau の型カテゴリを返します。
レビュー
有効な Luau であること、nil による欠落がないこと、ディクショナリの順序を前提にしていないこと、意図しないエイリアスがないこと、他言語の構文が混在していないこと、false や nil を隠すフォールバックがないことを確認してください。
詳細な言語上の注意点と翻訳例:references/full.md
コメント
Markdown 対応