Capは、Loomの代替となるオープンソースのスクリーン録画ツールです。macOSとWindows向けのデスクトップアプリ、Chrome拡張機能、そしてWebダッシュボードをひとつのリポジトリで提供します。録画・編集・共有・自己ホスティングまでを一気通貫でカバーする構成です。
リポジトリはTurborepoによるモノレポで、apps/desktop(Tauri+Rust)、apps/cli、apps/chrome-extension、apps/webなどが並びます。録画やエクスポートのロジックはcrates/recording、crates/export、crates/editorなどのRustクレートに切り出され、CLIとデスクトップアプリの両方から共有されます。Instant Modeは録画中にアップロードを進め、停止と同時に共有リンクを発行します。Studio Modeはローカル録画後にエディターを開き、背景やズーム、字幕を編集してから書き出す流れです。Chrome拡張はservice-worker・offscreenドキュメント・content scriptを分離し、録画状態をchrome.storageで橋渡しします。自己ホストはdocker compose up -dでWeb・API・DB・メディアサーバー・オブジェクトストレージを一括起動します。Cargo.tomlはcpalやcidreなどをCapSoftwareのフォークに固定しており、macOS収録のための独自パッチが多く含まれています。
- STEP 01
git clone後にdocker compose up -dを実行すると、Web・API・DB・メディアサーバーがまとめて起動し、http://localhost:3000でCap Webにアクセスできます。
- STEP 02
メール未設定の場合はdocker compose logs cap-webでログイン用リンクをログから探す必要があり、初回はここで少し戸惑います。
- STEP 03
pnpm installとpnpm env-setup、pnpm cap-setupを順に実行すると、Node.js 20以上・pnpm 10.5.2・Rust 1.88以上・Dockerが揃っているか順にチェックされます。
- STEP 04
pnpm dev:desktopを試すと、TauriのRustビルドが走るため初回コンパイルに時間がかかり、macOSかWindows以外の環境では動作対象外だと分かります。
- STEP 05
apps/chrome-extensionでpnpm buildしてからpnpm test:e2eを実行すると、Playwrightがモックのcapサーバーを立てて録画からアップロードまでの一連の流れを検証します。
- STEP 06
cargo test -p <crate>で個別クレートのRustテストを回すと、recording・export・editorなど機能ごとに分離された設計を実感できます。
手元に残るのは、http://localhost:3000で動くセルフホスト版Cap Web、ビルド済みのデスクトップアプリバイナリ、そしてdist配下に出力されるChrome拡張機能一式です。CLIをビルドすれば、ターミナルから録画やアップロードを自動化するcapコマンドも得られます。
デスクトップアプリはmacOSとWindowsのみ対応で、README上でもLinuxデスクトップへの言及はありません。
本番運用時にはCAP_URLやS3_PUBLIC_URLなどの公開URLと初期シークレットの置き換えが必須で、これを怠るとセルフホスト環境がそのまま公開状態になります。
cpal・cidre・nokhwaなど主要なRust依存がCapSoftware独自フォークのgit参照に固定されており、通常のcrates.io版とは挙動が異なる可能性があります。
フル機能を試すにはRust 1.88以上・pnpm 10.5.2・Dockerなど複数のツールチェーンが必要で、環境構築の手間はそれなりに大きいです。
チームの録画データを自社インフラに置きたい、かつRust製デスクトップアプリとNext.js系Webダッシュボードの両方を運用してもよい体力がある開発チーム向けの選択肢です。Instant Modeでの即時共有とStudio Modeでの編集書き出しという2モード構成、Docker Composeによる自己ホスト手順、Turborepoでのクレート分割は、README・Cargo.toml・実装ファイルの内容から一貫して確認できます。実機で動かさなくても、構成の妥当性とセルフホスト運用の勘所はこの記述だけで十分に判断できます。