Globals から AMD への移行

Jira のフロントエンドのすべてのコードが正式または公式の API であるわけではありませんが、Jira ではこれまでにプラグインのコードで再利用できるグローバル変数を作成してきました。

Jira 開発チームでは、最終的にすべてのグローバル オブジェクトを AMD モジュールに変換し、すべてのフロントエンド コードの依存関係が構成ファイル内ではなくコード内で明示的に宣言されるようにすることを計画しています。

開発チームによるモジュール変換の取り組みには、プラグインにとって重要な機能やオブジェクトを適切なサポート対象の API として公開し、文書化する作業も含まれます。

この取り組みはすでに長期に渡って行われています (Jira 6.2 以降、50 % の Jira Core JS が AMD モジュールとしてアクセス可能。7.2 以降は 100 %)。正式に定められた日付はありませんが、当社では 8.0 ですべての JS グローバル変数の使用を非推奨にすることを検討しており、利用可能な代替の AMD モジュールがすでに存在する場合は特定のグローバル オブジェクトを徐々に削除する可能性があります。

8.0 の新機能

Jira 8.0 以降は、Jira での JS グローバル変数の使用を (厳密に) 非推奨にします。

"非推奨" の定義

非推奨とは、一部の用語、機能、設計、または手順などを使用しないように勧めることです。一般に非推奨にする理由は、置き換えが行われたか、完全に削除または使用を禁止しないと効率性や安全性が確保されなくなったためです。また、将来的にその機能、設計、または手順が完全に取り除かれたり、更新されなくなったりすることを意味する場合もあります。

グローバル変数を削除する理由

グローバル変数は、Jira でのパフォーマンス向上 (および、安定性、信頼性、予測可能性、または保守性などのその他のメリット) を阻害します。パフォーマンスはこれまでも将来においても当社の主要な取り組み分野です。

グローバル変数の削除に向けた計画の概要

グローバル変数を置き換えるために、当社のチームは、公式のサポート対象である新しいソリューションを準備してきました。それが AMD モジュールです。このソリューションは多くの部分において、Jira のコードベースにすでに実装されています。今後、足りない AMD モジュールを作成して完全に置き換える予定です。現状では、Jira 6.2 以降では Jira の中核部分の JS コードの 50 % が、7.2 以降では 100 %が AMD とグローバル変数で構成されています。AMD モジュールは "安定" し、機能しています。

グローバル変数から AMD モジュールへの変換を進めていく際にはグローバル変数をそのまま残して後方互換性を維持するため、しばらくの間はグローバル変数も使用できます。

特定の機能をサポートするグローバル変数は、その機能の代替ソリューションが配置された場合にのみ削除されます。削除する場合は前もって適宜お知らせします。

AMD モジュールは、ドキュメントとアップグレード ガイドでサポートされます。この新しいソリューションを Jira 9.0 から全体に適用する予定です。

長期的な影響

Jira 8.0 ではすべてのグローバル変数を維持するように判断する場合がありますが、8.x では徐々に廃止していく可能性があります。こちらについても、前もって適宜お知らせします。

Jira 9.0 ではグローバル変数の使用を完全に中止する可能性があります。

変更への準備方法

8.0 以降:

すべてのグローバル変数を非推奨とみなし、使用しないようにします。 

グローバル変数の使用はすべて非推奨とみなし、開発チームで代替ソリューション (AMD モジュール) に移行する計画を立てることをおすすめします。
代替案のソリューションを組み込んでしまうことが理想です。当社は直近で新しい AMD モジュールを導入していないため、ほとんどのユース ケースのシナリオにおいて、この対応策を最新のエンタープライズ リリースで使用できます。

必要な AMD モジュールがまだ存在しない場合を除き、新しく作成されたすべてのプラグイン コードで AMD モジュールを使用する必要があります。
必要なAMD モジュールがまだない場合、プラグイン ベンダーは既存のグローバル変数を使用できますが、AMD モジュールが Jira で使用可能になり次第、移行することをおすすめします。

Jira Core でのグローバル変数 → AMD モジュールのカバレッジは 100 % です。Jira Software でのカバレッジを高め、グローバル変数を介してアクセス可能な全データ (100%) を AMD モジュールで利用できるようにします。

* 原文の should、may、must は  https://www.ietf.org/rfc/rfc2119.txt に従います。

8.0 のリリース後:

AMD モジュールが利用可能になってからすでに数年が経過している (6.x または 7.x の古いバージョンから利用可能な) グローバル変数のサポートを終了する予定です。
当社はこれをケース バイ ケースで行ない、移行を文書化します (削除されたグローバル変数と対応する同等の AMD モジュール名の完全な一覧)。

さらに、代替ソリューションがない Jira Software のすべてのグローバル変数を網羅するための新しい AMD モジュールを導入する予定です。当社はこれをケース バイ ケースで行ない、移行を文書化します (非推奨のグローバル変数と対応する同等の AMD モジュール名の完全な一覧)。

これは、8.x から開始します。

API の定義

すべての AMD モジュールが API の一部になるかどうかは現時点で保証されません。しかし、現時点では変換済みのグローバル変数と対応する AMD モジュール間の 1 対 1 のマッピングがあるため、JS オブジェクトへのアクセス保持され、メソッドのみが変更されます。

アップグレード ドキュメント

現時点では、この新しいソリューション用のドキュメントは提供していません。現時点ではグローバル変数の削除予定はありません。

Jira 8.x で特定のグローバル変数のサブセットを削除することを決定した場合、削除されるグローバル変数の一覧と対応する同等の AMD モジュール名を含む詳細な移行ドキュメントを提供する予定です。

このドキュメントは近日中に行われるリリース向けに EAP と並行してリリースされるため、すべてのユーザーが変更に向けて準備できます。

最終更新日 2019 年 8 月 13 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.