Blockly のフォーク解除

このドキュメントは、以前に Blockly をフォークしたことがあり、ライブラリにパッチを適用せずに Blockly の最新リリースにアップデートしたいデベロッパーを対象としています。これは一見面倒な作業に思えますが、管理を容易にするためにいくつかの手順を踏む必要があります。

フォーク解除について理解する

メインラインの Blockly とは、最近リリースされたバージョンの Blockly を使用していることを意味します。すべてのカスタマイズで、monkeypatch なしで公開 Blockly API を使用します。フォーク解除は、メインライン API を使用して fork のカスタム機能を実装するために行う必要がある作業です。

シンプルなフォーク解除ケース

フォークした一般的な理由とメインラインに戻るための解決策を 2 つ紹介します。

  • Blockly コードを変更せずに独自のブロックとジェネレータを作成している: この状況でフォークを解除するには、カスタム ブロックとジェネレータを Blockly リポジトリから独自のアプリケーションのコードに移動するだけです。これで Blockly のバージョンを更新できるようになります。
  • Blockly コードを変更せずに Blockly 名前空間にカスタム機能を追加した: たとえば、独自のアプリケーションでのみ使用されるカスタム フィールドやヘルパー メソッドを追加しました。この状況でフォークを解除するには、このカスタムコードを Blockly リポジトリ外の独自のアプリケーションに移動します。これで、Blockly のバージョンを更新できるようになります。

広範なフォーク解除ケース

フォークされた機能を特定する

最後に、ユーザーがフォークする理由として、Blockly にパッチを適用して、その時点ではアップストリームに含まれていないとユーザーが認識しているカスタム機能を作成することが考えられます。フォークが非常に古い場合は、必要な機能がプラグインまたはコアとしてすでに追加されている可能性があります。フォークに追加した機能を把握することで、更新する必要がある機能のロードマップが得られます。

アーキテクチャを理解する

fork 固有の API を使用する機能を理解したら、以下について検討します。

  • fork を使用する機能ごとに、Blockly API を使用してそれを複製する方法はありますか?
  • Blockly API を使用してこの機能を複製できない場合は、フォーラムでお問い合わせいただくか、GitHub で問題を報告してください。Google のチームが、カスタマイズを可能にするための API の追加を調査します。

フォーク解除パスを決定する

次のステップでは、フォークを使用する機能の新しい Blockly ベースのアーキテクチャを実際に実装するプロセスを開始します。大きく分けて次の 2 つの方法があります

  • Blockly をアップグレードして破損箇所を確認する: 更新が必要なコード領域がすぐに表示されます。既知のカスタム動作と組み合わせて、開発のガイドとして使用できます。
  • コードをリファクタリングして機能を Blockly から分離する: どの機能がフォークにカスタマイズされていて、どの機能が Blockly から生成されたかについて深く理解する必要があります。コードが完全に分離されたら、古いバージョンの Blockly を最新バージョンに置き換え、残っている統合の問題を修正します。

今後について

今後、Blockly のデベロッパーが従うべきルールをいくつかご紹介します。

  • 一般に、Blockly 名前空間には新しいクラスを追加すべきではありません。Blockly リポジトリ内や Blockly の名前空間で宣言することなく、カスタム フィールドやその他の登録可能なクラスを登録できます。
  • 独自のアプリをコンパイルする場合、Blockly のビルドツールを使用しないでください。Google のビルドツールは公開 API の一部であるとはみなしていないため、アプリケーションを機能停止させるような変更を加える場合があります。必要に応じてアプリケーションをコンパイルする責任はデベロッパーにあります。

支援を求める

Blockly は Blockly フォーラムでいつでも利用できます。fork の解除プロセス中に問題が発生した場合は、お気軽に投稿してください。Google がサポートします。