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

コンピュータ上のディレクトリを選択するか、新しいディレクトリを作成して保存をクリックします。
Studioで、再度フォルダーを右クリックし、スクリプト同期 ⟩ エクスプローラーで表示(Windows)またはFinderで表示(macOS)を選択します。
お好みのテキストエディタでディレクトリを開きます。
代わりに、Studio内の個々のスクリプトを右クリックして外部エディタで開くを選択することもできます。
個々のスクリプトを同期することもできますが、フォルダーを同期することを強くお勧めします。フォルダーを同期すると、スクリプト同期は自動的にその子フォルダーやスクリプトを同期し、スクリプトを作成、削除、名前変更する際に毎回同期を有効にする必要がなくなります。
スクリプト同期を設定した後は、ほぼ確実に言語サーバー拡張を追加したくなるでしょう。
制限
スクリプト同期は、トップレベルの同期インスタンスごとに最大10,000スクリプト、最大128のトップレベル同期インスタンスをサポートしているため、大規模なコードベースに対応できます。
コンフリクト解決
同期を開始または再開する際に、Studioとディスク上のファイルに違いがある場合、スクリプト同期は詳細な解決ダイアログを表示します。このダイアログでは、どのスクリプトが各側で追加、変更、または削除されるかがリストされており、Studioを保持とディスクを保持の選択がどのような影響を与えるかを理解できます。
選択的削除
Studioまたはディスク上で同期されたスクリプトやフォルダーを削除すると、スクリプト同期はLuauスクリプトとサポートされているファイルのみを削除します。管理していない非Luauファイルやフォルダーは削除されず、モデルやパーツなどの非スクリプトアセットは、同期されたアイテムの周りで削除または再編成しても保持されます。
チーム作成
スクリプト同期はチーム作成と連携しています。エクスプローラーは、コラボレーターが現在同期しているインスタンスにアイコンを表示します。重複した名前を防ぐために、スクリプト同期は自動的に、あなたまたはコラボレーターが同期しているツリーの下に追加された新しいインスタンスの名前に数値のサフィックスを追加します。
複数の人が同じスクリプトを同期し、同時にファイルを編集するワークフローは避けてください。スクリプト同期は機能し続けますが、コラボレーターが互いの変更を上書きする可能性があります。
重要なヒント
スクリプト同期は、Script、LocalScript、ModuleScript、およびFolderインスタンスのみを同期します。同期されたフォルダー内の他のすべてのインスタンスは無視されます。スクリプトと他のインスタンスが含まれるフォルダーの同期は避けてください。
パッケージを同期することはできますが、PackageLink自体はディスクに書き込まれません。
属性やタグを持つスクリプトを同期しないでください。スクリプト同期はこれらを無視するため、ディスク上の古いバージョンのファイルで同期を開始したり、スクリプトを作成または削除したりするとデータ損失が発生する可能性があります。
スクリプト同期は、スクリプトの名前がファイルシステムと互換性がある必要があります—重複した名前やサポートされていない文字はありません。Studioがこれらの問題に遭遇すると、エラーをスローし、同期を再開する前に状況を解決するように求めます。
Studioが閉じている間に同期されたファイルやフォルダーが変更された場合、プレースを再オープンするときにStudioがその状況を解決する方法を尋ねます。
ローカルディスク上でトップレベル(または「ルート」)インスタンス—最初に同期したインスタンス—を削除すると、Studioがエラーをスローする可能性があります。トップレベルインスタンスを削除するには:
- Studioでスクリプトまたはフォルダーを右クリックし、スクリプト同期 ⟩ 同期停止を選択します。
- ファイルを削除またはフォルダーを削除オプションを選択して、ローカルディスクからインスタンスを削除します。
- Studioでスクリプトまたはフォルダーを削除します。
同期を無効にせずにStudioまたはローカルディスクで子インスタンスを削除することができ、その削除は期待通りに同期されます。
言語サーバーの設定
言語サーバーは、テキストエディタに自動補完、型チェック、「定義に移動」などの言語特有の機能を提供します。VS Codeには、Luau Language Serverをお勧めします。
言語サーバープロトコル(LSP)拡張は、プロジェクトのデータモデル階層を理解する必要があります。VS Code拡張には、このデータを提供するコンパニオンStudioプラグイン(Luau Language Server Companion)が付属しています。
両方のインストールを強くお勧めします。 VS Code拡張とコンパニオンStudioプラグインを使用すると、スクリプト同期を使用している間、VS Codeで言語機能が正しく機能します。
推奨拡張
- Roblox Luau LSPおよびLuau Language Server Companion - 言語機能(上記参照)
- selene - 静的コード分析(リンティング)
- StyLua - 自動コードフォーマット
同期ルール
子を持つインスタンスをディスク上のディレクトリと同期する際、Studioは自動的に子に対する作成、名前変更、移動、削除操作をディスク上の対応するファイルやフォルダーと同期します。このアプローチにより、個々のスクリプトで手動で同期を停止および開始することなく、コードを維持できます。
ディスク上で、スクリプト同期は異なるタイプのスクリプトを区別するために以下のルールを使用します。
| ディスク上の命名規則 | Studioのインスタンスタイプ |
|---|---|
| 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 | 子を持つスクリプトインスタンス。タイプ(*)は上記のルールによって決定されます。 |
設定
スクリプト同期には、Studio設定ウィンドウにいくつかの設定があります(AltSまたは⌥S)。デフォルトのオプションはほとんどのユースケースに適しています。
| 設定 | 説明 |
|---|---|
| プレースオープン時の自動再開 | プレースを開いたときにStudioが同期を再開するかどうか。 この設定を無効にすると、スクリプト同期の有用性が大幅に低下します。 |
| プレースオープン時の競合同期の再開 | プレースを開いたときにStudioが競合をどのように処理するか。デフォルトのオプションである再開しないは、データ損失を避けるために手動で競合を解決することを強制します。また、ディスク上のバージョンまたはStudioのバージョンを優先することも選択できます。 |
| 同期後のローカルファイル/ディレクトリを保持 | Studioでスクリプト同期 > 同期停止を選択した後のディスク上のファイルの扱い。 |
| ファイル拡張子 | ディスク上のスクリプトに使用するファイル拡張子。 |