Roblox Studioには、Robloxプロジェクトのコードを編集するための組み込みのスクリプトエディタがあります。このエディタには、リンティング、型チェック、自動補完、共同編集などの主要な機能が含まれています。
しかし、多くの開発者は、Visual Studio Code、Cursor、Sublime Text、またはNotepad++など、好みのテキストエディタや統合開発環境(IDE)を持っています。人気のある開発環境には、スタジオには存在しない機能やプラグインがあることがよくあります。外部エディタやIDEをスタジオで使用するには、スクリプト同期機能を有効にします。
スクリプト同期は、データモデル内のスクリプトをローカルディスク上のテキストファイルと同期させることによって機能します。ディスク上のLuauファイルに加えた変更はスタジオ内のスクリプトに適用され、その逆も同様です。この同期により、VS Codeのような外部エディタでスクリプトを編集し、スタジオで即座に変更を確認できます。
スクリプト同期を使用するタイミング
好みのテキストエディタを使用したり、コードをバージョン管理にチェックインしたりしたいが、その他のすべての作業にはスタジオを使用したい場合、スクリプト同期は良い選択です。また、スクリプト同期はRobloxの組み込みのコラボレーションツールとも連携しており、サードパーティのツールでは実現できないことがよくあります。
スクリプト同期は、既存のRobloxプロジェクトでもうまく機能します。これは、プロジェクトの管理方法を根本的に変えるのではなく、追加機能として提供されるためです。
プロジェクト全体(コードだけでなく)をバージョン管理にチェックインしたり、ファイルシステムをプロジェクトの真実のソースとして使用したい場合は、サードパーティツールのようなRojoの方が良い選択です。チームのセットアップを比較するには、ファイルベースのワークフローを比較を参照してください。
スクリプト同期の設定
エクスプローラーで、同期したい1つ以上のフォルダーを選択します。
右クリックして、スクリプト同期 ⟩ **ディレクトリと同期…**を選択します。

コンピュータ上のディレクトリを選択するか、新しいディレクトリを作成して保存をクリックします。
スタジオで、再度フォルダーを右クリックし、スクリプト同期 ⟩ エクスプローラーで表示(Windows)またはFinderで表示(macOS)を選択します。
お好みのテキストエディタでディレクトリを開きます。
代わりに、スタジオ内の個々のスクリプトを右クリックして外部エディタで開くを選択することもできます。
個々のスクリプトを同期することもできますが、フォルダーを同期することを強くお勧めします。フォルダーを同期すると、スクリプトとその子フォルダーが自動的に同期されるため、毎回同期を有効にすることなくスクリプトを作成、削除、名前変更できます。
スクリプト同期を設定した後は、ほぼ確実に言語サーバー拡張を追加したくなるでしょう。コードの整理に関するガイダンスについては、スクリプトの種類と場所を参照してください。
制限
スクリプト同期は、トップレベルの同期インスタンスごとに最大10,000スクリプト、最大128のトップレベルの同期インスタンスをサポートしているため、大規模なコードベースにスケールします。
コンフリクト解決
同期を開始または再開する際に、スタジオとディスク上のファイルに違いがある場合、スクリプト同期は詳細な解決ダイアログを表示します。このダイアログには、各側で追加、変更、または削除されるスクリプトがリストされており、スタジオを保持とディスクを保持の選択がどのような影響を与えるかを理解できます。
選択的削除
スタジオまたはディスク上で同期されたスクリプトやフォルダーを削除すると、スクリプト同期はLuauスクリプトとサポートされているファイルのみを削除します。管理していない非Luauファイルやフォルダーは削除されず、モデルやパーツなどの非スクリプトアセットは、同期されたアイテムを削除または再編成しても保持されます。
チーム作成
スクリプト同期はチーム作成と連携しています。エクスプローラーは、コラボレーターが現在同期しているインスタンスにアイコンを表示します。重複した名前を防ぐために、スクリプト同期は、あなたまたはコラボレーターが同期しているツリーの下に追加された新しいインスタンスの名前に自動的に数値のサフィックスを追加します。
複数の人が同じスクリプトを同期し、同時にファイルを編集するワークフローは避けてください。スクリプト同期は機能し続けますが、コラボレーターは互いの変更を上書きする可能性があります。
チームと一緒にスクリプト同期を使用する
スタジオネイティブのワークフローでは、チームはチーム作成を使用して共有プレースで直接作業し、各プログラマーはスクリプト同期を使用してコードをGitリポジトリに保持します。プレースの保存方法は変わらないため、いつでも既存のゲームにこのワークフローを採用できます。他のワークフローと比較するには、ファイルベースのワークフローを比較を参照してください。

- ゲームのチーム作成をオンにし、コラボレーターを追加します。
- スクリプトを含むフォルダーのスクリプト同期を設定し、ローカルGitリポジトリ内のディレクトリを選択します。
- お好みのエディタでディレクトリを開き、言語サーバーを設定します。
- 通常通りGitでコードの変更をコミットおよびレビューします。
同期されたコードの整理については、スクリプトの種類と場所を参照してください。
トレードオフ
| 利点 | 欠点 |
|---|---|
|
|
重要なヒント
スクリプト同期は、Script、LocalScript、ModuleScript、およびFolderインスタンスのみを同期します。同期されたフォルダー内の他のインスタンスは無視されます。他のインスタンスと一緒にスクリプトを含むフォルダーを同期することは避けてください。
パッケージを同期することはできますが、PackageLink自体はディスクに書き込まれません。
属性やタグを持つスクリプトを同期しないでください。スクリプト同期はこれらを無視するため、ディスク上のファイルの古いバージョンと同期を開始したり、スクリプトを作成または削除したりするとデータ損失が発生する可能性があります。
スクリプトの名前はファイルシステムと互換性がある必要があります—重複した名前やサポートされていない文字は使用できません。スタジオがこれらの問題に遭遇すると、エラーをスローし、同期を再開する前に状況を解決するように求めます。
スタジオが閉じている間に同期されたファイルやフォルダーが変更された場合、プレースを再オープンするときに、スタジオが状況を解決する方法を尋ねます。
ローカルディスク上でトップレベル(または「ルート」)インスタンス—最初に同期したインスタンス—を削除すると、スタジオがエラーをスローする可能性があります。トップレベルインスタンスを削除するには:
- スタジオでスクリプトまたはフォルダーを右クリックし、スクリプト同期 ⟩ 同期を停止を選択します。
- ファイルを削除またはフォルダーを削除オプションを選択して、ローカルディスクからインスタンスを削除します。
- スタジオでスクリプトまたはフォルダーを削除します。
同期を無効にせずにスタジオまたはローカルディスクで子インスタンスを削除することができ、その削除は期待通りに同期されます。
言語サーバーの設定
言語サーバーは、テキストエディタに自動補完、型チェック、「定義に移動」などの言語特有の機能を提供します。VS Codeには、Luau Language Serverをお勧めします。
言語サーバープロトコル(LSP)拡張は、プロジェクトのデータモデル階層を理解する必要があります。VS Code拡張には、このデータを提供するスタジオプラグイン(Luau Language Server Companion)が付属しています。
両方のインストールを強くお勧めします。 VS Code拡張とスタジオプラグインを使用すると、スクリプト同期を使用している間、VS Codeで言語機能が正しく動作します。
推奨拡張
- Roblox Luau LSPおよびLuau Language Server Companion - 言語機能(上記参照)
- selene - 静的コード分析(リンティング)
- StyLua - 自動コードフォーマット
同期ルール
子を持つインスタンスをディスク上のディレクトリと同期する際、スタジオは自動的に子に対する作成、名前変更、移動、削除操作をディスク上の対応するファイルおよびフォルダーと同期します。このアプローチにより、個々のスクリプトで手動で同期を停止および開始することなく、コードを維持できます。
ディスク上で、スクリプト同期は異なるタイプのスクリプトを区別するために以下のルールを使用します。
| ディスク上の命名規則 | スタジオ内のインスタンスタイプ |
|---|---|
| name.luau | ModuleScript |
| name.server.luau | Server Script.RunContextを持つスクリプト |
| name.client.luau | Client Script.RunContextを持つスクリプト |
| name.local.luau | LocalScript |
| name.legacy.luau | Legacy Script.RunContextを持つスクリプト |
| name.plugin.luau | Plugin Script.RunContextを持つスクリプト |
| name/(ディレクトリ) | Folder |
| name/init.*.luau | 子を持つスクリプトインスタンス。タイプ(*)は上記のルールによって決定されます。 |
設定
スクリプト同期には、スタジオ設定ウィンドウにいくつかの設定があります(AltSまたは⌥S)。デフォルトのオプションはほとんどの使用ケースに適しています。
| 設定 | 説明 |
|---|---|
| プレースを開いたときに自動的に同期を再開 | プレースを開いたときにスタジオが同期を再開するかどうか。 この設定を無効にすると、スクリプト同期の有用性が大幅に低下します。 |
| プレースを開いたときに競合した同期を再開 | プレースを開いたときにスタジオが競合をどのように処理するか。デフォルトのオプションである再開しないは、データ損失を避けるために手動で競合を解決することを強制します。また、ディスク上のバージョンまたはスタジオ内のバージョンを優先することもできます。 |
| 同期後にローカルファイル/ディレクトリを保持 | スタジオでスクリプト同期 > 同期を停止を選択した後、ディスク上のファイルをどのように処理するか。 |
| ファイル拡張子 | ディスク上のスクリプトに使用するファイル拡張子。 |