ワークスペース
ブランチ切り替えのコスト
Section titled “ブランチ切り替えのコスト”Unreal Engine プロジェクトで作業していると、「ちょっと別のブランチを見たい」という場面が頻繁に発生します。
- メイン機能を開発中に、緊急のバグ修正依頼が入る
- 自分の作業を進めながら、同僚の PR をレビューしたい
- 本番環境の問題調査のために、リリースブランチを確認したい
しかし、大規模プロジェクトではブランチ切り替えのコストが非常に高くなります:
- Editor の再起動: .uasset ファイルが変更されると Editor を閉じる必要がある
- シェーダーコンパイルやキャッシュの再生成: ブランチ間の差異によっては、キャッシュの再生成に長い時間がかかることもある
- 作業状態の喪失: 開いていたアセット、ウィンドウ配置、デバッグ設定がリセット
「ちょっと確認するだけ」のために30分待つのは現実的ではありません。結果として、ブランチ切り替えを避けるようになり、開発の柔軟性が失われていきます。
ワークスペースによる解決
Section titled “ワークスペースによる解決”ワークスペース機能は、Git worktree を活用して複数のブランチを同時に展開します。
- 並行作業: 複数のブランチをそれぞれ独立したフォルダで展開
- 状態の保持: 各ワークスペースの DCC やシェーダー・C++ のコンパイル結果を維持
- 即座の行き来: ファイルのチェックアウトなしで行き来できる
ディレクトリ構成
Section titled “ディレクトリ構成”Textil Workspace では、Git worktree を活用して以下のような構成になります:
各ワークスペースは独立したディレクトリですが、.bare/ 内の Git オブジェクトを共有しています。
クローンとの比較
Section titled “クローンとの比較”別ブランチで作業するために、リポジトリを複数回クローンする方法もあります。しかし、大規模プロジェクトではディスク使用量が問題になります。
| 方式 | Git オブジェクト | 作業ファイル |
|---|---|---|
| 複数クローン | ブランチ数分 | ブランチ数分 |
| ワークスペース | 1つを共有 | ブランチ数分 |
作業ファイル(チェックアウトしたファイル)はどちらの方式でも同じだけ必要ですが、Git オブジェクトと LFS ファイルのキャッシュはワークスペース間で共有されます。
ワークスペース一覧
Section titled “ワークスペース一覧”ワークスペースパネルでは、現在のリポジトリに関連するすべてのワークスペースを確認できます。
| 項目 | 説明 |
|---|---|
| 名前 | ワークスペースの識別名 |
| ブランチ | チェックアウトされているブランチ |
| パス | ワークスペースのディレクトリパス |
| 状態 | 変更の有無(クリーン / 変更あり) |
現在アクティブなワークスペースはハイライト表示されます。
ワークスペースを作成する
Section titled “ワークスペースを作成する”- ワークスペースパネルの + ボタンをクリック
- ワークスペース名を入力
- チェックアウトするブランチを選択
- 作成先のディレクトリを選択(または自動)
- 作成 をクリック
ワークスペースを切り替える
Section titled “ワークスペースを切り替える”- ワークスペース一覧で切り替え先をクリック
- 選択したワークスペースがアクティブになる
- ファイル一覧や差分ビューが切り替わる
切り替えは即座に完了し、ファイルのチェックアウトは発生しません。
ワークスペースで作業する
Section titled “ワークスペースで作業する”各ワークスペースは独立した作業ディレクトリとして機能します:
- ファイル編集: 通常のリポジトリと同様に編集可能
- コミット: 各ワークスペースで独立してコミット
- プッシュ: 変更をリモートにプッシュ
- プル: リモートの変更を取得
ワークスペースを削除する
Section titled “ワークスペースを削除する”- 削除したいワークスペースを右クリック
- ワークスペースを削除 を選択
- 確認ダイアログで 削除 をクリック
ブランチとワークスペース
Section titled “ブランチとワークスペース”新しいブランチの作成
Section titled “新しいブランチの作成”ワークスペース作成時に、既存のブランチを選択するか、新しいブランチを作成できます:
- 既存のブランチ: ドロップダウンから選択
- 新規ブランチ: ブランチ名を入力して作成
ブランチの制約
Section titled “ブランチの制約”1つのリポジトリ内で、同じブランチを複数のワークスペースでチェックアウトすることはできません。
✅ workspace-a: main✅ workspace-b: feature/login✅ workspace-c: feature/settings❌ workspace-d: main (mainは既にworkspace-aで使用中)異なるブランチを作業するためにワークスペースを使い分けてください。
ユースケース
Section titled “ユースケース”機能開発とバグ修正の並行
Section titled “機能開発とバグ修正の並行”メインの機能開発を進めながら、緊急のバグ修正に対応する場合:
feature/new-uiブランチで機能開発中- 緊急バグ報告が入る
- 新しいワークスペースを
hotfix/critical-bugで作成 - バグを修正してコミット・プッシュ
- 元のワークスペースに戻って機能開発を継続
Editor の再起動やシェーダー再コンパイルを待つことなく、即座に作業を切り替えられます。
レビューと開発の分離
Section titled “レビューと開発の分離”コードレビューを行いながら、自分の開発を続ける場合:
feature/my-workで自分の開発feature/teammate-prのワークスペースを作成してレビュー- レビュー完了後、自分の開発ワークスペースに戻る
複数バージョンの同時テスト
Section titled “複数バージョンの同時テスト”異なるバージョンを同時にテストする場合:
release/v1.0のワークスペースrelease/v2.0のワークスペース- それぞれの Editor で動作確認
Unreal Editor との連携
Section titled “Unreal Editor との連携”ワークスペースを Unreal Editor で開く場合、各ワークスペースの .uproject ファイルを別々に開きます:
D:\Projects\MyGame\ <- main ブランチD:\Projects\MyGame-feature\ <- feature ブランチ各ワークスペースで別々の Editor インスタンスを起動できます。これにより:
- シェーダーキャッシュが各ワークスペースで保持される
- 同時に複数バージョンを実行可能