

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

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

# カスタムブループリントの概念
<a name="custom-bp-concepts"></a>

CodeCatalyst でカスタムブループリントを使用する際に知っておくべき概念と用語をいくつか紹介します。

**Topics**
+ [ブループリントプロジェクト](#blueprint-project-concept)
+ [スペースのブループリント](#space-blueprints-concept)
+ [スペースブループリントカタログ](#blueprint-catalog-concept)
+ [合成](#synthesis-concept)
+ [再合成](#resynthesis-concept)
+ [部分的なオプション](#partial-options-concept)
+ [プロジェン](#projen-concept)

## ブループリントプロジェクト
<a name="blueprint-project-concept"></a>

ブループリントプロジェクトを使用すると、スペースにブループリントを開発して公開できます。ソースリポジトリはプロジェクト作成プロセス中に作成され、リポジトリの名前は **[プロジェクトリソース]** の詳細を入力するときに選択した名前です。ブループリント作成プロセス中にワークフローリリースを生成することを選択した場合、**[ブループリントビルダー]** ブループリントを使用して公開ワークフローがブループリントに作成されます。ワークフローは、最新バージョンを自動的に公開します。

## スペースのブループリント
<a name="space-blueprints-concept"></a>

スペースのブループリントセクションに移動すると、**[スペースブループリント]** テーブルからすべての **[ブループリント]** を表示および管理できます。ブループリントがスペースに公開されると、スペースブループリントとして利用可能になり、スペースのブループリントカタログに追加および削除されます。また、スペースの **[ブループリント]** セクションで公開許可を管理し、ブループリントを削除することもできます。詳細については、「[カスタムブループリントの詳細、バージョン、プロジェクトの表示](view-bp.md)」を参照してください。

## スペースブループリントカタログ
<a name="blueprint-catalog-concept"></a>

スペースのブループリントカタログから追加されたすべてのカスタムブループリントを表示できます。これは、スペースメンバーがカスタムブループリントを選択して新しいプロジェクトを作成できる場所です。このカタログは CodeCatalyst カタログとは異なります。このカタログには、すべてのスペースメンバーに使用可能なブループリントが既にあります。詳細については、「[CodeCatalyst ブループリントを使用した包括的なプロジェクトの作成ブループリントを使用した包括的なプロジェクトの作成](project-blueprints.md)」を参照してください。

## 合成
<a name="synthesis-concept"></a>

合成は、プロジェクト内のソースコード、設定、リソースを表す CodeCatalyst プロジェクトバンドルを生成するプロセスです。その後、バンドルは CodeCatalyst デプロイ API オペレーションによってプロジェクトにデプロイされます。このプロセスは、カスタムブループリントを開発しながらローカルで実行でき、CodeCatalyst でプロジェクトを作成せずにプロジェクトの作成をエミュレートできます。次のコマンドを使用して合成を実行できます。

```
yarn blueprint:synth             # fast mode
yarn blueprint:synth --cache     # wizard emulation mode
```

ブループリントは、`defaults.json` にマージされたオプションを使用してメイン `blueprint.ts` クラスを呼び出すことで開始します。`synth/synth.[options-name]/proposed-bundle/` フォルダの下に新しいプロジェクトバンドルが生成されます。出力には、設定したオプションを考慮して、カスタムブループリントが生成するプロジェクトバンドルが含まれます。これには、設定した[部分的なオプション](#partial-options-concept)も含まれます。

## 再合成
<a name="resynthesis-concept"></a>

再合成は、異なるブループリントオプションまたは既存のプロジェクトのブループリントバージョンを使用してブループリントを再生成するプロセスです。ブループリント作成者は、カスタムブループリントコードでカスタムマージ戦略を定義できます。`.ownership-file` でオーナーシップの境界を定義して、ブループリントの更新が許可されるコードベースの部分を指定することもできます。カスタムブループリントは `.ownership-file` の更新を提案できますが、カスタムブループリントを使用するプロジェクトデベロッパーは、プロジェクトのオーナーシップの境界を決定できます。カスタムブループリントを公開する前に、再合成をローカルで実行し、テストと更新を行えます。再同期を実行するには、次のコマンドを使用します。

```
yarn blueprint:resynth             # fast mode
yarn blueprint:resynth --cache     # wizard emulation mode
```

ブループリントは、`defaults.json` にマージされたオプションを使用してメイン `blueprint.ts` クラスを呼び出すことで開始します。`synth/resynth.[options-name]/` フォルダの下に新しいプロジェクトバンドルが生成されます。出力には、設定したオプションを考慮して、カスタムブループリントが生成するプロジェクトバンドルが含まれます。これには、設定した[部分的なオプション](#partial-options-concept)も含まれます。

合成および再合成プロセス後に、次のコンテンツが作成されます。
+ **proposed-bundle** - ターゲットブループリントバージョンの新しいオプションで実行された場合の合成の出力です。
+ **existing-bundle** - 既存のプロジェクトのモックです。このフォルダに何もない場合、`proposed-bundle` と同じ出力で生成されます。
+ **ancestor-bundle** - 以前のバージョン、以前のオプション、または組み合わせで実行したときにブループリントが生成する内容のモックです。このフォルダに何もない場合、`proposed-bundle` と同じ出力で生成されます。
+ **resolved-bundle** - バンドルは常に再生成され、デフォルトで `proposed-bundle`、`existing-bundle`、`ancestor-bundle` 間の 3 方向マージになります。このバンドルは、再合成がローカルに出力するエミュレーションを提供します。

ブループリント出力バンドルの詳細については、「[再合成によってファイルを生成する](merge-strategies-lm.md#three-way-merge-lm)」を参照してください。

## 部分的なオプション
<a name="partial-options-concept"></a>

`Options` インターフェイス全体を列挙する必要`src/wizard-configuration/`のない にオプションバリエーションを追加でき、オプションは`defaults.json`ファイルの上部にマージされます。これにより、特定のオプション間でテストケースをカスタマイズできます。

**例:**

`Options` インターフェイス

```
{
  language: "Python" | "Java" | "Typescript",
  repositoryName: string
  ...
}
```

`defaults.json` ファイル:

```
{
  language: "Python",
  repositoryName: "Myrepo"
  ...
}
```

追加の設定のヒント
+ 

  ```
  #wizard-config-typescript-test.json
  {
    language: "Typescript",
  }
  ```
+ 

  ```
  #wizard-config-java-test.json
  {
    language: "Java",
  }
  ```

## プロジェン
<a name="projen-concept"></a>

Projen は、カスタムブループリントが更新と一貫性を維持するために使用するオープンソースツールです。ブループリントは Projen パッケージとして提供されます。このフレームワークでは、プロジェクトをビルド、バンドル、公開でき、インターフェイスを使用してプロジェクトの設定と設定を管理できます。

Projen を使用して、ブループリントを作成した後でも、大規模な更新を行うことができます。Projen ツールは、プロジェクトバンドルを生成するブループリント合成の基盤となるテクノロジーです。Projen はプロジェクトの構成を所有しており、ブループリント作成者としてユーザーに影響を与えません。`yarn projen` を実行して、依存関係を追加した後にプロジェクトの設定を再生成することも、`projenrc.ts`ファイル内のオプションを変更することもできます。Projen は、プロジェクトを合成するためのカスタムブループリントの基礎となる生成ツールでもあります。詳細については、GitHub で「[ プロジェクト](https://github.com/projen/projen)」を参照してください。Projen スタックの詳細については、[Projen のドキュメント](http://projen.io/)を参照してください。