2022年10月17日に公開された Blender HQ のバックエンド開発者 Anna Sirota氏による Blender Extensions Platform についてのブログ記事の紹介です。
今年の初めに発表されたロードマップで Ton Roosendaal 氏は、 Blender がインターネットに接続できる有用な方法を調査する必要性に言及しました。

今回公開された記事は、そのなかの重要な機能の1つ、Blenderアドオンのアップデートを自動的に取得する方法を持つことに関連した内容になっています。
Blender を離れることなく最新の Blender アドオンを入手するためには、Blender コミュニティによってバックアップされ維持されている高品質のアドオンの公開リストが必要です。これが、新しい Blender Extensions (BE) プラットフォーム(extensions.blender.org )で可能になる予定です。
目的
BE の目的は Blender ユーザーのために、アドオン、テーマ、キーマップ、アセットライブラリを発見、ダウンロードすることを完全にフリー&オープンソースの精神で提供することです。
BE は GNU GPL 準拠のソフトウェア、または CC-BY-SA と互換性のあるコンテンツのみを提供し、いかなる商業化も行われません。アーティストやアドオン開発者がblender.orgで自由に作品を共有できるような魅力的なプラットフォームになることを目指して構築されています。
「Extensions」には、次のものが含まれています。
このプラットフォームのプロトタイプのロードマップを定義するにあたっては、アドオンのエクステンションタイプに焦点が当てられています。また、この提案は、Blender Market や Poly Haven のような同様の独立したイニシアチブの背後にいる人々を含む、いくつかの利害関係者によって検討されてきました。
ロードマップ
Blender Extensionsは以下のマイルストーンに分割され、それぞれが特定の機能セットの設計と実装を必要とします。
- ユーザーは、さまざまなアドオンを発見、ダウンロード、評価できる。
- 開発者は、アドオンをアップロード、バージョンアップ、管理し、ユーザーとオープンにコミュニケーションする方法を持つことができる。
- Blender コミュニティからのレビュアーチームは、リストアップされたアドオンの全体的な品質と信頼性を維持するというタスクで Blender Foundation スタッフを支援することができる。
- Blender 自体が API を介してアドオン一覧にアクセスできるようにし、アドオンの閲覧、インストール、アップグレードを容易にすること。
各マイルストーンは、最初のマイルストーンでは Blender ユーザー、2番目のマイルストーンでは拡張機能の開発者、3番目のマイルストーンでは Blender スタッフとレビュアーのような、関係者の視点から組み立てられています。
4つ目のマイルストーンAPIについては、とりあえず対象外とされています。Blenderが独自に拡張機能リストを使用することは将来的に計画されていることですが、この記事の焦点とはなっていません。
公開リスト(Public Listing)
Add-ons Listing は extensions.blender.org/add-ons/awesome-add-on/ にあるアドオン機能の説明とその最新版をダウンロードする方法を記載したウェブページのことです。
拡張機能の種類によってURLは変わります。例えばテーマは、extensions.blender.org/themes/awesome-theme/ に置かれることになります。
各リスト項目の特徴は以下の通りです。
- ユニークな名前 (URLの生成にも使用されます)
- 包括的な説明とスクリーンショット
- サポートされている Blender のバージョンとライセンス
- 最新バージョンのダウンロードリンク(以前にアップロードされたものも同様)
- (外部の)ドキュメントとイシュートラッカーへのリンク
- アドオンのカテゴリ/タグ
- 評価とレビュー
- 不正行為を報告する方法
※キーマップやテーマなど、特定の種類の拡張機能には、上記の情報の一部が適用されません。
サポートされるBlenderのバージョンは、アドオンの場合、最も低い互換バージョンはアドオンの情報(_init__.py など)から解析され、最も高い互換バージョンは拡張機能開発者によって手動で示されることもあります。
アドオン アップロード
Blender Extensions プラットフォームに新しいアドオンページを作成するには、アドオンファイルを含むアーカイブ (.zip/.tar.gz) をアップロードする必要があります。
アップロードされた拡張機能の種類によって、例えば、リストが作成される前にいくつかのバックグラウンド処理が行われます。
- アドオンの場合、アーカイブの最も重要な部分(機能コードの他に)は、アドオンのメタデータを含む __init__.py ファイルで、これが解析され、リストとアドオンの最初のバージョンを作成するために使用されます。
- テーマの場合、プレビューはテーマの XML に基づいて生成されます。
リストの URL で使用されるスラッグは拡張機能の名前から生成され、拡張機能の種類と組み合わせて独自のものにする必要があります。スラッグは、それを使用して以前にアップロードされた拡張機能が削除された場合でも、再利用することはできません。
アドオンを更新するプロセスはまだ調査中であり、後で文書化される予定です。
レビュープロセス
Extensions Platform は、健全で信頼できるエコシステムとして設計されることが重要で、受け入れ可能な実用性とレビューのガイドラインを明確に持つことを意味します。Blender Foundationは、このプロセスを管理・指導するレビュアーのグループを設立し、サポートします。
以下はアドオンのためのコアポリシーの提案です。
■Add-on Policies
アドオンには、そのアドオンでできることすべてを記載した読みやすい説明が必要です。拡張機能の一覧からどのような機能を提供するのかが明白でなければならず、Blender ユーザーが拡張機能をダウンロードしインストールする際に予期せぬ経験をさせられるべきではありません。
Content
- 拡張機能の一覧は、Blender のウェブサービスを利用して違法行為、脅迫、嫌がらせ、危害、詐取などを行ってはならないとする Blender サービスの使用条件 (公開予定) に準拠する必要があります。
- Blender.org で提供される拡張機能は、完全に機能し、文書化され、積極的に保守されている製品であることが必要です。
- 拡張機能には、他の場所からダウンロードする必要のある外部機能コンポーネントを必要とするものであってはなりません。
- blender.org 以外のインターネットサービスに接続する(必要がある)拡張機能は、追加の制限(ログインや登録、ペイウォールなど)なしにアクセスを提供する必要があります。
- 拡張機能が他の拡張機能のフォークである場合、その名前はオリジナルと明確に区別され、機能および/またはコードにおける重要な違いを提供するものでなければなりません。
- 内部または私的な使用を目的とした拡張機能、閉じたユーザーグループのみがアクセスできる拡張機能、配布テスト用の拡張機能は、プラットフォームに掲載することはできません。
- 説明文中に外部の資金調達プラットフォームへのリンクを設けることは可能です。拡張機能の機能を妨げるような追加要件(登録、支払い、鍵など)を設けることは許されません。(代替条項: 拡張機能の説明は、その機能のいずれかにアクセスするために支払いが必要か/いつ必要かを開示する必要があります)。
Acceptable code practices
- 拡張コードはレビュー可能でなければなりません (難読化されたコードまたはバイトコードは許可されません。バイナリを評価する方法は未解決の問題です)。
- 拡張機能は自己完結型である必要があり、実行のためにリモート コードを読み込んではいけません。
- 拡張機能は、ユーザからの明示的な承認なしにデータをリモートロケーションに送信してはいけません。
- 拡張機能には、冗長なコードやファイルを含めないようにする必要があります。
- 拡張は、Blender のパフォーマンスや安定性に悪影響を与えてはなりません。
- 拡張機能のコードはhttps://wiki.blender.org/wiki/Process/Addons/Guidelinesに準拠している必要があります
現在の実装
現在進行中の実装は developer.blender.org で公開されています。
このプロジェクトは現在、Anna Sirota氏 が Blender ウェブチーム(Francesco Siddi, Pablo Vazquez)のサポートを受けて率いています。
この作業は、オンラインで利用可能な多数の拡張機能とアプリストア、そして様々なパッケージマネージャからインスピレーションを得ています。特に、Mozilla Extensions のウェブサイトはアーキテクチャのリファレンスとして使用されました。
この記事で紹介した内容に関するフィードバック、特にコンテンツの提出を確認するプロセス、コンテンツのバージョン管理、リスト化に関するフィードバックが募集されています。
コメント