---
title: Robloxでのゲーム開発に使う言語「Luau」について
tags: 
author: [星野 雄哉](https://docswell.com/user/921starfish)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/PER9QVZ4J9.jpg?width=480
description: Robloxでのゲーム開発に使う言語「Luau」について by 星野 雄哉
published: July 11, 26
canonical: https://docswell.com/s/921starfish/KL3E98-Roblox%E3%81%A6%E3%82%99%E3%81%AE%E3%82%B1%E3%82%99%E3%83%BC%E3%83%A0%E9%96%8B%E7%99%BA%E3%81%AB%E4%BD%BF%E3%81%86%E8%A8%80%E8%AA%9E%E3%80%8CLuau%E3%80%8D%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/PER9QVZ4J9.jpg)

Robloxでのゲーム開発に使う言語
「Luau」について
HOSHINO Yūya


# Page. 2

![Page Image](https://bcdn.docswell.com/page/P7XQ5Z9ZEX.jpg)

自己紹介
● 職業：
○ Robloxクリエイター
■ Robloxプラットフォーム上にゲームを作る人
● バックグラウンド：
○ サーバーサイドもやる
○ 関数型プログラミングは趣味


# Page. 3

![Page Image](https://bcdn.docswell.com/page/37K968PV7D.jpg)

目次
1. 本セッションでは
2. Robloxとは
3. Luauとは
○ Luauでできる関数型プログラミング
○ Luauでできない関数型プログラミング
4. 関数型プログラミングとRoblox
5. まとめ


# Page. 4

![Page Image](https://bcdn.docswell.com/page/LJ3W624QJ5.jpg)

目次
1. 本セッションでは
2. Robloxとは
3. Luauとは
○ Luauでできる関数型プログラミング
○ Luauでできない関数型プログラミング
4. 関数型プログラミングとRoblox
5. まとめ


# Page. 5

![Page Image](https://bcdn.docswell.com/page/8JDKVZQWEG.jpg)

本セッションでは
● 得られるもの
○ LuauでRobloxゲーム開発を行う際に、
関数型プログラミングの考え方をどこまで活かせて、
どこから難しくなるのかについての入門知識
● 説明すること
○ Robloxの概要
○ Luauの概要
■ 関数型的な書き方
● 説明しないこと
○ Luaの詳細
○ 関数型プログラミングの個別のテクニック


# Page. 6

![Page Image](https://bcdn.docswell.com/page/VEPKVDLX78.jpg)

目次
1. 本セッションでは
2. Robloxとは
3. Luauとは
○ Luauでできる関数型プログラミング
○ Luauでできない関数型プログラミング
4. 関数型プログラミングとRoblox
5. まとめ


# Page. 7

![Page Image](https://bcdn.docswell.com/page/27VVZ1Q37Q.jpg)

Robloxとは
● 制作したり、友達と体験を共有したり、イメージをふくらませて
何にでもなったりできる究極のバーチャル世界
（公式サイトより引用）


# Page. 8

![Page Image](https://bcdn.docswell.com/page/5JGL42WY7L.jpg)

Robloxとは -ざっくりと● 世界最大級のゲームプラットフォーム
○ 月間3.5億人以上が訪問
● 誰でも簡単に世界中に自分の作ったゲームを公開可能
○ 語弊を恐れずいうとゲーム版 YouTube
○ 開発の簡単さが多彩さのバックグラウンドになっている
● 以下の専用ツールで開発
○ 専用ゲームエンジン「Roblox Studio」
○ プログラミング言語「Luau」


# Page. 9

![Page Image](https://bcdn.docswell.com/page/47QYGP36EP.jpg)

目次
1. 本セッションでは
2. Robloxとは
3. Luauとは
○ Luauでできる関数型プログラミング
○ Luauでできない関数型プログラミング
4. 関数型プログラミングとRoblox
5. まとめ


# Page. 10

![Page Image](https://bcdn.docswell.com/page/KE4W5Y1MJ1.jpg)

Luauとは
● Luau (lowercase u, /ˈlu.aʊ/) is a small, fast, and
embeddable programming language based on Lua with a
gradual type system.
（公式サイト（https://luau.org）より引用）


# Page. 11

![Page Image](https://bcdn.docswell.com/page/L71YW6GYJG.jpg)

Luauとは -補足● JavaScriptに対するTypeScriptと似たような関係
○ 導入された型システムも雰囲気は似ている
● Lua 5.1をベースにしているが完全な互換性はない
● Robloxに特化しているわけではなく、公式から処理系もダウン
ロード可能
○ https://github.com/luau-lang/luau
○ 手軽に試すなら公式サイトのPlaygroundがおすすめ
● 関数型味が強い言語ではない


# Page. 12

![Page Image](https://bcdn.docswell.com/page/G7WG6WK1E2.jpg)

Luauとは -補足● コードサンプル（公式サイトより引用）
-- we can define our own structural data types
type Point = { x: number, y: number }
-- and we can annotate variables (and function
arguments) with them)
local p: Point = { x = 1, y = 2 }
print(p.x, p.y)


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4JZLY5ZXE3.jpg)

目次
1. 本セッションでは
2. Robloxとは
3. Luauとは
○ Luauでできる関数型プログラミング
○ Luauでできない関数型プログラミング
4. 関数型プログラミングとRoblox
5. まとめ


# Page. 14

![Page Image](https://bcdn.docswell.com/page/YE6WD9ZPEV.jpg)

Luauでできる関数型プログラミング
● 関数を値として扱える
○ 構文が軽量で見づらくもない
local Add = function(a: number)
return function(b: number)
return a + b
end
end
print(Add(1)(2)) -- 3


# Page. 15

![Page Image](https://bcdn.docswell.com/page/GE5M3NWPE4.jpg)

Luauでできる関数型プログラミング
● TypeScriptなどで行えるアプローチは積極的に真似できる
○ 代数的データ型的アプローチ
○ Result型の導入
○ 純粋関数とそれ以外の分離
○ etc.


# Page. 16

![Page Image](https://bcdn.docswell.com/page/9729Z5QZJR.jpg)

Luauでできる関数型プログラミング
● OSSを使う
○ MapやReduceなどを提供
■ https://github.com/cxmeel/sift
● 自分で作る
○ 自作のResult型
■ 非公開
○ 自作のUnit型
■ https://github.com/921starfish/unit-for-luau


# Page. 17

![Page Image](https://bcdn.docswell.com/page/DJY4RKWN7M.jpg)

目次
1. 本セッションでは
2. Robloxとは
3. Luauとは
○ Luauでできる関数型プログラミング
○ Luauでできない関数型プログラミング
4. 関数型プログラミングとRoblox
5. まとめ


# Page. 18

![Page Image](https://bcdn.docswell.com/page/V7NYDR9VE8.jpg)

Luauでできない 関数型プログラミング
● ❌ 末尾呼び出し最適化
○ Tail calls are not supported to simplify implementation
（Compatibility with Lua | Luauより引用）
● 再帰関数は書かない方が無難


# Page. 19

![Page Image](https://bcdn.docswell.com/page/YJ9PGM2V73.jpg)

Luauでできない 関数型プログラミング
● ❌ イミュータビリティ
○ Luauのテーブルはデフォルトで基本的にミュータブル
○ read修飾子などはあるが、2025/11にGAされたばかりで
まだ一般的でないかも


# Page. 20

![Page Image](https://bcdn.docswell.com/page/GJ8DVL54JD.jpg)

Luauでできない 関数型プログラミング
● ❌ パターンマッチング
○ 代数的データ型的なことはできる
■ https://luau.org/types/unions-and-intersections/#tag
ged-unions
○ でもパターンマッチングが言語仕様にない


# Page. 21

![Page Image](https://bcdn.docswell.com/page/LJLM5LYVER.jpg)

目次
1. 本セッションでは
2. Robloxとは
3. Luauとは
○ Luauでできる関数型プログラミング
○ Luauでできない関数型プログラミング
4. 関数型プログラミングとRoblox
5. まとめ


# Page. 22

![Page Image](https://bcdn.docswell.com/page/47MY3MNN7W.jpg)

関数型プログラミングとRoblox
● 関数型プログラミング
○ ゲームのパフォーマンスと両立させるのは初心者には難し
い
■ ソフトウェアアーキテクチャなど
● Robloxの特徴
○ Obby（アスレチック）やFind（宝探し）など、パフォーマンス
に対しシビアでないゲームも人気がある
→ 関数型プログラミング入門に向いている……かも


# Page. 23

![Page Image](https://bcdn.docswell.com/page/P7R9QVD4E9.jpg)

目次
1. 本セッションでは
2. Robloxとは
3. Luauとは
○ Luauでできる関数型プログラミング
○ Luauでできない関数型プログラミング
4. 関数型プログラミングとRoblox
5. まとめ


# Page. 24

![Page Image](https://bcdn.docswell.com/page/PJXQ5Z1Z7X.jpg)

まとめ
● Roblox
○ 人気のゲームプラットフォーム
● Luau
○ Luaにいわゆる漸進的型付けを導入した言語
● Robloxでの開発においての関数型プログラミング
○ 言語の制約上、できないことも多い
○ でも、完全に閉ざされているわけではなくて、できることも
多い


# Page. 25

![Page Image](https://bcdn.docswell.com/page/3JK9682VJD.jpg)

ご清聴ありがとうございました！


