付録C 機能のライフサイクル The Feature Lifecycle

Gradle is under constant development and improvement. New versions are delivered on a regular and frequent basis (approximately every 6 weeks). Continuous improvement combined with frequent delivery allows new features to be made available to users early and for invaluable real world feedback to be incorporated into the development process. Getting new functionality into the hands of users regularly is a core value of the Gradle platform. At the same time, API and feature stability is taken very seriously and is also considered a core value of the Gradle platform. This is something that is engineered into the development process by design choices and automated testing, and is formalised by 「後方互換性ポリシー Backwards Compatibility Policy.

Gradleプロジェクトは現在も活発に開発、改善されており、新しいバージョンが定期的に、また頻繁にリリースされています(大体6週間に一度)。 新しい機能および修正を頻繁にリリースすることで、それらの新機能が素早くユーザーにより確認され、実際の現場で得られた貴重なフィードバックを開発プロセスに組み入れることができるのです。新しい機能を多くのユーザーに定期的に届けることは、Gradleプラットフォームの重要な価値の一つです。 それと同時に、APIや機能の安定性もとても重要であり、これもGradleプラットフォームの大事な価値の一つだと考えています。 新機能は、設計上の選択により開発プロセスに組み入れられ、自動テストされ、「後方互換性ポリシー Backwards Compatibility Policyに従って正式採用されるようになっています。

The Gradle feature lifecycle has been designed to meet these goals. It also serves to clearly communicate to users of Gradle what the state of a feature is. The term feature typically means an API or DSL method or property in this context, but it is not restricted to this definition. Command line arguments and modes of execution (e.g. the Build Daemon) are two examples of other kinds of features.

Gradleの機能ライフサイクルは、これらの目的を達成するために設計されました。 また、機能ライフサイクルは、ある機能が今どんなステータスにあるのか、ユーザーに明確に伝えることにも寄与します。 機能という用語は、たいていの場合APIやDSLのメソッドやプロパティを指しますが、それだけにとどまりません。 コマンドライン引数や実行モード(例えばBuild Deamon)などもその一つです。

C.1. 状態 States

Features can be in one of 4 states:

機能の状態は、以下の四つのうちいずれかとなります。

  • Internal

    非公開

  • Incubating

    試験的

  • Public

    公開

  • Deprecated

    非推奨

C.1.1. 非公開 Internal

Internal features are not designed for public use and are only intended to be used by Gradle itself. They can change in any way at any point in time without any notice. Therefore, we recommend avoiding the use of such features. Internal features are not documented. If it appears in this User Guide, the DSL Reference or the API Reference documentation then the feature is not internal.

非公開の機能は、広く使われることは想定しておらず、Gradleが内部的に使うためのものです。これらの機能は、いつでもどんな風にも予告なく変更される可能性があります。 従って、これらの機能を使うことは推奨しません。 また、非公開機能はドキュメント化もされません。もしユーザーガイドやDSLリファレンス、APIリファレンスに載っているなら、それは非公開機能ではないということです。

Internal features may evolve into public features.

非公開機能は、公開機能に昇格する可能性があります。

C.1.2. 試験的 Incubating

Features are introduced in the incubating state to allow real world feedback to be incorporated into the feature before it is made public and locked down to provide backwards compatibility. It also gives users who are willing to accept potential future changes early access to the feature so they can put it into use immediately.

試験的な状態にあると書かれた機能は、正式に公開される前に、実際の運用で発生したフィードバックを受け付けている状態のものです。フィードバックが組み込まれ、正式に公開されると、上位互換性を保証するために固定化されることになります。 これらの機能は、機能が変更されるリスクを受け入れられるユーザーに向けて公開されているもので、そういったユーザーであればすぐに使ってみることができます。

A feature in an incubating state may change in future Gradle versions until it is no longer incubating. Changes to incubating features for a Gradle release will be highlighted in the release notes for that release. The incubation period for new features varies depending on the scope, complexity and nature of the feature.

試験的な機能は、試験的でなくなるまでは将来のバージョンのGradleで変更されるかもしれません。変更された場合はリリースノートで通知します。 新機能の試験期間は、その範囲や複雑性、機能の性質によって様々です。

Features in incubation are clearly indicated to be so. In the source code, all methods/properties/classes that are incubating are annotated with Incubating, which is also used to specially mark them in the DSL and API references. If an incubating feature is discussed in this User Guide, it will be explicitly said to be in the incubating state.

試験的な機能は、試験的であるとはっきり明示されます。ソースコードでは全ての試験的なメソッド、プロパティ、クラスはIncubatingアノテーションで注釈されます。これはDSLリファレンスやAPIリファレンスにマークする際も使用されます。試験的機能についてユーザーガイドで言及するときは、試験的な状態にあることを明示的に記載します。

C.1.3. 公開 Public

The default state for a non-internal feature is public. Anything that is documented in the User Guide, DSL Reference or API references that is not explicitly said to be incubating or deprecated is considered public. Features are said to be promoted from an incubating state to public. The release notes for each release indicate which previously incubating features are being promoted by the release.

非公開でない機能のデフォルトのステータスが公開です。 ユーザーガイド、DSLリファレンス、APIリファレンスにおける全ての記載内容は、明示的に試験的とか非推奨などと書かれていない限り公開状態と考えてください。 機能は、試験的な状態から公開機能へと言わば昇格します。試験的だった機能が公開状態に昇格した場合は、そのバージョンのリリースノートで通知します。

A public feature will never be removed or intentionally changed without undergoing deprecation. All public features are subject to the backwards compatibility policy.

公開状態の機能は、非推奨とならない限り決して削除されたり意図的に変更されたりすることはありません。 全ての公開機能は上位互換性ポリシーの対象となります。

C.1.4. 非推奨 Deprecated

Some features will become superseded or irrelevant due to the natural evolution of Gradle. Such features will eventually be removed from Gradle after being deprecated. A deprecated feature will never be changed, until it is finally removed according to the backwards compatibility policy.

Gradleの発展に伴って、いくつかの機能は別のものに取って代わられたり、不適切になったりすることがあります。 そのような機能は、非推奨とされた後、やがてはGradleから削除されます。 非推奨の機能は、上位互換性ポリシーに従い、削除されるまで決して変更されることはありません。

Deprecated features are clearly indicated to be so. In the source code, all methods/properties/classes that are deprecated are annotated with “@java.lang.Deprecated” which is reflected in the DSL and API references. In most cases, there is a replacement for the deprecated element, and this will be described in the documentation. Using a deprecated feature will also result in a runtime warning in Gradle's output.

非推奨の機能は、非推奨であるとはっきり明示されます。ソースコードでは全ての非推奨メソッド、プロパティ、クラスは@java.lang.Deprecatedアノテーションで注釈されます。これはDSLリファレンスやAPIリファレンスにも反映されます。ほとんどの場合、非推奨となった要素には代替となるものが用意され、ドキュメントにも記載されます。また、非推奨の機能を使うと、Gradle実行時に警告メッセージが出力されます。

Use of deprecated features should be avoided. The release notes for each release indicate any features that are being deprecated by the release.

非推奨機能の使用は避けるべきです。リリースノートには、そのリリースで非推奨となった機能が全て記載されています。

C.2. 後方互換性ポリシー Backwards Compatibility Policy

Gradle provides backwards compatibility for across major versions (e.g. 1.x, 2.x etc.). Once a public feature is introduced or promoted in a Gradle release it will remain indefinitely or until it is deprecated. Once deprecated, it may be removed in the next major release. Deprecated features may be supported across major releases, but this is not guaranteed.

Gradleはメジャーバージョン間(1.x2.xなど)で上位互換性を保持します。 一度Gradleのリリースに導入されたり昇格したりした公開機能は、非推奨にならない限り決して変更されません。 機能がいったん非推奨になると、次からのメジャーリリースでは削除される可能性があります。 非推奨機能がメジャーバージョンをまたいでサポートされる場合もありますが、必ずそうとは限りません。