[Blender] アドオンのインストール・アップデート・アンインストール方法のまとめ

Blenderは単体でも十分強力な3DCG制作ソフトですが、アドオン（拡張機能のこと。プラグインとも呼ばれる）を導入することでBlenderには存在しない機能を追加したり、よりBlenderを扱いやすくしたりできます。
しかしTwitterやGoogleなどで『Blender アドオン』で検索してみると、アドオンのインストールがわからないという方が多いようなので、ここでまとめることにしました。
今までアドオンをインストールできずに困っていた方が、本記事を見てアドオン導入の敷居が少しでも下がれば幸いです。

また、すでにインストール済みのアドオンを更新する方法やアンインストールする方法も紹介しますので、こちらも参考にしてみてください。

# 解説の前に知っておいてほしいこと

解説の前に、以降の説明を読む前に覚えておいてほしいことを説明します。
それはアドオンが複数のソースコードで構成されるか否かを見極める方法なのですが、Blenderアドオンのインストール時の問題はここを理解していないが故に発生していることが多いので、必ず読んでおいてください。

## アドオンが複数のソースコードで構成されるか否かを見極める方法

アドオンが複数のソースコードで構成されてるか否かは、基本的に ```__init__.py``` というファイルが含まれているかどうかで判断できます。
実例として、実際に私が作成したアドオンを紹介します。

### 例1: 複数のソースコードで構成されるアドオン

以下のアドオンのソースコード本体は ```uv_magic_uv``` ディレクトリ以下のすべてです。
```.py``` の拡張子のファイルが複数ある中で、 ```__init__.py``` というファイルが存在しています。

https://github.com/nutti/Magic-UV/archive/develop.zip

### 例2: 単一のソースコードで構成されるアドオン

以下のアドオンのソースコード本体は ```mouse_click_merge.py``` のみです。
```__init__.py``` というファイルは存在していません。

https://github.com/nutti/Mouse-Click-Merge/archive/master.zip

このように、アドオンが複数のソースコードで構成されているか単一のソースコードで構成されているアドオンかを見極めるには、アドオンが ```__init__.py``` というソースコードを含むかどうかで確認できると覚えておけばよいです。

# インストール

## 方法1：Blenderのインストール機能を利用する

『Blenderユーザ設定』ウィンドウからアドオンをインストールする方法です。
アドオンをインストールする標準的な方法ですが、**複数のソースコードで構成されるアドオンをこの方法でインストールすることができないという致命的な問題があります**。
複数のソースコードで構成されるアドオンをインストールする場合は、方法2の手順でアドオンをインストールする必要があります。

Blenderのインストール機能を利用したアドオンのインストール方法は以下の通りです。

1. 情報エリアの 『ファイル > ユーザ設定』 を実行（『Blenderユーザ設定』ウィンドウが開く）
![1.png](https://qiita-image-store.s3.amazonaws.com/0/38888/10701aa6-6112-fcf1-f4eb-464099b6676b.png)
2. タブ 『アドオン』 をクリック
![2.png](https://qiita-image-store.s3.amazonaws.com/0/38888/85421ec4-6a65-66f6-9226-ac8648aec70f.png)
3. 『ファイルからインストール』 ボタンをクリック
![3.png](https://qiita-image-store.s3.amazonaws.com/0/38888/433795a6-c540-bc04-01e1-fb854a5d1631.png)
4. ファイル選択画面でインストールするアドオンのソースコードを選択し、『ファイルからインストール』ボタンをクリック
![4.png](https://qiita-image-store.s3.amazonaws.com/0/38888/83b7db1e-2445-3c74-5450-9d9930ef0e1b.png)
5. インストール完了
![5.png](https://qiita-image-store.s3.amazonaws.com/0/38888/0aa93326-421a-800d-439e-bb1070b7f9e8.png)


### 補足

複数のソースコードで構成されるアドオンであっても、 ```__init__.py``` が置かれているディレクトリがzip形式で圧縮されて1つのファイルとして存在する場合は、本方法でインストールが可能です。


## 方法2：アドオン用ディレクトリにアドオンのソースコード直接配置する

アドオンが配置されているディレクトリにアドオンのソースコードを直接配置する方法です。
**アドオンが単一のソースコードで構成されている場合、複数のソースコードで構成されている場合の両方に対応できます**。

手順は以下の通りです。


1. ソースコードまたは、```__init__.py``` を含めてソースコードが入ったディレクトリ一式をアドオン用ディレクトリに配置
  * 単一のソースコードで構成されたアドオン（Windows）
![10.png](https://qiita-image-store.s3.amazonaws.com/0/38888/9657774c-05f8-d0ae-201a-5a4dd64f6870.png)
  * 複数のソースコードで構成されたアドオン（Windows）
![11.png](https://qiita-image-store.s3.amazonaws.com/0/38888/ba458ef3-2d4a-8345-658e-a45791b0f6a6.png)
2. 以下のいずれかの方法で、アドオン用ディレクトリに配置したアドオンをBlenderに認識させる
  * Blenderを再起動
  * 方法1の『Blenderユーザ設定』ウィンドウの『アドオン』タブの『更新』ボタンをクリック
![12.png](https://qiita-image-store.s3.amazonaws.com/0/38888/7b89c048-0cb8-b0ac-b469-91860528a10c.png)

ここでアドオン用ディレクトリと書きましたが、アドオン用ディレクトリはOSやBlenderのバージョンごとに異なります。
以下に各OSごとにアドオン用ディレクトリを示します。

|OS|アドオン用ディレクトリ|
|---|---|
|Windows|```C:\Users\<ユーザ名>\AppData\Roaming\Blender Foundation\Blender\<Blenderのバージョン>\scripts\addons```|
|Mac|```/Users/<ユーザ名>/Library/Application Support/Blender/<Blenderのバージョン>/scripts/addons```|
|Linux|```/home/<ユーザ名>/.config/blender/<Blenderのバージョン>/scripts/addons```|


# アップデート

## 方法1：Blenderのインストール機能を使用する

アドオンのインストール方法1と同じ方法でアドオンをアップデートすることができます。
アップデートしたいアドオンのソースコードをファイル選択画面で選択することで、アップデートが完了します。
インストールのところでも説明しましたが、**複数のソースコードで構成されるアドオンをこの方法でアップデートすることはできません**。（※）

（※）インストールと同様、複数のソースコードで構成されるアドオンであっても、 ```__init__.py``` が置かれているディレクトリがzip形式で圧縮されて1つのファイルとして存在する場合は、本方法でインストールが可能です。

## 方法2：アドオン用ディレクトリにアドオンのソースコード直接配置し、Blenderを再起動する

アドオンが配置されているディレクトリにアドオンのソースコードを直接配置する方法で、**アドオンが単一のソースコードで構成されている場合、複数のソースコードで構成されている場合の両方に対応できます**。

1. ソースコードをアドオン用ディレクトリに配置
  * アドオンが複数のソースコードで構成される場合は、```__init__.py``` を含むディレクトリ一式を配置
2. Blenderを再起動し、アドオン用ディレクトリに配置したアドオンをBlenderに認識させる

ここで **『Blenderユーザ設定ウィンドウ』の『アドオン』タブの『更新』ボタンをクリックする方法では、アドオンのソースコードが更新されたことをBlenderが認識できない**点に注意が必要です。

## 方法3：Blenderの機能『Reload Scripts』を利用する

方法2では、複数のソースコードから構成されるアドオンをアップデートする度に毎回Blenderを再起動する必要があります。
この再起動の煩わしさを解決してくれるのが、ここで紹介するBlender機能**『Reload Scripts』**です。
『Reload Scripts』機能を利用することで、Blenderを再起動せずにアドオンをアップデートすることができます。
『Reload Scripts』機能を使った、アドオンのアップデート方法を以下に示します。

1. 方法2の1.と同様に、ソースコードをアドオン用ディレクトリに配置
2. 『スペース』キーを押して検索ボックスを表示
3. 『Reload Scripts』（日本語では『スクリプトを再読み込み』） を検索して実行
![6.png](https://qiita-image-store.s3.amazonaws.com/0/38888/50a5efbb-403c-fcb9-50b0-c6927f911724.png)


なお、『Reload Scripts』機能にはデフォルトで『F8』のショートカットキーが割り当てられています。
『Reload Scripts』機能は、頻繁にアドオンをアップデートするアドオン開発者にとって非常に有益な機能ですので、覚えておくとよいかもしれません。

### 補足

アドオンによっては『Reload Scripts』機能を使っても正しくアップデートされない場合があります。
これは『Reload Scripts』機能を使った場合でも、 ```__init__.py``` でインポートしているサブモジュールを読み込まないことが原因で生じた問題です。
もし『Reload Scripts』機能を使った時にサブモジュールも読み込むようにしたい場合は、以下のようにモジュールのリロード処理を追加する必要があります。

```py3:reload_submodule.py
if "bpy" in locals():
    import imp
    imp.reload(submod1)
    imp.reload(submod2)
else:
    from . import submod1
    from . import submod2
```

（参考： [[Blender] Blenderのスクリプトを複数ファイルに分割する](http://qiita.com/nutti/items/35e7f79f8683fc79eda8) ）

# アンインストール

## 方法1：Blenderのアンインストール機能を利用する

『Blenderユーザ設定』ウィンドウからアドオンを削除する方法です。
アドオンをアンインストールする標準的な方法ですが、**最初からアドオン本体に含まれているアドオン（アドオンのサポートレベルがReleaseまたはContribのアドオン）は削除することができません**。

『Blenderユーザ設定』ウィンドウからアドオンを削除する方法を以下に示します。

1. 情報エリアの 『ファイル > ユーザ設定』 を実行（『Blenderユーザ設定』ウィンドウが開く）
2. タブ 『アドオン』 をクリック
3. アンインストールしたいアドオンの左側の矢印をクリックし、アドオンの詳細情報を表示
![7.png](https://qiita-image-store.s3.amazonaws.com/0/38888/f6ced073-d4c5-7cb1-716c-503336591180.png)
4. 『削除』ボタンをクリック
![8.png](https://qiita-image-store.s3.amazonaws.com/0/38888/dc283759-7630-b77e-32f8-63ddcf94a9d2.png)


なおこの方法では、**ソースコードが複数ファイルで構成されるか否かにかかわらず**アドオンをアンインストールすることができます。

## 方法2：アドオン用ディレクトリからアドオンのソースコードを削除する

アドオン用ディレクトリからアドオンのソースコードを削除してアンインストールする方法です。
以下の手順に従って、アドオンが配置されているディレクトリからアンインストールするアドオンのソースコードを直接削除します。

1. 情報エリアの 『ファイル > ユーザ設定』 を実行（『Blenderユーザ設定』ウィンドウが開く）
2. タブ 『アドオン』 をクリック
3. アンインストールしたいアドオンの左側の矢印をクリックし、アドオンの詳細情報を表示
4. 『ファイル』に示されたファイルパスのソースコードを削除する
  * アドオンが複数のソースコードで構成されている場合は、『ファイル』にはディレクトリではなく ```__init__.py``` のファイルパスが表示されていますが、 **完全にアンインストールするためには ```__init__.py``` が置かれたディレクトリごと削除する必要があります**。
![9.png](https://qiita-image-store.s3.amazonaws.com/0/38888/4caccbff-05b1-756f-c5a6-289805765635.png)


なおこの方法では、方法1では削除できなかった、**最初からアドオン本体に含まれているアドオン**も削除することができます。