Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Node.js Behavior in Heroku
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
    • Heroku Inference
      • Inference API
      • Quick Start Guides
      • AI Models
      • Inference Essentials
    • Vector Database
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • Heroku の拡張
  • Platform API
  • Platform API を使用したアプリのセットアップ

Platform API を使用したアプリのセットアップ

日本語 — Switch to English

この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。

最終更新日 2024年05月08日(水)

Table of Contents

  • セットアップの準備
  • アプリのセットアップの作成
  • セットアップステータスのポーリング
  • 背後での作業
  • デプロイされたアプリ

この記事では、Platform API​ の app-setups​ リソースの使用方法について説明します。このリソースを、ソースコードに埋め込まれた app.json​ マニフェストファイル​と共に使用して、プログラムでアプリをセットアップすることができます。

アプリのセットアップは、Heroku Button​ を強化するテクノロジです。保守するソースコードのセットアップを簡単にするために、README または関連するガイドおよびチュートリアルに Heroku Button を追加することを検討してください。

ここで示すいくつかのシナリオでは、保守するソースコードで app.json​ および app-setups​ が役立つ場合があります。

  • ステージングアプリでテストするために共同作業者が各自のソースコードをセットアップして Heroku にデプロイする作業を簡単にしたい
  • すぐにデプロイできるアプリまたはフレームワークを管理していて、他の人にもそれをすばやく Heroku にデプロイして試してもらいたい

app-setups​ リソースは、アプリケーションのソースコードの tar アーカイブを受け取り、app.json​ マニフェストファイルを探し、それを使用して、Heroku へのアプリケーションの初回セットアップを調整し、アプリケーションのデプロイとリリースを効率化します。

セットアップの準備

app-setups​ リソースを使用して単純なアプリケーションをデプロイしたいと考えていると仮定します。これは独自のアプリケーションかもしれませんし、興味のあるサンプルまたはテンプレートかもしれません。

ruby-rails-sample​ サンプルアプリケーションはそのような例です。ここでは例として Ruby を使用しているだけであり、どの言語で記述されたアプリでもこの API を使用できることに注意してください。

最初の手順では、app.json​ 設定ファイルをアプリに追加します。このアプリの設定には次のものが含まれます。

  • テンプレートをカスタマイズするためのランタイム環境内の環境設定
  • いくつかのアドオン
    • ログ記録用の Papertrail
    • データベース用の Heroku Postgres
  • データベースを準備するためにデプロイ後に実行されるコマンド。

API を呼び出すには、そのソース tarball の URL が必要です。この例では、この URL​ を使用します。API では、この設定情報を含む app.json​ ファイルが、ソースバンドルのディレクトリ構造のルートに存在していることを期待します。

パブリック GitHub リポジトリをソースコード用に使用している場合、各リポジトリに固有で、リポジトリの内容の tarball に解決する URL が GitHub によって提供されます。この URL は通常、次のようになります。https://github.com/<username>/<repo name>/tarball/master/

アプリのセットアップの作成

app.json​ を含むソース tarball を使用して https://api.heroku.com/app-setups​ エンドポイントを呼び出し、app.json​ に対応したアプリケーションを Heroku 上でセットアップします。アプリケーションのソースコードの tarball を指すソース URL がリクエストの本体に含まれている必要があります。

cURL を使用して app-setups​ エンドポイントを呼び出してみましょう。

$ curl -n -X POST https://api.heroku.com/app-setups \
-H "Content-Type:application/json" \
-H "Accept:application/vnd.heroku+json; version=3" \
-d '{"source_blob": { "url":"https://github.com/heroku/ruby-rails-sample/tarball/master/"} }'

必要に応じて、overrides​ セクションをリクエストに含めることで、app.json​ で指定された環境変数の値を提供する、デフォルト値を上書きする、または追加の環境変数を提供することができます。app.json​のうち上書きできるのは env​ セクションの部分だけです。

$ curl -n -X POST https://api.heroku.com/app-setups \
-H "Content-Type:application/json" \
-H "Accept:application/vnd.heroku+json; version=3" \
-d '{"source_blob": { "url":"https://github.com/heroku/ruby-rails-sample/tarball/master/"},
"overrides": {"env": { "RAILS_ENV":"development" } } }'

Heroku では、生成されたアプリ名で Heroku アプリを作成することでアプリケーションのセットアップを開始し、すぐに応答を返します。この応答に含まれている ID を後のリクエストで使用できます。

{
    "id": "df1c2983-fbde-455b-8e7b-e17c16bdf757",
    "failure_message": null,
    "status": "pending",
    "app": {
        "id": "888ee9fb-c090-499b-a115-2f335a1f0ef5",
        "name": "pacific-peak-6986"
    },
    "build": {
        "id": null,
        "status": null
    },
    "manifest_errors": [],
    "postdeploy": {
        "output": null,
        "exit_code": null
    },
    "resolved_success_url": null,
    "created_at": "2014-05-09T18:41:35+00:00",
    "updated_at": "2014-05-09T18:41:35+00:00"
}

アプリの作成に失敗する場合があります。その場合、失敗の詳細を含む次のような応答が返されます。

{ "id": "invalid_params", "message": "You've reached the limit of 5 apps for unverified accounts. Add a credit card to verify your account." }

セットアップステータスのポーリング

ID を使用して API をポーリングし、最新のステータスを取得します。

$ curl -n https://api.heroku.com/app-setups/df1c2983-fbde-455b-8e7b-e17c16bdf757 \
-H "Content-Type:application/json" \
-H "Accept:application/vnd.heroku+json; version=3"

ビルドが開始されたときの応答は次のとおりです。

{
  "id": "df1c2983-fbde-455b-8e7b-e17c16bdf757",
  "failure_message": null,
  "status": "pending",
  "app": {
    "id": "888ee9fb-c090-499b-a115-2f335a1f0ef5",
    "name": "pacific-peak-6986"
  },
  "build": {
    "id": "06503167-f75e-4ad6-bd06-4d5da3825eb5",
    "status": "pending"
   },
   "resolved_success_url": null,
   ...
}

ステータスが pending​ から succeeded​ または failed​ に変わるまでポーリングを続けます。

セットアップ中に問題が発生した場合、応答でそれらのエラーが示されます。

{
  "id": "df1c2983-fbde-455b-8e7b-e17c16bdf757",
  "failure_message": "app.json not found",
  "status": "failed",
  "app": {
    "id": "888ee9fb-c090-499b-a115-2f335a1f0ef5",
     "name": "pacific-peak-6986"
  },
  ...
}

セットアッププロセスのどこかで手順が失敗した場合、アプリは削除されますが、セットアップのステータスはいつでも確認できます。

ビルドステータスが succeeded​ または failed​ に更新されたら、ビルド ID を使用して Platform API を呼び出し、ビルドのより詳細なステータスを取得できます。詳細は、「Platform API を使用したビルドとリリース​」を参照してください。ビルドステータスのリクエストを作成するには、セットアップ中のアプリの名前とビルド ID の両方が必要です。これらはどちらも、前出の応答に含まれています。

$ curl -n -X GET https://api.heroku.com/apps/pacific-peak-6986/builds/06503167-f75e-4ad6-bd06-4d5da3825eb5/result \
-H "Content-Type:application/json" \
-H "Accept:application/vnd.heroku+json; version=3"

これにより、ビルド出力のすべての行を含む詳細なビルド結果が返されます。

{
  "build": {
    "id": "06503167-f75e-4ad6-bd06-4d5da3825eb5",
    "status": "succeeded"
  },
  "exit_code": 0,
  "lines": [
    {
      "stream": "STDOUT",
      "line": "\n"
     },
     {
       "stream": "STDOUT",
       "line": "-----> Ruby app detected\n"
     },
     ...

デプロイ後スクリプトの出力は、全体的なセットアップステータスのポーリングリクエストへの応答内でインラインで提供されます。

"postdeploy": {
  "output": "",
  "exit_code": 0
}

ステータスが succeeded​ の場合、セットアップの完了時にユーザーをリダイレクトする先の完全修飾 URL が resolved_success_url​ に設定されます。この値は app.json​ マニフェストファイルの success_url​ 属性から決定されます。success_url​が絶対 URL の場合、そのまま返されます。相対 URL の場合、アプリの web_url​ のコンテキストで解決されます。

"resolved_success_url": "http://pacific-peak-6986.herokuapp.com/"

背後での作業

次に示すのは、app.json​ ファイル内のさまざまな要素に対して Heroku Platform API が実行する処理の概要です。app.json​を使用してセットアップしたアプリは、通常、Git ベースのワークフロー​を使用してデプロイしたアプリと同じように動作します。app-setups では Build API を使用するため、ソース tarball が GitHub から取得された場合、それらのソース tarball には Git サブモジュールが復元されないことに注意してください。

この記事で説明するセットアップフローは API を通じて利用でき、Heroku Button を使用したアプリのセットアップ​を拡張するものです。

アプリケーションメタデータ

name​、description​、website​、repository​、logo​ の各フィールドは、アプリケーションに関する基本的な情報を提供します。これは、ユーザーが app.json​ の内容からアプリケーションの概要を把握するための情報にすぎず、アプリケーションのセットアップ中に API がこのセクションを使用するわけではありません。

"name": "Ruby on Rails",
"description": "A template for getting started with the popular Ruby framework.",
"website": "http://rubyonrails.org"

環境変数

env​ セクションは、一連の変数と、それらの変数に関する詳細情報で構成されます。変数ごとに、API によってアプリの環境設定​が行われます。

"env": {
  "RAILS_ENV": "production",
  "COOKIE_SECRET": {
    "description": "This gets generated",
    "generator": "secret"
  },
  "SETUP_BY": {
    "description": "Who initiated this setup",
    "required": false
  }
}

変数には説明とデフォルト値を指定できます。前の例で示したように、Platform API のリクエストには、これらのデフォルト値を上書きする値を提供する overrides​ セクションが含まれる場合があります。

app.json​ で値が指定されている場合、API はそれを必須の変数として扱います。Platform API が呼び出されるときに、overrides​ セクションで変数の値が指定されている必要があります。指定されていないと、セットアップは失敗します。省略可能な変数は "required": false​ を使用して指定できます。

一部の変数には、アプリケーションのデプロイおよびセットアップ時に生成される値が必要です。これらの変数のジェネレーターを指定できます。現在サポートされている唯一のジェネレーターは、64 文字の 16 進文字列を生成する secret​ です。

アドオン

"addons": ["heroku-postgresql:essential-0", "papertrail"]

アプリの作成直後、またコードがビルドおよびリリースされる前に、API によってアドオンがプロビジョニングされます。app.json​では、アドオン名のみ、またはアドオン名と特定の層の組み合わせを指定できます。層を指定しない場合、Platform API は最下位層 (多くのアドオンでは無料層) をプロビジョニングします。

デプロイ後スクリプト

1 つのデプロイ後スクリプトを app.json​ ファイルで指定できます。このスクリプトは、アプリケーションがビルドおよびリリースされるとすぐ、Heroku によって One-off dyno​ で実行されます。このスクリプトはアプリケーションと同じ環境で実行され、その環境設定とアドオンにアクセスできます。

"scripts": {
  "postdeploy": "bundle exec rake db:migrate"
}

実行する複数のコマンドがある場合、それらをスクリプトに入れて、スクリプトをソースバンドルに追加し、そのスクリプトを実行するために使用するコマンドを postdeploy​ の値として指定します。アプリケーションと同じ言語でスクリプトを記述し、rails setup-script.rb​ などの適切なコマンドを指定することもできます。

デプロイされたアプリ

この例の Heroku アプリは、次の環境設定を使用してセットアップされています。

$ heroku config -a pacific-peak-6986

=== pacific-peak-6986 Config Vars
COOKIE_SECRET:              1e1867380b9365f2c212e31e9c43a87c17e82be0ce1a61406ea8274fac0680dc
DATABASE_URL:               postgres://bdlgvbfnitiwtf:DGuFLR87rMNFe7cr_y1HGwadMm@ec2-54-225-182-133.compute-1.amazonaws.com:5432/d8p7bm6d7onr10
HEROKU_POSTGRESQL_ONYX_URL: postgres://bdlgvbfnitiwtf:DGuFLR87rMNFe7cr_y1HGwadMm@ec2-54-225-182-133.compute-1.amazonaws.com:5432/d8p7bm6d7onr10
PAPERTRAIL_API_TOKEN:       VikcKA2wQf2H1ajww3s
RAILS_ENV:                  development
SETUP_BY:                   MyDeployerScript

次のアドオンがプロビジョニングされています。

$ heroku addons -a pacific-peak-6986

=== pacific-peak-6986 Configured Add-ons
heroku-postgresql:essential-0  HEROKU_POSTGRESQL_ONYX
papertrail:choklad

データベースが移行され、アプリケーションはトラフィックを処理する準備ができています。

Heroku アプリに関連付けられた Git リポジトリにソースコードが準備されています。アプリのコーディングを続行し、標準の git push​ デプロイで変更をプッシュするには、アプリを複製するだけです。

$ heroku git:clone pacific-peak-6986

Cloning from app 'pacific-peak-6986'...
Cloning into 'pacific-peak-6986'...
Initializing repository, done.
remote: Counting objects: 77, done.
remote: Compressing objects: 100% (69/69), done.
remote: Total 77 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (77/77), 17.85 KiB | 0 bytes/s, done.
Resolving deltas: 100% (2/2), done.
Checking connectivity... done

関連カテゴリー

  • Platform API
ゼロからの slug の作成 Platform API を使用した slug のコピー

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices