最終更新日 2025年02月19日(水)
作成したカスタムの buildpack を Heroku Buildpack Registry に追加すると、Heroku コミュニティがその buildpack を検索できます。
この記事は、クラシック buildpack にのみ適用されます。
Buildpack Registry の機能
カスタムの buildpack を登録すると、Heroku CLI から検索可能になります。
Buildpack Registry によって、次の作業が容易になります。
- buildpack の説明とカテゴリを指定する
- buildpack の Heroku 名前空間を選択する
- buildpack の新しいバージョンを公開し、エラーが発生した場合はロールバックする
- buildpack の意図したサポートレベルを指定する
独自のアプリで使用するために buildpack を登録する必要はありません。
buildpack の登録
buildpack の登録と公開はすべて、Heroku パートナーポータルから実行できます。ただし、Heroku CLI を使用する場合は、Buildpack Registry CLI プラグインによって公開、ロールバック、検索の機能が提供されます。プラグインをインストールするには、次のように実行します。
$ heroku plugins:install @heroku-cli/plugin-buildpack-registry
その後、次の CLI コマンドでポータルを開きます。
$ heroku buildpacks:register
Buildpacks タブで、Create Buildpack (buildpack の作成) をクリックします。
次に buildpack に関する情報を入力します。

- buildpack の所有者を選択します。Heroku チームまたは個人ユーザーアカウントのどちらかを指定できます。
- buildpack の名前空間を指定するか、作成済みのものを選択します (名前空間の詳細)。
- buildpack の名前を指定します。buildpack の名前の中で “buildpack” は使用しないでください。  
- buildpack の GitHub リポジトリを指定して - Connect(接続) をクリックします。buildpack を公開するには、buildpack のリポジトリにアクセスできる必要があります。buildpack API ドキュメントで定義されている規約に buildpack が準拠している必要もあります。
- 短い説明を追加します。 
- buildpack のカテゴリを選択します。  
- buildpack のアイコンを指定します。アイコンを指定しない場合、作業者の GitHub プロフィール画像が使用されます。 
- Heroku コミュニティのメンバーが buildpack のサポートを受けるメインの方法を指定します。 - GitHub のイシュー、Web サイト、メールアドレスのどれを使用して buildpack のサポートを提供するか指定できます。buildpack のサポートを提供しないことも選択できます。
- 提供するサポートのレベルは公開者の自由です。カスタムの buildpack に関して Heroku から補足サポートが提供されることはありません。
 
CLI プラグインのインストール
buildpack の登録と公開はすべて、Heroku パートナーポータルから実行できます。ただし、Heroku CLI を使用する場合は、Buildpack Registry CLI プラグインによって公開とロールバックの機能が提供されます。プラグインをインストールするには、次のように実行します。
$ heroku plugins:install @heroku-cli/plugin-buildpack-registry
プラグインによって提供されるものを含め、すべての buildpack CLI コマンドのリストを表示するには、次のように実行します。
$ heroku help buildpacks
buildpack のバージョンの公開
buildpack を登録した後に、その最初のバージョンを公開できます。特定のブランチまたは GitHub タグのどちらかを公開できます。
コミットを main にマージし、GitHub タグを使用して新しいバージョンを示すことをお勧めします。タグがあれば、問題が発生した場合に buildpack の古いバージョンに容易にロールバックできます。
main ブランチを公開する場合、main ブランチへの将来の更新は自動的に公開されません。

CLI からの公開
buildpack のバージョンを CLI から公開するには、buildpack の名前空間と名前に加えて、公開するタグまたはブランチを指定します。
$ heroku buildpacks:publish jbyrum/special-python main
ロールバック
buildpack の新しいバージョンを公開してエラーが発生した場合、Dashboard から簡単にロールバックできます。以前に定義したタグで、新しいバグが含まれていないものを公開するだけです。

CLI からのロールバック
このコマンドは、以前に公開されたバージョンに buildpack をロールバックします。
$ heroku buildpacks:rollback jbyrum/special-python
buildpack のアーカイブ化
Buildpack Registry での buildpack の公開を停止したい場合、次のように実行して buildpack をアーカイブ化できます。
$ heroku buildpacks:archive jbyrum/special-python
buildpack のアーカイブ化は安全な操作であり、その buildpack を使用中のアプリへの影響はありません。
buildpack の検索
CLI から buildpack を検索できます。
$ heroku buildpacks:search java
Buildpack    Category   Description
───────────  ─────────  ──────────────────────────────────
heroku/java  languages  Official Heroku Buildpack for Java
buildpack 記述子の作成
buildpack.toml ファイルを GitHub リポジトリのルートディレクトリに作成して、Buildpack Registry サービスにメタデータと指示を提供できます。このファイルの例は次のようになります。
[buildpack]
name = "Ruby"
  [publish.Ignore]
  files = [
    "etc/",
    "spec/",
    "test/",
    "vendor/",
    ".gitignore",
    ".travis.yml",
    "Gemfile",
    "Gemfile.lock"
]
構文についての詳細は、TOML のドキュメントを参照してください。このファイルの例については、「Ruby buildpack descriptor」(Ruby buildpack 記述子) を参照してください。
名前空間と buildpack の所有権
buildpack は、Heroku チームまたは個人ユーザーのどちらかによって所有されます。
最初の buildpack を登録するときは、まず名前空間を作成します。一度作成した名前空間は変更できません。
名前空間の要件は次のとおりです。
- 2 文字以上
- グローバルに一意
- 英数字とダッシュのみを含む
名前空間の例:
| 所有者 | エンティティタイプ | 名前空間 | 
|---|---|---|
| Acme Design Team | Enterprise Team / Heroku チーム | acme-design | 
| Jon Byrum | 個人 | jbyrum | 
GitHub または Docker Hub で使用するものと同じ名前空間を使用することをお勧めします。
名前空間のルール
- Heroku の名前空間は先着順で提供され、すぐにアクティブに使用することが前提です。将来使用するためにアクティブでない状態で名前空間を保有し続けたり、名前を不当に占拠 (スクワッティング) したりする行為は禁止されています。
- Heroku は、アクティブでない名前空間をその裁量で名前変更または削除する権利を留保しています。
- 名前空間の販売、購入、または名前空間と引き換えにその他の形態の支払いを唆す行為は禁止されており、アカウント永久停止の事由となる場合があります。
- Buildpack Registry 内の名前空間による商標権侵害の申し立ては、Heroku サポートまでご連絡ください。
buildpack の利用規約
独自の利用規約を GitHub リポジトリに提供しない限り、buildpack の利用規約は Heroku 利用規約 (デフォルト) によって管理されます。一般的な方法として、README ファイルに利用規約へのリンクを示すか、利用規約をライセンスファイルとして GitHub リポジトリに追加します。