開発者

プログラマーであるか、プログラマーになりたい方で、OpenShotの新機能開発、バグ修正、ユーザーインターフェースの改善に興味がある場合、以下のセクションで始め方と参加方法を説明します!

全体像

OpenShot Video Editorは、PythonとPyQtのユーザーインターフェース(openshot-qt )、C++のオーディオライブラリ(libopenshot-audio )、C++のビデオライブラリ(libopenshot )の3つの主要コンポーネントで構成されています。Python、PyQt、C++に不慣れな場合は、この段階でそれらを調査し学ぶことをお勧めします。

ただし、C++コンポーネントはユーザーインターフェースに関与していないため、多くのバグ修正や新機能追加はPythonの知識だけで可能です。Pythonは素晴らしい言語で、学ぶのも非常に楽しく、OpenShot開発者になるために必要な唯一の前提スキルです!

警告

以下の手順はUbuntu Linux向けで、OpenShot開発に最も設定が簡単な環境です。別のOSを使用している場合は、先にUbuntu LTSの仮想マシンを実行することをお勧めします。

開発にWindowsまたはMacシステムを使用する必要がある場合は、まず``libopenshot`` ウィキのビルドノートを参照してください。すべての依存関係を含めてライブラリをビルドするのが最も難しい部分です。

最新のソースコードの取得

バグ修正や新機能追加の前に、ソースコードをコンピューターに取得する必要があります。

gitを使って3つのリポジトリをクローンしてください:

git clone https://github.com/OpenShot/libopenshot-audio.git
git clone https://github.com/OpenShot/libopenshot.git
git clone https://github.com/OpenShot/openshot-qt.git

開発環境の設定

OpenShotを実際にコンパイルまたは実行するには、システムにいくつかの依存関係をインストールする必要があります。これを最も簡単に行う方法は、Daily PPA を利用することです。PPAは非公式のUbuntuリポジトリで、当社のソフトウェアパッケージをダウンロードおよびインストールできます。

sudo add-apt-repository ppa:openshot.developers/libopenshot-daily
sudo apt-get update
sudo apt-get install openshot-qt \
                     build-essential \
                     cmake \
                     catch2 \
                     libx11-dev \
                     libasound2-dev \
                     libavcodec-dev \
                     libavdevice-dev \
                     libavfilter-dev \
                     libavformat-dev \
                     libavresample-dev \
                     libavutil-dev \
                     libfdk-aac-dev \
                     libfreetype6-dev \
                     libjsoncpp-dev \
                     libmagick++-dev \
                     libopenshot-audio-dev \
                     libprotobuf-dev \
                     libqt5svg5-dev \
                     libswscale-dev \
                     libunittest++-dev \
                     libxcursor-dev \
                     libxinerama-dev \
                     libxrandr-dev \
                     libzmq3-dev \
                     pkg-config \
                     python3-dev \
                     python3-zmq \
                     protobuf-compiler \
                     qtbase5-dev \
                     libqt5svg5-dev \
                     libxcb-xfixes0-dev \
                     qtmultimedia5-dev \
                     swig

OpenShot は PyQt5、PyQt6、および PySide6 をサポートしています。libopenshot は、使用しているバインディングに対応した正しい Qt バージョン(Qt5: PyQt5、Qt6: PyQt6 または PySide6)でビルドする必要があります。

PySide6 (Qt6) バインディングの場合、これらのパッケージをインストールしてください:

sudo apt-get install \
                     python3-pyside6.qtcore \
                     python3-pyside6.qtgui \
                     python3-pyside6.qtwidgets \
                     python3-pyside6.qtstatemachine \
                     python3-pyside6.qtsvg \
                     python3-pyside6.qtuitools \
                     shiboken6

PyQt6 の場合、これらのパッケージをインストールしてください:

sudo apt-get install \
                     qt6-base-dev \
                     qt6-base-dev-tools \
                     qt6-tools-dev \
                     qt6-svg-dev

PyQt6 ランタイムは QtCore, QtGui, QtWidgets, QtSvg, QtStateMachine, および uic を提供する必要があります。いくつかのディストリビューションでは、これらのモジュールが別々のパッケージに分割されています。特に、Ubuntu 24.04 の python3-pyqt6 パッケージには QtStateMachine が含まれていません。そのリリースでは、上記の PySide6 パッケージを使用するか、Python 仮想環境に完全な PyQt6 ホイールをインストールしてください:

python3 -m venv .venv
.venv/bin/python -m pip install PyQt6

OpenShot を起動する前に、選択した Qt バインディングとその必要なモジュールを確認してください:

PYTHONPATH=src OPENSHOT_QT_API=pyqt6 .venv/bin/python -c \
    "from qt_api import QT_API, QStateMachine; print(QT_API, QStateMachine)"

この時点で、3つのOpenShotコンポーネントのソースコードがローカルフォルダにクローンされ、OpenShotのDaily PPAがインストールされ、必要な開発および実行時依存関係がすべてインストールされているはずです。これは素晴らしいスタートであり、コードのコンパイルを始める準備が整いました!

libopenshot-audio(ビルド手順)

このライブラリはオーディオ再生とオーディオエフェクトに必要です。JUCEオーディオフレームワークに基づいています。ビルドするためのコマンドは以下の通りです:

cd libopenshot-audio
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=dist ..
make
make install

基本的に、libopenshot-audio/build フォルダに移動し、親フォルダで``cmake ..`` を実行します。これにより依存関係が検出され、このライブラリをコンパイルするために必要なMakefileがすべて作成されます。次に``make`` でこれらのMakefileを使ってライブラリをコンパイルし、make install で指定した場所にインストールします。CMAKE_INSTALL_PREFIX が設定されていない場合、ファイルはデフォルトで``/usr/local/`` にインストールされ、make install の実行には管理者権限が必要です。

libopenshot(ビルド手順)

このライブラリはビデオのデコード、エンコード、アニメーション、その他ほぼすべてに必要です。ビデオ編集と再生の重い処理をすべて行います。ビルドするためのコマンドは以下の通りです:

cd libopenshot
mkdir build
cd build
cmake -DLIBOPENSHOT_AUDIO_DIR=../../libopenshot-audio/build/dist ..
make

基本的に、libopenshot/build フォルダに移動し、親フォルダで``cmake ..`` を実行します。これにより依存関係が検出され、このライブラリをコンパイルするために必要なMakefileがすべて作成されます。次に``make`` でこれらのMakefileを使ってライブラリをコンパイルします。コンパイル済みの``libopenshot-audio`` の場所を指定しているため、システムのバージョン(存在する場合)ではなくそのバージョンが使用されます。

ビルド後に``libopenshot`` をインストールしないのは、必要ないためです。テスト目的で、OpenShotに``build`` ディレクトリから直接``libopenshot`` を使うよう指示できます。

言語バインディング

libopenshot APIはSWIGバインディングを通じて複数の言語で利用可能です。PythonはOpenShotのユーザーインターフェースで使用されており、RubyとJavaのバインディングも提供しています。Godotゲームエンジンにビデオ編集機能を統合したい開発者向けに、Godot 4.4 の実験的サポートも含まれています。これらすべてのバインディングは同じC++コードベースにマッピングされているため、お好みの環境からビデオ編集が可能です。

openshot-qt(起動手順)

これは当社のメインのPyQt Pythonアプリケーションです。Pythonで書かれているため、実行にコンパイルは不要です。新たにビルドした``libopenshot-audio`` と``libopenshot`` ライブラリを使ってソースコードからOpenShotを起動するには、以下のコマンドを使用してください:

cd openshot-qt
PYTHONPATH=../libopenshot/build/src/bindings/python
python3 src/launch.py

これによりOpenShotのユーザーインターフェースが起動します。ソースコードファイル(*.py のPythonファイル、*.ui のPyQt UIファイルなど)に加えた変更はすべて含まれます。これには``libopenshot-audio`` および``libopenshot`` ライブラリが必要であり、上記の手順で何か問題があった場合、OpenShotは起動しない可能性があります。

この時点でOpenShotが起動したら、おめでとうございます!これでローカルのソースコードから動作するOpenShotのローカル版が完成しました。ソースコードにいくつか変更を加えてOpenShotを再起動してみてください…変更が反映されているはずです!

GitHubの課題

ソースコードからOpenShot Video Editorを正常にコンパイルして起動できたので、GitHubのバグ報告一覧(OpenShot Issues )をぜひご覧ください。また、簡単な`contributor form <https://forms.gle/CRqkS5tLMJE1V36V8>`_ にご記入いただき、ご自身を紹介していただくことも推奨します!

変更を共有する

バグを修正したり素晴らしい新機能を追加したら、必ずOpenShotチームと共有してください。理想的には、これをメインのソースコードブランチにマージできます。変更を共有する最も簡単な方法は、リポジトリをフォークし、変更をGitHubにプッシュして Pull Request を作成することです。Pull RequestはOpenShotチームに変更がマージ準備完了であることを知らせます。その後、レビューやフィードバックを行い、変更をメインブランチにマージできることを期待します。