🕌
Dagster Workspace
普段使ってるツールの使ってない機能を使ってみる Advent Calendar 2025です。
Dagsterのドキュメント読み直したら、前はなかった(気がする)workspaceというページが増えてるので触ってみました。
workspaceとは
A workspace allows you to manage and orchestrate multiple Dagster projects together.
ということで、複数のプロジェクト(Asset定義とかの集まり)を管理する仕組みです。
触ってみる
- workspaceディレクトリを作成(create-dagster workspace)
- projectディレクトリを作成(create-dagster project)
するだけです。
workspaceの作成
> uvx create-dagster workspace dagster-workspace && cd dagster-workspace
コマンドを実行すると
- dg.toml
- ローカル実行用のuv環境の設定ファイル(pyproject.toml/uv.lcok)
- project/Code Locationの実行で使う環境は別です
> tree
.
├── deployments
│ └── local
│ ├── pyproject.toml
│ └── uv.lock
├── dg.toml
└── projects
projectの作成
せっかくなので二つ作ります。
uvx create-dagster project projects/project-1
uvx create-dagster project projects/project-2
それぞれのプロジェクト毎に
- uv環境(pyproject.toml/uv.lcok)
- definitions.py
が追加されます。
.
├── deployments
│ └── local
│ ├── pyproject.toml
│ └── uv.lock
├── dg.toml
└── projects
├── project-1
│ ├── pyproject.toml
│ ├── src
│ │ └── project_1
│ │ ├── __init__.py
│ │ ├── definitions.py
│ │ └── defs
│ │ ├── __init__.py
│ │ └── assets.py
│ ├── tests
│ │ └── __init__.py
│ └── uv.lock
└── project-2
├── pyproject.toml
├── src
│ └── project_2
│ ├── __init__.py
│ ├── definitions.py
│ └── defs
│ ├── __init__.py
│ └── assets.py
├── tests
│ └── __init__.py
└── uv.lock
18 directories, 25 files
起動
workspaceのuv環境でdg devコマンドで起動すると、projectをそれぞれ読み込んで起動できます。
> source deployments/local/.venv/bin/activate.fish
> dg dev
workspace内にあるprojectが、それぞれcode locationとして読み込めています。

なお、プロジェクト単位で起動することも出来ます。
> cd projects/project-1/
> source .venv/bin/activate.fish
# project-1のCode Locationだけが読み込める
> dg dev
workspace.yaml
create-dagster workspaceでworkspaceを作りましたが、それとは別にworkspace.yamlというものあります。
workspace.yamlも複数のCode Location(=project)を管理する設定ファイルで、dg devコマンドでもworkspace.yamlを一時的に作っているので、create-dagster workspaceはworkspace.yamlのラッパーと言えそうです。
Discussion