さとまたwiki

最終推奨プラン

最もシンプルで、Windows/Linux両対応、最小コードで開発する方法

評価基準

以下の基準で、技術スタックの前提なく純粋に評価しました:

1

コード量の少なさ

2

Windows/Linux両対応

3

Claude Code処理速度

4

依存関係の少なさ

全アプローチ比較

アプローチコード量Win/LinuxClaude速度総合評価
Python + DearPyGui + FFmpeg500-1500行完璧最速最推奨
Python + MoviePy v2 + Tkinter300-800行完璧最速推奨
Python + Flet + FFmpeg400-1200行完璧最速NEW
Rust + egui + FFmpeg1000-3000行完璧中速検討可
LosslessCut フォーク(Electron)既存3万行完璧速い推奨
Tauri + SvelteKit + Rust2000-5000行完璧遅い非推奨
Web (ffmpeg.wasm)1000-2000行完璧速い制限あり

最推奨: Python + DearPyGui + FFmpeg

なぜこれが最もシンプルか

  • ・ Python = Claude Codeが最も高速に処理できる言語
  • ・ DearPyGui = C++ベースで高速、即時モードGUI、シンプルなAPI
  • ・ FFmpeg = subprocess で呼び出すだけ(10行程度)
  • ・ 単一言語 = デュアル言語の複雑さなし
  • ・ Windows/Linux/macOS = 完全対応

必要なもの

pip install dearpygui
# FFmpegはシステムにインストール

コード量の目安

  • ・ GUI基盤: ~100行
  • ・ 動画プレビュー: ~150行
  • ・ タイムライン: ~200行
  • ・ FFmpegラッパー: ~50行
  • ・ エクスポート: ~100行
  • 合計: 約600行

# 最小限の動画エディタ例(約50行で動作)

import dearpygui.dearpygui as dpg
import subprocess

dpg.create_context()

def cut_video(input_path, output_path, start, end):
    subprocess.run([
        'ffmpeg', '-i', input_path,
        '-ss', str(start), '-to', str(end),
        '-c', 'copy', output_path
    ])

def on_export():
    cut_video(input_file, "output.mp4", start_time, end_time)

with dpg.window(label="Video Editor", width=800, height=600):
    dpg.add_text("Simple Video Editor")
    dpg.add_input_text(label="Input", tag="input_file")
    dpg.add_slider_float(label="Start", tag="start", max_value=100)
    dpg.add_slider_float(label="End", tag="end", max_value=100)
    dpg.add_button(label="Export", callback=on_export)

dpg.create_viewport(title='Video Editor', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

代替案A: Python + MoviePy v2 + Tkinter

さらにシンプルを追求する場合

MoviePy v2.0(2025年に大規模アップデート、最新v2.2.1)は動画処理を抽象化し、FFmpegコマンドを書く必要がない。 TkinterはPython標準ライブラリなので追加インストール不要。

# MoviePy v2 構文(v1から破壊的変更あり)
from moviepy import VideoFileClip
import tkinter as tk

def cut_and_export():
    clip = VideoFileClip(input_path)
    cut_clip = clip.subclipped(start_time, end_time)  # v2ではsubclipped
    cut_clip.write_videofile("output.mp4")

# Tkinter GUI(約30行で動作)
root = tk.Tk()
root.title("Video Editor")
tk.Button(root, text="Cut & Export", command=cut_and_export).pack()
root.mainloop()

メリット

  • ・ 追加インストール: MoviePyのみ
  • ・ FFmpegコマンド不要
  • ・ 最小コード(30行〜)
  • NEW: v2でAPI改善・高速化

デメリット

  • ・ TkinterのUIは古い見た目
  • ・ リアルタイムプレビューが難しい
  • ・ v1からの移行には注意が必要

代替案A2: Python + Flet + FFmpeg NEW 2025

FlutterベースのモダンPython GUI

FletはGoogle FlutterをPythonから使えるようにしたフレームワーク。 Tkinterより遥かにモダンなUIを、Dart/JavaScript不要で構築可能。 Web、デスクトップ、モバイルすべてに対応。

import flet as ft
import subprocess

def main(page: ft.Page):
    page.title = "Video Editor"
    page.theme_mode = ft.ThemeMode.DARK

    def cut_video(e):
        subprocess.run([
            'ffmpeg', '-y', '-i', input_field.value,
            '-ss', start_field.value, '-to', end_field.value,
            '-c', 'copy', 'output.mp4'
        ])
        status.value = "完了!"
        page.update()

    input_field = ft.TextField(label="入力ファイル", value="input.mp4")
    start_field = ft.TextField(label="開始(秒)", value="0")
    end_field = ft.TextField(label="終了(秒)", value="10")
    status = ft.Text()

    page.add(
        input_field, start_field, end_field,
        ft.ElevatedButton("カット実行", on_click=cut_video),
        status
    )

ft.app(target=main)

メリット

  • 美しいモダンUI(Material Design)
  • ・ Web/デスクトップ/モバイル全対応
  • ・ ホットリロードで高速開発
  • ・ NumPy, OpenCV等との連携可

デメリット

  • ・ DearPyGuiより若いプロジェクト
  • ・ ノードエディタ等の特殊UIは自作
  • ・ パッケージサイズがやや大きい

pip install flet

公式: flet.dev

代替案B: Rust + egui + FFmpeg

単一バイナリを配布したい場合

Rustで書くと、Python環境不要の単一実行ファイルを配布できる。 eguiは即時モードGUIで、シンプルなAPIを持つ。

メリット

  • ・ 単一バイナリ(依存なし配布)
  • ・ 高パフォーマンス
  • ・ Windows/Linux完全対応

デメリット

  • ・ Claude Code処理がPythonより遅い
  • ・ コード量が多くなりがち
  • ・ コンパイル時間が長い

実体験からの警告: Tauri + SvelteKit

以前推奨していたが、実際に問題が発生

Tauri + SvelteKitで動画編集ソフトを開発し、統合・デプロイ・起動まで成功。 しかしClaude Code CLIで編集しようとすると非常に時間がかかり、実用的でなかった

問題1

TypeScript + Rust のデュアル言語

問題2

Rustコンパイル時間(2-5分)

問題3

コンテキスト消費が膨大

最終結論

1

ゼロから最速で作る → Python + DearPyGui

最小コード、最速開発、Claude Codeとの相性最高。 高機能なGUIも構築可能。

2

既存OSSを拡張 → LosslessCut フォーク

既に動作する3万行のコードベース。 TypeScript単一言語でClaude Codeも快適。

3

単一バイナリ配布 → Rust + egui

Python環境不要の配布が必要な場合。 ただしClaude Codeは遅くなる。

×

避けるべき → Tauri + SvelteKit + Rust

デュアル言語がClaude Codeのボトルネックになる。 実体験で確認済み。

次のステップ

Python + DearPyGui で始める場合:

  1. 1. pip install dearpygui でインストール
  2. 2. FFmpegをシステムにインストール(Windows: winget、Linux: apt/dnf)
  3. 3. 上記のサンプルコードから開始
  4. 4. Claude Codeに「動画プレビュー機能を追加して」と依頼

この記事はClaude Opus 4.6によって作成されました