CompressO

動画・画像をローカルで圧縮する Tauri デスクトップアプリ(解説元: repos/compressO)

1 — 概要

CompressO(読みは Espresso に近い)は、動画・画像をオフラインで小さくするための無料オープンソースアプリ。フロントは React + Vite、シェルは Tauri 2、実際のエンコードは FFmpeg・pngquant・jpegoptim・gifski などプラットフォーム別のスタンドアロンバイナリが担当する(codeforreal1/compressO)。

Tauri 2デスクトップ
React 18UI
Offline通常時ネット不要
AGPL 3.0ライセンス

アプリ本体からの通信は原則なく、組み込みアップデート用途を除く。トリム・分割・バッチ・字幕・メタデータなど README 上の機能はフロント+ Tauri コマンド+ 外部ツールの組み合わせで実現している。

2 — アーキテクチャ

UI は TanStack Router でルート分割し、状態は Valtio。ネイティブ処理は Rust 側(src-tauri)に集約し、TypeScript から invoke で呼び出す。圧縮パイプラインは FFmpeg 等の sidecar を Rust が起動・制御するイメージ。

flowchart TD
  subgraph ui [フロントエンド]
    R[React + Vite]
    TR[TanStack Router]
    V[Valtio state]
  end
  subgraph shell [シェル]
    T[Tauri 2]
  end
  subgraph native [ネイティブ]
    RS[Rust core / commands]
  end
  subgraph tools [外部バイナリ]
    F[FFmpeg / ffprobe]
    P[pngquant / jpegoptim / gifski 等]
  end
  R --> T
  TR --> R
  V --> R
  T --> RS
  RS --> F
  RS --> P
      
3 — 技術スタック
領域 技術 メモ
デスクトップ Tauri 2 · Rust 2021 capabilities / plugins(dialog, fs, shell, updater 等)
フロント React 18 · Vite 6 · TypeScript HeroUI · Framer Motion · Tailwind 3
ルーティング TanStack Router src/routes/ ファイルベース
状態 Valtio proxy / useSnapshot
品質 Biome lint-staged · Husky
圧縮エンジン FFmpeg 等 バンドル third-party、LICENSES/ 参照
4 — 開発・ビルド

前提: Rust と Node.js、パッケージマネージャは pnpm(package.json)。

# Tauri 開発(アプリ全体)
pnpm tauri:dev

# フロントのみ(ポート 3001)
pnpm vite:dev

# 本番ビルド
pnpm tauri:build

# TS 型チェック
pnpm tsc:check

# Rust(src-tauri)
cd src-tauri && cargo clippy
5 — 配布・インストール
ファイル例 対象
CompressO_amd64.deb Debian 系(Ubuntu 等)
CompressO_amd64.AppImage Linux 汎用
CompressO_aarch64.dmg Apple Silicon Mac
CompressO_x64.dmg Intel Mac
CompressO_x64.msi Windows 64bit

Homebrew(macOS): brew install --cask codeforreal1/tap/compresso — 配布物の取得は Releases を参照。

6 — 注意・ライセンス
macOS: 開発者未検証・未 notarize のため Gatekeeper 警告が出る場合がある。README では xattr -cr /Applications/CompressO.app や Homebrew 利用が案内されている。

プロジェクトは AGPL 3.0。バンドルソフトの帰属は THIRD_PARTY_NOTICES.md を参照。