BlenderではPythonを使用することでアドオンを作成し、機能を拡張することができます。
またアドオンは配布することも可能です。
配付する際に問題となるのが、外部ライブラリを使用している場合です。
ローカル環境ではpipコマンドを使用してBlenderのPythonファイル自体に外部ライブラリをインストールすることでアドオン側で外部ライブラリを読み込み使用することができます。
しかし、アドオンを配布し他者に使用してもらう場合を考えてみると、ユーザーは自身のBlenderのPython環境に外部ライブラリを導入する必要があり、ライセンスやバージョンの問題など、非開発者にとっては複雑な問題となります。
今回はこれを解消するためにアドオン側に外部ライブラリをバンドルし、ユーザー側で特段ライブラリをインストールせずにアドオンを使用できる方法を試して行きます。
〇環境
・Windows PC
・Blender4.0
〇バンドルとは?
バンドルとはまとめるという意味を持つ言葉です。
ソフトウェア用語としては一緒に配布されるコンポーネントを指し、例えばUnityなどでアプリケーション本体と別にゲームデータをインストールする仕組みでアセットバンドルと呼ばれるものがあります。
今回の場合はPythonパッケージがほかのパッケージに依存しているという状態のため、バンドルして一緒に配布することでエンドユーザーが依存している他のパッケージをインストールしなくてよいようにすることができます。
〇ライセンス条項の確認
まずは今回依存している外部ライブラリのライセンス条項を確認します。
サードパーティーのアセットは必ず確認を行う必要があります。
今回はMusic21を使用するためMusic21のライセンスを確認します。
Music21の場合はOSSで開発されており、そのソースコードはGitHub上に存在します。
GitHuv記載のドキュメントサイト
によるとmusic21はBSDライセンスです。
〇BSDライセンスとは?
BSDライセンス(Berkeley Software Distribution License)
は無保証の上で再配布が許可されています。
しかし著作権表示とライセンス表示の要求がされます。
この条件の上で商用利用も許可されています。
つまりMusic21を使用するためにはライセンスの表示、著作権の表示が求められているということになります。
〇アドオンをバンドル化する
①Music21のリポジトリよりリリースページへアクセスします。
②リリースページよりソースコードのzipファイルをダウンロードします。
③ダウンロード後ソースコードを展開します。
④アドオンのプロジェクトのディレクトリに解凍したソースコードを配置します。
今回はThirdparty
という階層を用意してその中に配置しました。
⑤配付用のPythonのライブラリのパスを書き換えます。
従来はpython側に存在している前提で次のようなコードでした。
import bpy from music21 import *
こちらを次のように書き換えます。
import sys sys.path.append('thirdparty/music21-9.1.0') import bpy from music21 import *
冒頭部にパスを記述することでこちらが参照されるようになります。
ただし、music21での依存関係も導入しておく必要があります。
これはrequests
フォルダを作成しこの中にライブラリのソースコードを配置します。
アドオンのソースコードで冒頭部で読み込みます。
import requests
どのライブラリが依存関係にあるのかはソースコードに含まれるrequirements.txt
を確認することで見ることができます。
以上でユーザーがそれぞれ外部ライブラリをインストールしなくてもアドオンを使用することができるようになりました。
本日は以上です。