さとまたwiki
最推奨

Python + DearPyGui + FFmpeg

最もシンプルで、Claude Codeと最も相性が良いアプローチ

なぜこのアプローチを推奨するか

Claude Code処理速度: 最速

PythonはClaude Codeが最も得意とする言語。コード生成・理解が高速。

コード量: 500-1500行

基本的な動画エディタが500行程度で実装可能。全体を把握しやすい。

単一言語

Python1言語で完結。デュアル言語(TypeScript + Rust等)の複雑さがない。

クロスプラットフォーム

Windows, Linux, macOS全てで問題なく動作。

DearPyGuiとは

DearPyGuiは、Pythonで高速なGUIを作成するためのライブラリです。 C++で書かれたDear ImGuiをPythonから使えるようにしたものです。

高速

C++ベースなのでTkinterより圧倒的に高速。動画プレビューもスムーズ。

シンプルなAPI

即時モードGUI。状態管理が簡単で、コード量が少なくて済む。

見た目がモダン

Tkinterと違い、現代的なUIを構築可能。ダークモード対応。

インストール

# DearPyGuiをインストール

pip install dearpygui

# FFmpegは別途インストール(Windows)

winget install ffmpeg

最小構成の動画エディタ

以下のコードで基本的な動画カット機能を持つエディタが動きます(約30行):

import dearpygui.dearpygui as dpg
import subprocess

dpg.create_context()

def cut_video():
    input_file = dpg.get_value("input")
    output_file = dpg.get_value("output")
    start = dpg.get_value("start")
    end = dpg.get_value("end")

    subprocess.run([
        'ffmpeg', '-y',
        '-i', input_file,
        '-ss', str(start),
        '-to', str(end),
        '-c', 'copy',
        output_file
    ])
    dpg.set_value("status", "完了!")

with dpg.window(label="Video Editor", width=500, height=300):
    dpg.add_input_text(label="入力ファイル", tag="input", default_value="input.mp4")
    dpg.add_input_text(label="出力ファイル", tag="output", default_value="output.mp4")
    dpg.add_input_float(label="開始(秒)", tag="start", default_value=0)
    dpg.add_input_float(label="終了(秒)", tag="end", default_value=10)
    dpg.add_button(label="カット実行", callback=cut_video)
    dpg.add_text("", tag="status")

dpg.create_viewport(title='Simple Video Editor', width=520, height=350)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

機能拡張の例

動画プレビュー追加

DearPyGuiのraw textureを使ってフレームを表示できます。

# OpenCVで動画フレームを取得してDearPyGuiに表示
import cv2
import numpy as np

cap = cv2.VideoCapture("input.mp4")
ret, frame = cap.read()
# frameをDearPyGuiのtextureに変換して表示

ファイルダイアログ

def select_file(sender, app_data):
    dpg.set_value("input", app_data['file_path_name'])

dpg.add_file_dialog(
    callback=select_file,
    file_count=1,
    show=False,
    tag="file_dialog"
)
dpg.add_button(label="ファイル選択",
    callback=lambda: dpg.show_item("file_dialog"))

進捗バー

dpg.add_progress_bar(tag="progress", default_value=0.0)

# FFmpegの進捗を解析して更新
# -progress pipe:1 オプションを使用

Claude Codeでの開発フロー

  1. 1

    基本UIを作成

    「DearPyGuiで動画カット用のGUIを作って」

  2. 2

    FFmpeg連携追加

    「カットボタンを押したらFFmpegを実行するようにして」

  3. 3

    機能追加

    「動画プレビュー機能を追加して」「進捗バーを表示して」

  4. 4

    反復改善

    動作確認 → フィードバック → 修正を繰り返す

参考リンク

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