

Amazon CodeCatalyst は新規のお客様には提供されなくなりました。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[CodeCatalyst から移行する方法](migration.md)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# パッケージの概念
<a name="packages-concepts"></a>

CodeCatalyst でパッケージを管理、公開、使用するときに知っておくべき概念と用語をいくつか紹介します。

## パッケージ
<a name="packages-concepts-packages"></a>

*パッケージ*とは、ソフトウェアと、ソフトウェアのインストールおよび依存関係の解決に必要なメタデータの両方を含むバンドルです。CodeCatalyst は npm パッケージ形式をサポートしています。

パッケージの内容は以下のとおりです。
+ 名前 (例: `webpack` はよく利用されている npm パッケージの名前です)
+ オプションの[名前空間](#packages-concepts-package-namespaces) (`@types/node` の `@types` など)
+ 一連の[バージョン](#packages-concepts-package-versions) (`1.0.0`、`1.0.1`、`1.0.2` など)
+ パッケージレベルのメタデータ (npm ディストリビューションタグなど)

## パッケージの名前空間
<a name="packages-concepts-package-namespaces"></a>

一部のパッケージ形式では、階層的なパッケージ名をサポートしており、パッケージを論理グループに整理し、名前の衝突を回避できます。同じ名前のパッケージを異なる名前空間に保存できます。例えば、npm はスコープをサポートしており、npm パッケージ `@types/node` のスコープは `@types` で、名前は `node` です。他にも多くのパッケージ名が`@types`スコープにあります。CodeCatalyst では、スコープ (「types」) はパッケージ名前空間と呼ばれ、名前 (「node」) はパッケージ名と呼ばれます。Maven パッケージの場合、パッケージ名前空間はMaven GroupIDに対応します。Mavenパッケージ`org.apache.logging.log4j:log4j` は、groupID (パッケージの名前空間)が`org.apache.logging.log4j`、artifactID (パッケージ名) が`log4j`です。Python などの一部のパッケージ形式では、npm のスコープや Maven のgroupID のような概念を持つ階層名をサポートしていません。パッケージ名をグループ化する方法がないと、名前の衝突を回避するのが難しくなる場合があり。

## パッケージバージョン
<a name="packages-concepts-package-versions"></a>

*パッケージバージョン*は、`@types/node@12.6.9`のようにパッケージの特定のバージョンを識別します。バージョン番号の形式とセマンティクスは、パッケージ形式によって異なります。例えば、npmパッケージのバージョンは[セマンティックバージョニングの仕様](https://semver.org/) に準拠する必要があります。CodeCatalystでは、パッケージバージョンは、バージョン識別子、package-version-level メタデータ、アセットセットで構成されます。

## アセット
<a name="packages-concepts-assets"></a>

*アセット*とは、CodeCatalyst に格納されている、npm `.tgz` ファイルや Maven POM、JAR ファイルなど、パッケージのバージョンに関連付けられた個々のファイルのことです。

## パッケージリポジトリ
<a name="packages-concepts-repository"></a>

CodeCatalyst の*パッケージリポジトリ*には、[パッケージバージョン](#packages-concepts-package-versions)を含む[パッケージ](#packages-concepts-packages)のセットが含まれており、各パッケージバージョンは[アセット](#packages-concepts-assets)のセットに対応付けられています。パッケージリポジトリは多言語対応であり、単一のリポジトリには、サポートされている任意のタイプのパッケージを含めることができます。各パッケージリポジトリは、NuGet CLI (`nuget`、`dotnet`)、`npm` CLI、Maven CLI (`mvn`)、Python CLI (`pip` および `twine`) などのツールを使用してパッケージを取得および公開するためのエンドポイントを公開します。各スペースに作成できるパッケージリポジトリの数など、CodeCatalyst のパッケージクォータについては「[パッケージのクォータ](packages-quotas.md)」を参照してください。

パッケージリポジトリをアップストリームとして設定することで、別のパッケージリポジトリにリンクできます。リポジトリがアップストリームとして設定されている場合、アップストリームに加え、チェーン内の追加のアップストリームリポジトリの任意のパッケージを使用できます。詳細については、「[アップストリームリポジトリ](#packages-concepts-upstream-repositories)」を参照してください。

ゲートウェイリポジトリは、公式の外部パッケージ管理元からパッケージをプルして保存する特殊なタイプのパッケージリポジトリです。詳細については、「[ゲートウェイリポジトリ](#packages-concepts-gateway-repositories)」を参照してください。

## アップストリームリポジトリ
<a name="packages-concepts-upstream-repositories"></a>

CodeCatalyst を使用すると、2 つのリポジトリ間にアップストリーム関係を作成できます。パッケージリポジトリが別のリポジトリの*アップストリーム*となるのは、このパッケージリポジトリにあるパッケージバージョンに、ダウンストリームリポジトリのリポジトリエンドポイントからアクセスできる場合です。アップストリーム関係では、2 つのパッケージリポジトリの内容は、クライアントから見ると実質的にマージされていることになります。

例えば、パッケージマネージャーがリポジトリに存在しないパッケージバージョンをリクエストした場合、CodeCatalyst は設定されたアップストリームリポジトリでパッケージバージョンを検索します。アップストリームリポジトリは設定が行われた順序で検索され、パッケージが見つかると CodeCatalyst は検索を停止します。

## ゲートウェイリポジトリ
<a name="packages-concepts-gateway-repositories"></a>

*ゲートウェイリポジトリ*は、サポートされている外部公式パッケージ管理元に接続されている特殊なタイプのパッケージリポジトリです。ゲートウェイリポジトリを[アップストリームリポジトリ](#packages-concepts-upstream-repositories)として追加すると、対応する公式パッケージ管理元からパッケージを使用できます。ダウンストリームリポジトリはパブリックリポジトリと通信せず、すべてゲートウェイリポジトリによって仲介されます。この方法で使用されたパッケージは、ゲートウェイリポジトリと、元のリクエストを受け取ったダウンストリームリポジトリの両方に保存されます。

ゲートウェイリポジトリは事前に定義されていますが、使用するプロジェクトごとに作成する必要があります。次のリストには、CodeCatalyst で作成できるすべてのゲートウェイリポジトリと、それぞれが接続されているパッケージ管理元が含まれています。
+ **npm-public-registry-gateway** は、npmjs.com から npm パッケージを提供します。
+ **maven-central-gateway** は、Maven Central リポジトリから Maven パッケージを提供します。
+ **google-android-gateway** は、Google Android から Maven パッケージを提供します。
+ **commonsware-gateway** は、CommonsWare から Maven パッケージを提供します。
+ **gradle-plugins-gateway** は、Gradle Plugins から Maven パッケージを提供します。
+ **nuget-gallery-gateway** は、NuGet Gallery から NuGet パッケージを提供します。
+ **pypi-gateway** は、Python Package Index から Python パッケージを提供します。