プラグイン

はじめに

プラグインは、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 があります。

プラグインのインストール

  1. 上記のリソースのいずれかを使用して、インストールするプラグインを探し、README を検索します。
  2. README に記載されているインストール指示に従います。通常は npm から

    npm install @blockly/block-plus-minus --save
    

    コードにインポートします。たとえば、

    import Blockly from 'blockly';
    import '@blockly/block-plus-minus';
    
  3. 一部のプラグインでは、プラグインの初期化や登録など、追加の手順が必要になる場合があります。これらの手順は 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 に記載されている初期化または登録の手順を行う必要があります。