ComfyUIのカスタムノード開発環境を構築する手順

## 環境

* Windows
* Python 3.12

:::note warn
2025年5月現在、ComfyUIのGitHubの [Manual Install](https://github.com/comfyanonymous/ComfyUI?tab=readme-ov-file#manual-install-windows-linux) の項目には、Pythonの推奨のバージョンは3.12となっています。
:::

## 開発環境の構築

[公式ドキュメント](https://docs.comfy.org/custom-nodes/walkthrough) に従い、[ComfyUI](https://github.com/comfyanonymous/ComfyUI) と [comfy-cli](https://github.com/Comfy-Org/comfy-cli) をインストールします。開発環境で使用するComfyUIについては、ドキュメントで手動インストールを勧めているのでそちらの手順を記載します。

### 仮想環境の構築

[uv](https://docs.astral.sh/uv/) でプロジェクトと仮想環境を作成し、アクティベートします。

```console:PowerShell
uv init --bare --python 3.12
uv venv --python 3.12
.venv\Scripts\activate.ps1
```

:::note warn
コマンドプロンプトでアクティベートする場合は ```ps1``` ファイルではなく ```bat``` ファイルを実行してください。

```console:CMD
.venv\Scripts\activate.bat
```
:::

### ComfyUIのclone

プロジェクトの直下にComfyUIのリポジトリをCloneします。

```console
git clone https://github.com/comfyanonymous/ComfyUI.git
```

### PyTorchのインストール

CUDAの依存関係を設定するために、以下の内容を ```pyproject.toml``` に追記します。

```toml
[tool.uv.sources]
torch = { index = "pytorch-cu126" }
torchvision = { index = "pytorch-cu126" }

[[tool.uv.index]]
name = "pytorch-cu126"
url = "https://download.pytorch.org/whl/cu126"
explicit = true
```

追記後、下記のコマンドで [PyTorch](https://pytorch.org/) をインストールします。

```console
uv add torch torchvision torchaudio
```

### ComfyUIの依存ライブラリのインストール

ComfyUIの依存ライブラリを ```ComfyUI\requirements.txt``` からインストールします。

```console
cd ComfyUI
pip install -r requirements.txt
```

また参考としてuvを使用して ```ComfyUI\requirements.txt``` の内容を ```pyproject.toml``` に追記しながらインストールする方法を紹介します。

```powershell:PowerShell
Get-Content ComfyUI\requirements.txt | Where-Object {$_ -notmatch "^#|^$"} | ForEach-Object { uv add $_ }
```

:::note warn
コマンドプロンプトの場合は下記のコマンドとなります。

```console:CMD
for /f "tokens=1 delims=#" %i in ('findstr /v "^#" ComfyUI\requirements.txt ^| findstr /v "^$"') do uv add %i
```
:::

```uv add``` を実行する場合、```requirements.txt``` のコメントと空行をスキップする必要があるため、判定の処理を入れています。

### コマンドラインツールのインストール

```console
uv add comfy-cli
```

コマンドラインツールのインストールまで完了すると、下記のコマンドでComfyUIが起動できるようになります。
```console
comfy launch
```

## カスタムノードについて

### 配置場所とサンプル

カスタムノードは ```ComfyUI/custom_nodes``` ディレクトリに配置することで使用できるようになります。また、このディレクトリにはサンプルとして ```example_node.py.example``` というファイルが同梱されており、```example_node.py``` にリネームすると ```Example Node``` として確認することができます。


### 開発用ディレクトリの作成

コマンドラインツールに ```node scaffold``` というコマンドがあり、こちらを使用すると開発用の初期ディレクトリを作成できます。

```console
cd ComfyUI\custom_nodes
comfy node scaffold
```

単一ファイルでもカスタムノードとして利用できますが、カスタムノードの公開を考えている場合は、上記のコマンドで初期ディレクトリを作成すると便利です。

ノードの公開方法の詳細は公式ドキュメントにまとめられています。
[Registry | Overview](https://docs.comfy.org/registry/overview)

### その他

公式ドキュメント以外では、標準で同梱されているノードのソースコードも、実装の参考になります。[ComfyUI/nodes.py](https://github.com/comfyanonymous/ComfyUI/blob/master/nodes.py) を見ると実装がわかるので、こちらと公式ドキュメントを照らし合わせながら作成を始めると良いかと思います。


## 参考

* [Develop Custom Nodes | Getting Started](https://docs.comfy.org/custom-nodes/walkthrough)
* [ComfyUI](https://github.com/comfyanonymous/ComfyUI)
* [comfy-cli](https://github.com/Comfy-Org/comfy-cli)
* [Registry | Overview](https://docs.comfy.org/registry/overview)
* [ComfyUI/nodes.py](https://github.com/comfyanonymous/ComfyUI/blob/master/nodes.py)