最終推奨プラン
最もシンプルで、Windows/Linux両対応、最小コードで開発する方法
評価基準
以下の基準で、技術スタックの前提なく純粋に評価しました:
1
コード量の少なさ
2
Windows/Linux両対応
3
Claude Code処理速度
4
依存関係の少なさ
全アプローチ比較
| アプローチ | コード量 | Win/Linux | Claude速度 | 総合評価 |
|---|---|---|---|---|
| Python + DearPyGui + FFmpeg | 500-1500行 | 完璧 | 最速 | 最推奨 |
| Python + MoviePy v2 + Tkinter | 300-800行 | 完璧 | 最速 | 推奨 |
| Python + Flet + FFmpeg | 400-1200行 | 完璧 | 最速 | NEW |
| Rust + egui + FFmpeg | 1000-3000行 | 完璧 | 中速 | 検討可 |
| LosslessCut フォーク(Electron) | 既存3万行 | 完璧 | 速い | 推奨 |
| Tauri + SvelteKit + Rust | 2000-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
コンテキスト消費が膨大
最終結論
ゼロから最速で作る → Python + DearPyGui
最小コード、最速開発、Claude Codeとの相性最高。 高機能なGUIも構築可能。
既存OSSを拡張 → LosslessCut フォーク
既に動作する3万行のコードベース。 TypeScript単一言語でClaude Codeも快適。
単一バイナリ配布 → Rust + egui
Python環境不要の配布が必要な場合。 ただしClaude Codeは遅くなる。
避けるべき → Tauri + SvelteKit + Rust
デュアル言語がClaude Codeのボトルネックになる。 実体験で確認済み。
次のステップ
Python + DearPyGui で始める場合:
- 1.
pip install dearpyguiでインストール - 2. FFmpegをシステムにインストール(Windows: winget、Linux: apt/dnf)
- 3. 上記のサンプルコードから開始
- 4. Claude Codeに「動画プレビュー機能を追加して」と依頼
参考リンク: