← ブログに戻る

OpenCutセットアップ難民は、まずopencut.appを開いてください — ローカル起動の3つの罠

OpenCutをローカルで動かそうとして詰まっている人向けに、先に結論を書きます。

opencut.app をブラウザで開いてください。それで済みます。

63.8k stars を集めているこの動画エディタは、いま「新版に書き直す」フェーズにあります。今日 GitHub からクローンしてローカルで起動しても、表示されるのは動画エディタではなく hello world! というテキスト1行です。私は昨日それを確かめてきました。

OpenCut は今どういう状態か

OpenCut は CapCut の代替を狙う MIT ライセンスの動画エディタです。2025年6月に登場してから1年で 63.8k stars を集めました。CapCut の中国資本懸念と機能の有料化で乗り換え需要が高いタイミングと、ちょうど噛み合った形です。

ただし、開発チームは2026年5月末に「新版に書き直す」と宣言しました (Issue #811)。理由はロードマップに載っている機能を見ると分かります。

  • Editor API
  • Third-party plugin
  • Desktop / Mobile / Browser を1つのコードベースから (Rust core)
  • MCP サーバー (AI agent 向け)
  • ヘッドレスモード (自動化、バッチレンダリング)
  • スクリプティングタブ

これらを既存の UI 密結合コードに後から乗せるのは無理なので、エンジンとUIを分離するところからやり直す、という決定です。プラグイン優先のアーキテクチャに書き換えるための本気の作業なので、書き直しは短くない期間かかります。タイムラインは公式にも「無い」と書かれています。

現状の整理はこうなります。

ドメイン中身
opencut.app旧版が稼働中。動画編集が普通にできる
new.opencut.app書き直し版。UI はまだ空
GitHub opencut-app/opencut書き直し版のコード置き場
GitHub opencut-app/opencut-classic旧版のコード (archived)

「新版が来るまで opencut.app が旧版を配信し続ける」というのが公式アナウンスです。動画を編集したいだけなら、いま GitHub を触る必要は一切ありません。

それでもローカルで動かしたい人へ

この記事にたどり着いた方は、たぶん「ローカルで動かしたい理由」がある人です。フォークして MCP を先取りしたい、社内で自前ホストしたい、プラグイン設計に興味がある、あたりだと思います。私も同じ理由で触りに行きました。

書き直し版を実際に立ち上げると、web / api dev server は動きます。デスクトップはビルドまで通ります。ただし UI はこの通りです。

OpenCut新版のローカル起動画面。左上に「hello world!」の一行、下部にTanStack Routerのdevtoolsパネルだけが表示されている

ルーターと開発ツールだけが真面目に動いています。動画エディタとしての UI はまだ存在しません。

このスクリーンショットを撮るまでに、私は3つの罠を踏みました。同じ穴に落ちたくない人向けに残しておきます。

罠① Node.js のバージョンがピンされていない

セットアップ用の .prototools はこう書かれています。

moon = "2.3.3"
bun  = "1.3.11"
rust = "1.97.0"

moon と bun と rust だけです。node がありません。

moon run web:dev を叩くと、内部で vite が起動します。この vite 8 系は Node.js の node:module.registerHooks を要求します。この API が入ったのは Node.js 22.15 からです。

手元に古い node が入っていると素直に踏み抜きます。私の環境では volta 経由の v20.19.1 が拾われて、次のエラーで止まりました。

SyntaxError: The requested module 'node:module'
does not provide an export named 'registerHooks'
    at loadConfigFromBundledFile

対処は proto で node 22 を追加インストールして、PATH を差し替えるだけです。

proto install node 22
export PATH="$HOME/.proto/tools/node/22.23.1/bin:$PATH"

理想は .prototoolsnode = "22" を追加する PR を上流に送ることですが、OpenCut は現在 外部contribution 停止中 (アーキ設計中で「clear direction が出るまで受けない」と書かれています) なので、いまはローカルで潰す方が早いです。書き直しが終わって PR を受け付ける状態になったら、この一行追加を送ろうと思っています。

罠② installDependencies: true は初回clone直後には効かない

.moon/toolchains.yml はこう書かれています。

javascript: {}
bun:
  version: '1.3.11'
  installDependencies: true
rust: {}

installDependencies: true を素直に読むと、「lockfile 変更を検知して自動で bun install してくれる」機能に見えます。moon のドキュメントにもそう書いてあります。

しかし、初回clone直後、lockfile が未生成の状態では発火しません。既に lockfile がある状態で差分を検知して足りないパッケージを追加する、という挙動に見えます。ゼロから作らせる方向には動きません。

初回だけは、各アプリで明示的に叩きます。

(cd apps/web && bun install)   # 654 packages / 5s
(cd apps/api && bun install)   #  54 packages / 0.8s

これで dev server が起動します。CI 側は lockfile がコミット済みのはずなので問題ありませんが、fresh clone 時の一発目だけ引っかかります。この挙動は「無いものは何もできない」というだけの話ですが、README のセットアップ手順に bun install が書かれていないので、初見では素直に踏みます。

罠③ WSLg で GPUI が Wayland socket を見失う

デスクトップ版を試すと、追加のハマりが待っています。ビルドは通ります。実行が通りません。

$ ./target/release/opencut-desktop
thread 'main' panicked at gpui-0.2.2/src/platform/linux/wayland/client.rs:449:49:
called `Result::unwrap()` on an `Err` value: NoCompositor

WSLg (Windows 側から WSL の GUI を出す仕組み) は Wayland socket を /mnt/wslg/runtime-dir/wayland-0 に置いています。一方で XDG_RUNTIME_DIR/run/user/1000/ を指しています。GPUI (Zed が使っている GUI ライブラリ) は XDG_RUNTIME_DIR を見に行くので、socket を見つけられません。

環境変数を差し替えると panic は消えます。

XDG_RUNTIME_DIR=/mnt/wslg/runtime-dir ./target/release/opencut-desktop

しかしここで動くのはプロセスが起動するところまでです。プロセスは常駐しますが、Windows 側にウィンドウが出ません。weston.log にも該当イベントは記録されず、X の window tree にも OpenCut は現れません。GPUI と WSLg の compositor の握手が途中で止まっているか、window mapping まで至らずに内部でスタックしている、という状態です。

ここは深追いしませんでした。macOS か Linux ネイティブなら普通に開くはずです (README も “just a window that opens” とだけ書いてあります)。WSL2 の人は、いまはデスクトップ版を諦めて web 版 dev server を触るのが実利があります。

動くところまでの最短コマンド

上の3つを踏み終わってから叩けば、下記が最短です。

# 一回きり
bash <(curl -fsSL https://moonrepo.dev/install/proto.sh)
export PATH="$HOME/.proto/shims:$HOME/.proto/bin:$PATH"
proto use
proto install node 22
export PATH="$HOME/.proto/tools/node/22.23.1/bin:$PATH"
(cd apps/web && bun install)
(cd apps/api && bun install)

# 起動
moon run web:dev  # http://localhost:5173  ← "hello world!"
moon run api:dev  # http://localhost:8787  ← {"status":"ok"}

デスクトップは Ubuntu の場合、追加で apt パッケージが要ります。

sudo apt-get install -y libwayland-dev libx11-xcb-dev \
    libxkbcommon-x11-dev libfontconfig-dev cmake
moon run desktop:build  # release で 2分39秒でした

これを動かして何が得られるか

正直に書きます。現時点では、あまり得るものがありません。

web dev server で見えるのは hello world! の一行と TanStack Router の devtools だけです。API dev server は elysia が {"status":"ok"} を返すだけです。デスクトップは (WSL でなければ) 空のウィンドウが開くだけです。

書き直し版のロードマップ (Issue #811) を見ると、今から実装されていくのはこの順番です。

  • Engine Core (データモデル、状態、レンダリング)
  • Editor API 設計
  • Plugin API 設計
  • Plugin ホスト (sandbox、ライフサイクル、イベントルーティング)
  • プロジェクトストレージ
  • Web UI
  • 組み込みプラグイン
  • ヘッドレスモード
  • MCP サーバー
  • スクリプティング
  • デスクトップ UI (GPUI)
  • Android / iOS
  • パブリックベータ

つまり、動画編集の中身が Rust core に集約されて、Web / Desktop / Mobile がその上に載る形になります。上から順に実装が進んでいくので、いま触ってもエディタは触れませんが、コア設計や Editor API 設計に近い場所にはいることになります。

私が触った理由

「MCP サーバー」がロードマップに載っていたからです。

いま Claude Code や Claude Desktop から動画エディタを操作しようとすると、選択肢がほぼ無い状態です。プロプライエタリの CapCut/Premiere/DaVinci には外部から差し込む口がありません。OSS の動画エディタでも MCP 対応を公式に予定しているのは私が調べた限り OpenCut だけです。書き直しが終われば「AI から動画編集を叩ける」土台が公式で出てきます。

その公式リリースまでの空白を埋めるために、旧版 (classic) を fork して MCP を先取り実装する記事シリーズを準備中です。今回の記事はその 0 本目という位置づけで、書き直し版が現時点でどこまで来ているかの実測ログでした。

MCP 側の話は、MCPで私が踏んだ地雷7つ — 実装と実測ログ接続したMCPサーバーの38%は認証なしだった で書いています。動画エディタに MCP を差し込む場合、権限昇格系の攻撃面が新しく出てくる (プロジェクトファイル読み書き、レンダリング処理の乗っ取り) ので、実装記事の前段としてこの2本を読んでおくと構えができます。

まとめ

  • OpenCut を「動画編集したい」だけの理由で触るなら、opencut.app を開いてください
  • ローカルで動かして何かしたい人だけ、この記事を頼りにセットアップしてください
  • 罠は3つ: Node 22.15+ を明示 / bun install を各アプリで明示 / WSLg では Wayland socket を差し替え
  • 書き直し版はまだ hello world! 段階。ウォッチ目的なら Issue #811 を購読するだけで十分です
  • 本気で触るなら旧版 (opencut-classic) を fork する方が UI がある分、遊べます

MCP を旧版に先取りで入れる話は、シリーズ次の記事で書きます。