はじめに
プラグインは、Blockly に機能を追加する自己完結型のコードです。プラグインでは、フィールドの追加、テーマの定義、レンダラの作成など、さまざまな操作を行うことができます。
プラグインのターゲット ユーザーは、npm を介してプラグインを見つけて使用するデベロッパーです。プラグインの構築の詳細については、2021 年の「How to Build a Plugin」の講演と 2021 年の Plugins Overview をご覧ください。
自社と第三者
blockly-samples リポジトリで定義されているプラグインはファーストパーティのプラグインです。つまり、Blockly のチームがサポートしており、npm の @blockly
スコープで公開されます。
優れたファーストパーティ プラグイン:
- ユースケースが明確
- 汎用の
- 安定している
- 使いやすい
サードパーティ プラグインは独立して管理、公開されています。サードパーティ プラグインは、より複雑、試験運用版的、または対象を絞った場合があります。
たとえば、モーター速度を設定するフィールドは、多くのロボット プロジェクトで使用できます。一方、データベース スキーマで定義された特定のオブジェクトを編集するためのフィールドは、サードパーティのプラグインに適しています。
ファーストパーティの条件
ファースト パーティ プラグインは、以下の要件を満たす必要があります。
- Blockly チームによって免除されていない限り、すべての主要なプラットフォームで機能します。
- Chrome、Firefox、Safari、Edge
- 最初の 1 年間はバグに対処する意志がある著者がいる。
- Blockly にパッチを適用しない。
- API が明確に定義され、文書化されている。
- Blockly チームから除外されていない限り、Blockly コアから非公開関数またはパッケージ関数を呼び出しません。
- 定義したサブクラスでパッケージ関数をオーバーライドできます。
- 免除を希望する場合は、blockly-samples の問題でお問い合わせください。
- テストあり。
プラグインを探す
- GitHub ページ: ファーストパーティ プラグインのライブデモを確認する。
- npm で
@blockly
を検索して、Blockly チームが公開しているプラグインのリストを表示します。 - GitHub の場合: blockly-samples リポジトリの plugins ディレクトリを確認します。各プラグインには、その動作と使用目的について説明した README があります。
プラグインのインストール
- 上記のリソースのいずれかを使用して、インストールするプラグインを探し、README を検索します。
README に記載されているインストール指示に従います。通常は npm から
npm install @blockly/block-plus-minus --save
コードにインポートします。たとえば、
import Blockly from 'blockly'; import '@blockly/block-plus-minus';
一部のプラグインでは、プラグインの初期化や登録など、追加の手順が必要になる場合があります。これらの手順は README に含まれています。
プラグインのバージョン
Blockly-samples のプラグインはセマンティック バージョニングに従うため、互換性を破る変更は新しいメジャー バージョンに反映されます。Monkeypatching Core に依存する新しいプラグインは、semver の仕様に記載されているように、初期開発を示すためにメジャー バージョンが 0 になります。
ほとんどのプラグインには、メイン blockly
パッケージが依存関係ではなく PeerDependency として含まれています。これは、デベロッパー自身がご自身のアプリに Blockly をご自身でインストールしていることを前提としており(Blockly を使用せずにプラグインを使用することは意味がありません)、Blockly のバージョンを自分で管理できるためです。ただし、多くのプラグインは、Blockly の最新バージョンに含まれる新しい API を使用するように開発されているため、バージョン要件に注意する必要があります。プラグインの package.json
から、そのプラグインと互換性のある Blockly の最小バージョンを確認できます。新しいバージョンの Blockly を必要とするようにプラグインが更新された場合(新しい API を利用する場合など)は、互換性を破る変更と見なされるため、プラグインのメジャー バージョンが引き上げられます。
プラグインを package.json
に追加する場合、デフォルトでは、バージョンの前にキャレットが挿入されます。たとえば、
"@blockly/block-plus-minus": "^2.0.15"
これにより、npm は記載されたバージョン以上のマイナー バージョンをインストールできるようになります。そのため、バージョン 2.0.20
または 2.1.0
は機能しますが、3.0.1
などの新しいメジャー バージョンは機能しません。Blockly の新しいバージョンにアップデートする場合は、いずれかのプラグインを新しいメジャー バージョンに更新できるかどうかを確認することをおすすめします。
npm を使用せずにプラグインをインストールする
通常は、簡単にアップデートを受信するために npm を使用することをおすすめしますが、npm なしでプラグインを使用することもできます。
unpkg を使用すると、クローンを作成せずにプラグイン ファイルを含めることができます。たとえば、
<script src="https://unpkg.com/@blockly/block-plus-minus"></script>
または、Blockly のクローンを作成した場合と同様に、blockly-samples
リポジトリのクローンを作成して、ローカルにファイルを含めることができます。ただし、プラグインの最新機能とバグ修正を利用できるようにするため、可能であればパッケージ マネージャーを使用することをおすすめします。
この方法では、プラグインの README に記載されている初期化または登録の手順を行う必要があります。