コンテンツにスキップ

ワークスペース

Unreal Engine プロジェクトで作業していると、「ちょっと別のブランチを見たい」という場面が頻繁に発生します。

  • メイン機能を開発中に、緊急のバグ修正依頼が入る
  • 自分の作業を進めながら、同僚の PR をレビューしたい
  • 本番環境の問題調査のために、リリースブランチを確認したい

しかし、大規模プロジェクトではブランチ切り替えのコストが非常に高くなります:

  • Editor の再起動: .uasset ファイルが変更されると Editor を閉じる必要がある
  • シェーダーコンパイルやキャッシュの再生成: ブランチ間の差異によっては、キャッシュの再生成に長い時間がかかることもある
  • 作業状態の喪失: 開いていたアセット、ウィンドウ配置、デバッグ設定がリセット

「ちょっと確認するだけ」のために30分待つのは現実的ではありません。結果として、ブランチ切り替えを避けるようになり、開発の柔軟性が失われていきます。

ワークスペース機能は、Git worktree を活用して複数のブランチを同時に展開します。

  • 並行作業: 複数のブランチをそれぞれ独立したフォルダで展開
  • 状態の保持: 各ワークスペースの DCC やシェーダー・C++ のコンパイル結果を維持
  • 即座の行き来: ファイルのチェックアウトなしで行き来できる

Textil Workspace では、Git worktree を活用して以下のような構成になります:

Textil Workspace のディレクトリ構成

各ワークスペースは独立したディレクトリですが、.bare/ 内の Git オブジェクトを共有しています。

別ブランチで作業するために、リポジトリを複数回クローンする方法もあります。しかし、大規模プロジェクトではディスク使用量が問題になります。

方式Git オブジェクト作業ファイル
複数クローンブランチ数分ブランチ数分
ワークスペース1つを共有ブランチ数分

作業ファイル(チェックアウトしたファイル)はどちらの方式でも同じだけ必要ですが、Git オブジェクトと LFS ファイルのキャッシュはワークスペース間で共有されます。

ワークスペースパネルでは、現在のリポジトリに関連するすべてのワークスペースを確認できます。

ワークスペース一覧パネル

項目説明
名前ワークスペースの識別名
ブランチチェックアウトされているブランチ
パスワークスペースのディレクトリパス
状態変更の有無(クリーン / 変更あり)

現在アクティブなワークスペースはハイライト表示されます。

新規ワークスペース作成ダイアログ

  1. ワークスペースパネルの + ボタンをクリック
  2. ワークスペース名を入力
  3. チェックアウトするブランチを選択
  4. 作成先のディレクトリを選択(または自動)
  5. 作成 をクリック
  1. ワークスペース一覧で切り替え先をクリック
  2. 選択したワークスペースがアクティブになる
  3. ファイル一覧や差分ビューが切り替わる

切り替えは即座に完了し、ファイルのチェックアウトは発生しません。

各ワークスペースは独立した作業ディレクトリとして機能します:

  • ファイル編集: 通常のリポジトリと同様に編集可能
  • コミット: 各ワークスペースで独立してコミット
  • プッシュ: 変更をリモートにプッシュ
  • プル: リモートの変更を取得
  1. 削除したいワークスペースを右クリック
  2. ワークスペースを削除 を選択
  3. 確認ダイアログで 削除 をクリック

ワークスペース作成時に、既存のブランチを選択するか、新しいブランチを作成できます:

  • 既存のブランチ: ドロップダウンから選択
  • 新規ブランチ: ブランチ名を入力して作成

1つのリポジトリ内で、同じブランチを複数のワークスペースでチェックアウトすることはできません。

✅ workspace-a: main
✅ workspace-b: feature/login
✅ workspace-c: feature/settings
❌ workspace-d: main (mainは既にworkspace-aで使用中)

異なるブランチを作業するためにワークスペースを使い分けてください。

メインの機能開発を進めながら、緊急のバグ修正に対応する場合:

  1. feature/new-ui ブランチで機能開発中
  2. 緊急バグ報告が入る
  3. 新しいワークスペースを hotfix/critical-bug で作成
  4. バグを修正してコミット・プッシュ
  5. 元のワークスペースに戻って機能開発を継続

Editor の再起動やシェーダー再コンパイルを待つことなく、即座に作業を切り替えられます。

コードレビューを行いながら、自分の開発を続ける場合:

  1. feature/my-work で自分の開発
  2. feature/teammate-pr のワークスペースを作成してレビュー
  3. レビュー完了後、自分の開発ワークスペースに戻る

異なるバージョンを同時にテストする場合:

  1. release/v1.0 のワークスペース
  2. release/v2.0 のワークスペース
  3. それぞれの Editor で動作確認

ワークスペースを Unreal Editor で開く場合、各ワークスペースの .uproject ファイルを別々に開きます:

D:\Projects\MyGame\ <- main ブランチ
D:\Projects\MyGame-feature\ <- feature ブランチ

各ワークスペースで別々の Editor インスタンスを起動できます。これにより:

  • シェーダーキャッシュが各ワークスペースで保持される
  • 同時に複数バージョンを実行可能