Slide 1

Slide 1 text

「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

自己紹介 ● 2010年より株式会社スクウェア・エニックスで FFの開発に携 わる、FF14、FF16などを開発 
 ● 2022年末よりRobloxの開発をスタート 
 ● 2023年独立、Robloxの教育事業も実施 
 ● Roblox開発スタジオ NeXtremeStudio 設立
 ● Vimが好き
 丹治 慶太
 (たんじ けいた)

Slide 4

Slide 4 text

Roblox開発実績 ● たまごっちパラダイス 
 ○ 360万プレイ 
 ○ 株式会社 EbuActionより依頼 
 ● Find & Sell
 ○ 540万プレイ 
 ○ 株式会社メタバースクリエイターズより依頼 
 ● ゲームクリエイタータイクーン 
 ○ 110万プレイ 
 ○ スタジオオリジナル作品 
 ● コンテストやハッカソンで作品入賞 


Slide 5

Slide 5 text

アジェンダ 1 Robloxについて 2 Robloxの魅力 3 Roblox開発環境の特徴 4 開発効率化 8Step 5 まとめ・Q&A

Slide 6

Slide 6 text

Robloxについて 1

Slide 7

Slide 7 text

Robloxとは UGCゲームプラットフォーム UGC=User Generated Content
 ユーザーが制作したゲームが並ぶ 
 ゲーム版YouTubeとも例えられる

Slide 8

Slide 8 text

Robloxプラットフォームの特徴 ● ローグラフィック x マルチプラットフォーム 
 ● 基本無料 + 課金要素
 ● コミュニティ駆動の頻繁なアップデート 
 ● 低年齢層ユーザーが多い 
 ● 没入型ソーシャルプラットフォーム 


Slide 9

Slide 9 text

数字で見る Roblox 9780万人 / 日 3.8億人 / 月

Slide 10

Slide 10 text

最近のRobloxの成長・実績 同時接続数 
 2100万人 Grow a Gardenの衝撃 Roblox全体で3300万人に

Slide 11

Slide 11 text

Robloxの魅力 2

Slide 12

Slide 12 text

ゲーム開発者としての魅力 ● 即リリース 
 ● マルチプラットフォーム対応 
 ● ネットワーク・サーバー費ゼロ 
 ● 高い制作自由度 
 ● 開発者コミュニティの発展 


Slide 13

Slide 13 text

ビジネスとしての魅力 ● Z/α世代へのリーチ 
 ● 広告やアイテムなど幅広い集客法 
 ● EC連携開始
 ● 課金手段の豊富さ 
 ● 高速PDCA環境


Slide 14

Slide 14 text

Roblox vs UEFN Robloxの良さ ● 開発環境のハードルの低さ 
 ● 開発の自由度
 ● モバイルデバイスでのプレイ 
 UEFNの良さ ・解析機能が豊富
 ・課金手段の自由度
 ・ローグラフィックゆえの自由な表現
 ・ユーザー数
 ・開発者コミュニティが成熟
 ● UEによる発展性
 ● Fortniteベースのゲーム基盤 
 ● Nintendo Switchでのプレイ
 ・リッチなグラフィック表現
 ・Disneyなどの巨大IPの参画
 ・新パラダイム言語Verse
 よく比較される両者を主に開発視点で比較

Slide 15

Slide 15 text

Roblox開発環境の特徴 3

Slide 16

Slide 16 text

オールインワンの開発環境 
 「Roblox Studio」にて開発

Slide 17

Slide 17 text

サーバー・クライアント 
 一体型プロジェクト 
 ● 共通のDataModelツリーで構成 
 ● サーバーにはツリー全体が存在 
 ● クライアントには複製対象のみ展開 
 ● 用途別のコンテナがある 
 ● 用途別のScriptがある


Slide 18

Slide 18 text

すべてがDataModel
 ツリーの要素 
 ● DataModelツリーに全要素 
 ● 全要素が「 Instance」
 ● 全要素が配置場所自由 
 ● UIも、Soundも、Scriptも
 ● 統一的な管理・アクセスを実現 


Slide 19

Slide 19 text

クラウドへのデータ保存 メリット • プロジェクト環境の同期・復元が簡単 • ローカルストレージを圧迫しない • 自動的なバックアップになる デメリット • ファイルシステムアクセスできない • Scriptの別エディタ編集などができない • Gitなどのバージョン管理システムが使えない → 後述「効率化:外部エディタ活用」で解決可能 ● プロジェクトをサーバーに一括保存 
 ● 定期的な自動保存とバージョン保持 
 ● アセットもサーバーに登録・保存 


Slide 20

Slide 20 text

ビルトインのアセット管理と 
 自由度の高いアセット共有 
 ● アセットサーチもStudio内に一体化
 ● Studio上でアセット検索→配置までシームレス
 ● 制作アセットはクラウドに保存され共有が可能 
 ● 3Dモデル、画像、サウンド、プラグイン 
 ● ScriptやUIなども内包して公開が可能 
 Studio内の「Toolbox」

Slide 21

Slide 21 text

スクリプト言語「 Luau」 ● Lua5.1ベースのLua拡張言語
 ● 型付け機能を搭載 
 ● パフォーマンスも大幅に改善 
 ● 拡張構文で Luaより書きやすく 
 ● 型により保守性や補完解釈が向上 


Slide 22

Slide 22 text

開発環境:その他の特徴 ★ Windows / Mac対応
 ★ オールインワンの制作環境 
 ★ 物理シミュレーションベース 
 ★ 負荷が軽め 
 ★ AI支援機能が豊富 


Slide 23

Slide 23 text

実践!開発効率化 Step1:Studio機能活用 Step2:StudioAI活用 Step3:ライブラリ活用 Step4:効率的コーディング Step5:クラウド APIの活用 Step6:外部エディタ活用 Step7:効率的コード管理 Step8:外部AI活用 4

Slide 24

Slide 24 text

開発効率化 Step1:Studio機能活用

Slide 25

Slide 25 text

Package機能 Unityの PreFab と似た機能 例:大量の花をPackageに ● モデル変更を一括で共有 
 ● Part、UI、Scriptなど諸々が対応 
 ● PackageLinkが子どもにつくだけ 
 ● クラウドに保存されバージョン管理 
 ● プロジェクトをまたいだ共有可能 
 ● 変更箇所の AI要約などの機能も 


Slide 26

Slide 26 text

パッケージデモ 一括カラー変更

Slide 27

Slide 27 text

CommandBarによる Script処理 ● オフラインで Scriptによるデータ編集が可能 
 ● 実行中にも使えるので差し込み処理も可能 
 ● 選択対象に対する処理実行なども可能 
 例:サフィックス番号付与 面倒な手作業を Scriptで一括処理 
 CommandBarはスタジオ最下端にある

Slide 28

Slide 28 text

プラグイン活用 代表的なもの AutoScaleLite UIのスケール変換 Building Tools by F3X 配置物の調整 Archimedes パーツの補間 Moon Animator 2(有料) アニメーション /カットシーン編集 ● Studioで簡単に導入可能 
 ● 多数のプラグインが公開 
 ● 無料~有料 


Slide 29

Slide 29 text

プラグインを自作 ● プラグインは同様に Luau実装にて自作 / 公開まで可能 
 ● 頻繁に使う反復作業などはプラグインにすると効率的 
 ● 小さい明確な機能となり AIでも制作がしやすい 
 デザイナーがAIにより制作したプラグイン「UITransform」

Slide 30

Slide 30 text

● ショートカットキーのカスタマイズ 
 - 任意キー設定可能
 - パッケージ操作などよく使う操作を割当
 
 ● リボンパネルのカスタマイズ 
 - カスタムパネルが作成可能
 - よく使う操作やプラグインなどを並べて専用メニュー化
 
 ● エクスプローラフィルター 
 - 全てがツリーにあるため数が多くフィルタは重要
 - ワイルドカードや and, or 検索が可能
 - プロパティ、クラス、タグなどの一致も可能
 
 ● ベータ機能の有効化
 - ベータ機能を項目ごとに任意有効化が可能
 - 便利になる機能が多いので使って損なし
 その他の細かな大事ポイント

Slide 31

Slide 31 text

開発効率化 Step2:Studio AI機能活用

Slide 32

Slide 32 text

アセット生成機能 マテリアル生成 テクスチャ生成 3Dモデル生成 以下のアセット生成機能が搭載
 ● マテリアル生成
 ● 3Dモデル生成
 ● テクスチャ生成
 まだ発展途上で実用には難しいが
 プロトタイプ制作などで有効

Slide 33

Slide 33 text

「アシスタント」活用 Studio内製のAIアシスタント できること ● 質問に回答
 ● オブジェクトの追加・編集
 ● Scriptの追加・編集
 ● 3Dモデルの検索・挿入
 ● アセット生成
 DataModelや選択状態などを理解 したサポートが強力

Slide 34

Slide 34 text

Roblox Assistant活用デモ 選択対象や構造を理解してオブジェクトのリネームを依頼

Slide 35

Slide 35 text

開発効率化 Step3:ライブラリ活用

Slide 36

Slide 36 text

ライブラリとは ● 再利用可能なコードモジュールの集合体
 ● ModuleScriptとして利用
 ● 共通機能を再実装する手間を省く
 ● 品質の高いコードを共有・活用できる
 ● コミュニティでの開発が活発


Slide 37

Slide 37 text

ライブラリのパッケージ管理 ● 外部エディタ環境と組み合わせて使用
 ● コマンド1つで一括導入
 ● 依存関係の自動的に解決
 ● バージョン固定化
 ● tomlファイルで一括管理
 ライブラリはパッケージマネージャー「 Wally」
 によるパッケージ管理が便利 


Slide 38

Slide 38 text

推しパケ(おすすめライブラリ) ProfileStore プレイヤーセーブデータの安全効率的管理 Replica サーバー・クライアント間のデータ同期 Promise 非同期処理をチェインしたり、最終的な処理をまとめて行う FastSignal イベントパラメータの参照渡しと速度アップ Janitor / Trove / Maid 効率的なリソース管理とクリーンアップ RbxUtil全般 様々なユーティリティ機能 ZonePlus 効率的な空間レンジの管理と検知 Fusion 状態に合わせた振る舞い管理や UI構築

Slide 39

Slide 39 text

ライブラリの探し方 ・DevForumでResoucesカテゴリの人気のものを見てみる
  (参考:Roblox開発効率化の入り口 ) ・AIに人気のものや定番を聞いてみる

Slide 40

Slide 40 text

ライブラリ活用のコツ ● 車輪の再発明を避けて効率化 
 ○ 欲しい機能が浮かんだら探してみる
 ○ 不便や無駄を感じたら探してみる
 ○ 定番・人気のものは理解・利用してみる
 
 ● 依存しすぎないことも大事 
 ○ 全ての「やりたい」を実現できるとは限らない
 ○ ないなら自作のほうが早い・使いやすいの割り切りも必要
 ○ ライブラリコレクターになっても使い切れない


Slide 41

Slide 41 text

開発効率化 Step4:効率的コーディング

Slide 42

Slide 42 text

Robloxは固有の特徴を持つ開発環境、 
 紹介するスタイルが最適とは限りません 
 ※注意


Slide 43

Slide 43 text

基本:共通処理のモジュール化 ● 重複コードの排除 
 ● 再利用性の向上 
 ● データの定義・共有にも活用 
 課題:
 Scriptを自由に配置・実行できる手軽さから 
 同様の処理が多くのところに散乱しがち 
 ModuleScriptで処理を共通化

Slide 44

Slide 44 text

オブジェクト指向的クラス実装 課題:
 オブジェクトごとに振る舞いや 
 パラメータの管理をしたい
 ● Luau自体にクラスの機能はない 
 ● プロトタイプ宣言的クラス実装が可能 
 ● メタテーブルを利用して継承なども可能 
 オブジェクト指向プログラミングに基づく 
 クラス実装とインスタンス化が有効 


Slide 45

Slide 45 text

Tagによるオブジェクト管理 ● Tagはオブジェクトの種類ごと管理に最適 
 ● パスや名前に依存せず一括管理 
 ● 対象TagのInstance追加/削除フック 
 ● キャッシュが効き取得も高速 
 課題:
 クラス実装を適用する
 オブジェクトの管理機構がない 
 TagとCollectionServiceによる
 オブジェクト管理が最適 


Slide 46

Slide 46 text

コンポーネント指向実装 課題:
 単純なオブジェクト指向や継承には拡張の課題あり
 現在のゲーム開発ではコンポーネント指向が主流 機能別クラス実装 x タグ管理で 
 コンポーネント指向の仕組み化 
 ・RbxUtil/Component
 ・Matter
 共通のバトル機能クラスで処理 Enemyクラスは不要に ● 小さい単位で変更・拡張しやすい 
 ● 柔軟に機能を組み合わせた振る舞いを実現 
 ● 再利用性が高い 
 ● Component系ライブラリの活用も可能 


Slide 47

Slide 47 text

Type定義・TypeCheck 課題:
 ・コーディングで補完が効かない
 ・誤った関数やメンバを使ってエラーが起きる
 Luauの以下の機能を活用 
 ・Type定義
 ・Type注釈
 ・TypeCheck
 ● 自作クラス含めコードの補完が効くように 
 ● 事前にエラーを検出 
 ● 可読性・保守性が向上 
 独自クラスの型定義と型注釈
 型定義と型注釈により補完が効く
 TypeCheckによりエラー検出


Slide 48

Slide 48 text

Robloxは固有の特徴を持つ開発環境、 
 紹介するスタイルが最適とは限りません 
 ※注意


Slide 49

Slide 49 text

本質的に大事なのは 
 拡張性、保守性、再利用性 
 の意識をもった設計と実装の心構え 


Slide 50

Slide 50 text

開発効率化 Step5:クラウド APIの活用

Slide 51

Slide 51 text

Open Cloud APIとは Robloxリソースに REST APIでアクセス可能なクラウドサービス 
 
 データの操作や自動化ツール、ゲームイベント処理など様々な用途 代表的なAPI ● DataStore 操作
 ○ プレイヤー/ゲームデータの取得・更新・削除 
 ● MemoryStore操作
 ○ ゲーム中の動的な設定変更など 
 ● Messaging Service
 ○ ゲーム内へイベント通知など 
 ● place-instance 操作
 ○ Scriptの編集(今後 Objectも対応予定) 
 ● Luau Execution
 ○ サーバーを立ててスクリプト実行 
 ● Place Publishing
 ○ プレースの公開や再起動 


Slide 52

Slide 52 text

API活用!クラウドゲームデータ管理 実装フロー ➢ Googleスプレッドシートでデータ管理
 ➢ Google Apps Scriptでデータ処理
 ➢ OpenCloudAPIでModuleScript更新
 ➢ ゲーム内にデータ反映
 instanceAPIでScriptの編集が可能
 表形式データ ⇒ データ定義 Script化
 を実装して表形式データ管理を実現 する


Slide 53

Slide 53 text

API活用!クラウドゲームデータ管理 ★ 表形式で一覧性アップ 
 ★ シートの編集・検索・ソート機能 
 ★ 非エンジニアも簡単にデータ調整 
 ★ Studio不要、ブラウザでデータ更新 
 ★ シート履歴で見やすいバージョン管理 
 メリット

Slide 54

Slide 54 text

クラウドゲームデータ管理デモ

Slide 55

Slide 55 text

開発効率化 Step6:外部エディタ活用

Slide 56

Slide 56 text

外部エディタ利用 Cursorでの編集画面 Studioとエディタの同期機構 
 の環境を用意することで
 VSCode等の外部エディタでの 
 Script編集・管理が可能 
 いつものエディタじゃないとやりづらいんだけど あのAIエージェント使えないとか無理 Vim使えないとか無理

Slide 57

Slide 57 text

外部エディタ活用のメリット メリット ● 外部AIエージェント活用
 ● Gitバージョン管理 / Diff
 ● 自由な拡張エディタ環境
 ● パッケージマネージャー管理
 ● コードのバックアップ化
 デメリット ● Studioとのウィンドウ切替 
 ● デバッガーはStudioで


Slide 58

Slide 58 text

エディタ拡張機能と選定 ● Rojo / Argon
 - エディタ→Studioの同期、インスタンス情報も同期可能
 - Rojo : シンプル、老舗で情報も多い
 - Argon:逆方向同期などの高機能(利用中)
 
 ● LuauLSP / RobloxLSP
 - インテリセンス、構文チェックが効くように
 - LuauLSP:堅牢なTypeCheck、Luau型定義必要、今後主流
 - RobloxLSP:自動的な型解釈など導入しやすい、メンテ終了(利用中)
 - ※クラス実装時 self 解決の手間がLuauLSPでは発生
 
 
 ● Selene
 - Lua静的解析
 
 ● StyLua
 - Luaフォーマッタ
 
 ● (Vim)
 - 思考の速度でコーディング
 


Slide 59

Slide 59 text

開発効率化 Step7:効率的コード管理

Slide 60

Slide 60 text

課題 Roblox開発は短期でサイクルも早め 
 複数のプロジェクトの開発が 
 同時並行で走ることも多い 
 プロジェクト間での効率的コード共有が必要 
 こないだ作ったあの機能こっちでも使いたい あの機能どのプロジェクトで実装したっけ?

Slide 61

Slide 61 text

対応手法 ● Module単位のコピペ
 - ModuleScript単位で必要な機能の導入
 - 内容更新の反映が手動
 - 依存を少なくした単体機能化が重要
 
 ● パッケージで共有
 - プロジェクト間で更新含め共有可能
 - 細かいバージョン分けた管理は難しい
 
 ● システム層レイヤー分離 
 - システム層でのプロジェクト分離化
 - システム機能を組み合わせたフレームワーク管理化
 - アプリとの依存の適切な切り分けが必要
 


Slide 62

Slide 62 text

実例:システムレイヤー層分離管理 レイヤー構造 Nexapp層 : ゲームごとの実装 Nexsys層 : 共通基盤フレームワーク・ライブラリ Nexsys構成 ● 各種機能モジュール郡
 ● ベースクラス実装
 ● ゲームフレームワーク


Slide 63

Slide 63 text

実例:システムレイヤー層管理 Nexsys管理方法 ● 外部エディタ上で別プロジェクト・リポジトリ化
 ● 同期設定でNexapp / Nexsys フォルダで同期
 ● プロジェクト状況に応じてブランチ管理
 ● 必要に応じてお互いに機能をマージ
 よく使う機能を まとめて管理 することで 
 管理コスト下げつつ共有しやすく 


Slide 64

Slide 64 text

開発効率化 Step8:外部AI活用

Slide 65

Slide 65 text

AIエージェントの進化が すさまじすぎる

Slide 66

Slide 66 text

ここで語る情報も一過性の ものでしかない

Slide 67

Slide 67 text

● 補完のみならぬ自律エージェントへ進化
 ● プロジェクト全体を理解した修正・提案
 ● 自律的にテストからコミットまで実行
 開発向けの AIの進化と効果 ★ 開発速度の向上 
 ★ コード品質の向上 
 ★ 学習コストの削減 


Slide 68

Slide 68 text

“今ˮ開発で使われるコーディング AI ● Github Copilot
 ● Cursor
 コード補助 +
 自律処理型 
 自律タスク処理 
 特化型
 ● Claude Code
 ● Gemini CLI
 ・エディタに統合しサポートがメイン
 ・俯瞰した推測を含むコード補完が強力 
 ・自律タスクは限定的な活用が主
 ・主にCLI上でタスクを依頼
 ・コーディングサポート用途ではない
 ・テスト、PR作成などまでも行える 


Slide 69

Slide 69 text

ScriptなどのAIが理解・編集する情報がAIが読める形で必要なため。
 外部エディタ連携さえすればすぐに利用できる、ともいえる。
 外部AIを活用するには 外部エディタ環境 
 が必要
 外部エディタ環境の利用度は今後益々高まりうる 


Slide 70

Slide 70 text

Roblox StudioとMCP接続することで 
 外部AIがStudioの操作を行える 応用的活用: Roblox Studio MCP連携 すでに簡単なゲーム(Obby等)の制作を依頼可能
 クオリティや管理などの面で実用的にはまだまだ課題が多い 
 できること ● プロジェクトの解析・把握
 ● インスタンスの生成・破棄
 ● プロパティ操作
 ● スクリプトの実装
 ● アセットの検索・挿入


Slide 71

Slide 71 text

ただし現時点で AIは万能のツール というわけではない

Slide 72

Slide 72 text

外部AI活用のˮ現在のˮ課題 ● DataModelの理解が難しい 
 - 外部同期したファイル以外の情報把握が難しい
 - 配置物やUIなどのモノに合わせた実装が難しい
 - MCPである程度把握させることは可能だが実利用には厳しい
 
 ● ゲーム全体の実装にはまだ力不足
 - ゲーム実装にもDataModelのスムーズな解釈が必要
 - 全体の設計・実装を任せるには不安なコードも多い
 
 ● Robloxのゲームデザイン・実装は多岐にわたる
 - 現時点ではAIは既存の正解モデルと同じことをするのが得意
 - 新たなパラダイムを自動的に解決させるのは難しい


Slide 73

Slide 73 text

AI活用の指針 ● まず使ってみること 
 ○ 進化すさまじくすでにかなり賢い
 ○ 定型的処理や局所サポートならすでに必須レベル
 ○ うまくはまる活用があれば積極的に利用すべし
 
 ● 一方で無理に使おうとはしない 
 ○ まだまだ課題は多く自分で解決したほうが良い場面多々
 ○ 現在の活用ナレッジも一過性のものになりえる
 ○ 特にRobloxは拡張/メンテナンス性も大事ゆえ自力の把握も大事


Slide 74

Slide 74 text

開発効率化まとめ

Slide 75

Slide 75 text

開発効率化まとめ 今回挙げたのはいくつかの例でしかなく
 ・常に効率化できることを探し無駄を省くを意識 すること
 ・新しい技術をキャッチアップし試行・活用してみる こと
 こういった ”意識”こそが大事 
 
 効率化は1つ1つの小さな改善の積み重ね です
 できることから1つずつトライしてみると良いと思います


Slide 76

Slide 76 text

まとめ 5

Slide 77

Slide 77 text

Robloxは「開発環境も UGC」
 といえるほどの自由度と拡張性をもっている 
 
 開発環境からゲーム制作まで含めて 
 より良いもの、新しいものを生み出す 
 可能性だらけの環境です 
 
 ぜひチャレンジしてみてください 


Slide 78

Slide 78 text

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


Slide 79

Slide 79 text

Q&A  X :@keita0x12
 EMail:[email protected]
 質問やご相談は以下へ