OpenCutのアーキテクチャと技術スタック
OpenCutは、MITライセンスで提供されるオープンソースの動画編集プロジェクトです。最大の特徴は、Rustで記述されたコアエンジンがWeb、デスクトップ、モバイルのマルチプラットフォームを駆動するアーキテクチャにあります。本記事では、Moonツールチェーンを活用したローカル開発環境のセットアップと、現在のリポジトリ構造について技術的な観点から解説します。
ツールチェーンの導入とワークスペースの初期化
プロジェクトはMoonによるモノレポ構成で管理されています。まず、リポジトリのクローンとプロトコルツールの導入を行います。環境変数やスクリプトを整理して、セットアップを効率化します。
#!/usr/bin/env bash
set -e
REPOSITORY_URL="https://gitcode.com/GitHub_Trending/ap/OpenCut.git"
WORKSPACE_NAME="opencut-dev-env"
git clone "${REPOSITORY_URL}" "${WORKSPACE_NAME}"
cd "${WORKSPACE_NAME}"
# proto CLIのインストールとツールチェーンの同期
curl -fsSL https://moonrepo.dev/install/proto.sh | bash
proto use
proto use コマンドを実行すると、.prototools にロックされたバージョンに基づいて、Node.js、Bun、Rustなどの依存関係が自動的に解決されます。
Webフロントエンドの起動とルーティング構造
Webエディターの骨格を起動します。React 19とTailwind CSS 4、そしてshadcn/uiをベースとした50以上のコンポーネントが apps/web/src/components/ui/ 配下に既に整備されています。
Moonのタスク定義は以下のようなYAML構造で管理されており、フロントエンドとバックエンドの開発サーバーを個別に立ち上げることができます。
# .moon/tasks.yml におけるタスク定義の構造例
tasks:
frontend:dev:
command: 'vite'
args: ['dev']
env:
VITE_PORT: '5173'
backend:dev:
command: 'wrangler'
args: ['dev']
env:
API_PORT: '8787'
ルーティングはTanStack Routerによるファイルベースルーティングで構成されており、apps/web/src/routes/ 配下に配置されます。現在は index.tsx や editor.tsx にプレースホルダーが配置されていますが、今後のエディター機能はこのファイル構造にマウントされていきます。
Rustデスクトップクライアントのビルド要件
GPUIフレームワークを使用したデスクトップアプリケーションのビルド手順です。OSごとのシステム依存関係を解決する必要があります。
- macOS: Xcodeコマンドラインツール(Metalレンダリング用)
- Windows: 追加の依存関係なし
- Linux:
libvulkan1、Vulkanドライバ、libwayland-dev、libx11-xcb-dev、libxkbcommon-x11-dev、libfontconfig-dev、およびCツールチェーンとcmake
依存関係が揃ったら、以下のMakefileを介してRustバイナリのコンパイルと実行を行います。
# apps/desktop/Makefile
.PHONY: build check dev
dev:
cargo run --bin opencut-desktop
check:
cargo check --all-targets
build:
cargo build --release
初回のビルドではGPUIのソースコンパイルが含まれるため、Webフロントエンドよりも大幅に長いビルド時間がかかります。
モノレポ構成と今後の技術ロードマップ
リポジトリは以下のようにクリーンに分割されています。
apps/web: TanStack Routerを使用したエディターフロントエンドapps/api: Cloudflare Workers上で動作するバックエンドAPIapps/desktop: RustとGPUIで構築されたデスクトップアプリケーション
今後の開発ロードマップには、Editor APIの公開、サードパーティプラグインシステム、Rustによる単一コードベースでの三端共用、AIエージェント向けのMCPサーバー、自動化およびバッチレンダリング用のヘッドレスモード、そしてエディター内スクリプトタブの実装が含まれています。