概念

アーキテクチャ

Plugin と Live2D Cubism Editor の間で Turboism が担う役割。

Turboism は、Live2D Cubism Editor の内部実装と extension code の間にある adaptation layer です。host implementation detail に直接依存することなく、plugin author に安定した integration surface を提供します。

依存の方向

Plugin -> SDK -> Runtime policy -> versioned Adapter/Provider -> Cubism/Editor
  • Plugins はユーザーのワークフローを記述し、SDK にのみ依存します。
  • SDK は Turboism が所有する型、service、lifecycle contract を公開します。
  • Runtime は host へのアクセス、lifecycle、permission、thread、transaction、diagnostic、compatibility、version routing を担います。
  • Adapter/Provider 層は、host 固有の symbol を Cubism Editor の正確なバージョンごとに分離します。
  • Cubism/Editor は host application であり、別途インストールしてライセンスされます。

ここから導かれる設計ルール

  • public SDK の階層は 1 つです。plugin が com.live2d.* の型、host widget、native handle、host ClassLoader、runtime implementation type を目にすることはありません。
  • 実行を所有するのは Runtime です。plugin は管理されていない thread、executor、timer を作成せず、bytecode transformer も登録しません。
  • 書き込みは Editor が所有する operation であり、validation、Undo、dirty-state の処理、stale reference の拒否を伴います。
  • capability は fail closed で失敗します。利用できない Provider、検証されていない host version、stale な object reference は、フォールバック経路ではなく型付きの失敗を返します。
  • 検証はコストとリスクに応じて階層化されます。focused test から、パッケージ化された integration、リリースゲート、明示的な正確バージョンの host validation まで段階があります。

次に読むもの