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 の拡張
  • Review Apps

Review Apps

日本語 — Switch to English

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

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

Table of Contents

  • セットアップ
  • URL パターンの選択
  • アクセス許可の設定
  • レビューアプリの作成
  • レビューアプリの表示
  • 設定
  • レビューアプリと CI
  • レビューアプリと Heroku Private Spaces
  • レビューアプリと Docker
  • レビューアプリの管理と費用
  • レビューアプリ API
  • アクセス許可の変更
  • よくある質問

レビューアプリは、完全かつ廃棄可能な Heroku アプリで、いずれかの GitHub プルリクエストのコードを実行します。共有可能でユニークな URL を個々に備える Review Apps は、コードベースへの変更を提案、テスト、およびマージするための優れた手段です。

レビューアプリは、プルリクエストごとに自動的に起動するように設定することも、Heroku Dashboard でアプリの 「Pipeline」 (パイプライン) ページから手動で作成することもできます。レビューアプリを使用するには、アプリで Heroku Pipelines​ と GitHub 統合​の両方を有効にする必要があることに注意してください。

セットアップ

前提条件

  • 既存のパイプライン。パイプラインとその作成についての詳細は、こちら​を参照してください。
  • アプリケーションのソースコードを含む GitHub.com 上の既存リポジトリ。

はじめに

レビューアプリを初めて扱う場合、Heroku Dashboard​ でパイプラインの Settings​ (設定) タブに移動します。このページで、対応する GitHub リポジトリにパイプラインを接続します。 パイプラインを GitHub リポジトリに接続

以前にレビューアプリを使用したことがない場合、app.json を設定することも必要な場合があります。詳細は、設定に関するセクション​および「app.json のスキーマ​」を参照してください。機密性が高く app.json に追加することが望ましくない環境設定の値がある場合、パイプラインの設定でレビューアプリの環境設定として設定します。

パイプラインの環境設定

app.json を設定した後、レビューアプリの初回ユーザーは、「Pipeline」 (パイプライン) タブの Settings​ (設定) タブまたはパイプラインの Review Apps​ 列のどちらかで Enable Review Apps​ (レビューアプリの有効化) オプションを選択できます。

レビューアプリの新規ユーザー

URL パターンの選択

Review Apps を有効にしたら、パイプラインの Settings​ (設定) タブにアクセスし、URL パターンをチェックして更新します。デフォルトはランダムに設定されていますが、Update URL pattern​ (URL パターンの更新) をクリックすると、ランダムな名前または予測可能な名前のオプションを含むサイドパネルが開きます。

Review Apps で予測可能な URL を使用すると、アプリがサブドメインの乗っ取り​にさらされる可能性があります。

新しいレビューアプリの有効化

アクセス許可の設定

パイプラインアクセスタブを使用して、パイプライン内のすべてのレビューアプリと CI アプリへのアクセスを管理できます。パイプラインレベルのアクセス許可についての詳細は、パイプラインの一時的なアプリのアクセス許可​を参照してください。

レビューアプリの作成

レビューアプリを作成すると、関連付けられたプルリクエストのベースになっているブランチの HEAD​ コミットが Heroku によってデプロイされます。ブランチが更新されるたびに、Heroku によって最新のコミットがレビューアプリにデプロイされます。

手動作成

アプリの 「Pipeline」 (パイプライン) ページには、接続中の GitHub リポジトリのプルリクエストでオープン状態のものが表示されます。リスト内のプルリクエストの横にある Create​ (作成) ボタンをクリックすると、そのリクエストに対してレビューアプリを手動で作成できます。

新しいレビューアプリの有効化

自動作成

自動作成では、アプリが接続している GitHub リポジトリでプルリクエストがオープンされるとすぐ、Heroku によってレビューアプリが作成されます。セキュリティおよび請求上の理由から、Heroku では、パブリックリポジトリへのプルリクエストのうちフォークから送信されたものに対しては、レビューアプリを自動的に作成しません​。なお、これらのプルリクエストに対してはレビューアプリを手動で作成できます。

PR が閉じられたときに自動的に破棄されるのは、自動的に作成されたレビューアプリだけです。

レビューアプリの表示

レビューアプリが作成されると、ブラウザで開くためのリンクが GitHub から (プルリクエストの Conversation​ (会話) タブで) 利用可能になります。

デプロイ通知

このリンクは、Heroku Dashboard (アプリの 「Pipeline」 (パイプライン) ページの 「Review Apps」 (レビューアプリ) 列) でも利用できます。

Heroku の 「Pipelines」 (パイプライン) ページのレビューアプリ​

他の Heroku アプリと同じように、レビューアプリの表示、管理、および検査ができます。View initial app setup​ (アプリの初期設定を表示) および View latest build​ (最新ビルドを表示) リンクをクリックすると、レビューアプリのデプロイステータスの詳細を表示できます。

レビューアプリのログ

設定

レビューアプリが動作するには、アプリの GitHub リポジトリのルートに app.json​ ファイルが必要です。app.json​ファイルは、プルリクエストのオープン時に作成される新しいアプリの設定に使用されます。

アドオンプロバイダーが指定するデフォルトの一時的プランにより、ユーザーが行ったプラン選択が上書きされる場合があります。デフォルトの一時的プランがアドオンプロバイダーによって指定されている場合、app.json​ で指定した各アドオンの新しいインスタンスは、そのプランを使用してプロビジョニングされます。これにより、プルリクエストをテストするための高速で低コストな依存関係のセットが提供される一方、アドオンパートナーはプロビジョニングコストを抑制できます。

一部のアドオンでは、レビューアプリと CI アプリをサポートしていません。レビューアプリと CI アプリをサポートしていないアドオンを使用しようとすると、<add-on service slug> has opted out of supporting Review and CI apps​ のようなエラーメッセージが表示されます。

 

すべての設定が、app.json​ またはパイプラインの Settings​ (設定) タブに存在している必要があります。

機密性の高い環境設定

機密性の高い環境設定は、パイプラインの設定の Review app config vars​ (レビューアプリの環境設定) セクションで設定します。レビューアプリの環境設定のうち、パイプラインの設定に含まれているものはすべて、app.json に含まれているかどうかに関係なく、レビューアプリの作成時にアプリに挿入されます。

app.json 内の環境

Heroku CI での動作と同じように、Review Apps では “環境” キーがサポートされます。レビューアプリに固有の設定については、environments.review​ キーを使用できます。たとえば、異なるデータベースプランをレビューアプリに使用したい場合、次のような設定を使用できます。environments.review​キー内でネストされている情報はすべて、基本設定にマージされます。

{
  "addons": ["heroku-postgresql:standard-0"],
  "environments": {
    "review": {
      "addons": ["heroku-postgresql:essential-0"]
      }
  }
}

レビューアプリ名

Review Apps では、何らかのランダム性を使用して名前の競合を防ぎます。HEROKU_APP_NAME​と正規表現を使用してアプリの詳細を推測する代わりに、自動的に挿入された環境変数​を使用することをお勧めします。

postdeploy スクリプト

app.json​ ファイルには、postdeploy​ コマンドを指定できる scripts​ セクションがあります。これを使用して 1 回限りの設定タスクを実行し、アプリとデータベースをテストの準備ができていてテストに便利な状態にします。postdeploy は、以下のような 1 回限りのタスクに便利です。

  • OAuth クライアントと DNS の設定
  • レビューアプリのテストデータベースへのシード/テストデータのロード

Ruby-on-Rails アプリの場合、postdeploy​ コマンドは次のようになります。

bundle exec rake db:schema:load db:seed

この場合、さらに設定しなくてもレビューアプリをテストに使用できるよう、db/seeds.rb​ ファイルによって包括的なデータがデータベースにシードされます。

コマンドが実行される dyno のサイズは、command​ および size​ キーでオブジェクトを指定する​ことによって設定できます。

postdeploy はアプリの作成後に一度だけ実行される

postdeploy​ は、アプリが初めて作成およびデプロイされた後に一度だけ実行されることに注意してください。それ以降に変更がデプロイされても実行されません​。レビューアプリの postdeploy​ スクリプトを再実行するには、プルリクエストをクローズして再度オープンする必要があります。そうすると、Heroku によってレビューアプリが破棄され、再作成されます。

デプロイ後スクリプトが失敗した場合、次回のプッシュ時にアプリを再作成し、デプロイ後スクリプトをもう一度実行します。

リリースフェーズを使用してプルリクエストの変更のたびにコマンドを実行する

プルリクエストの変更のたびにコマンドを実行するには、リリースフェーズ​を使用します。リリースフェーズは、CDN へのアセットのアップロード、キャッシュストアの無効化または準備、データベーススキーマの設定と移行の実行などのタスクに役立ちます。リリースフェーズは postdeploy スクリプトよりも先に実行されます。

データベースの内容全体をレビューアプリにコピーする操作は、現在サポートされていません。本番データをテストアプリにコピーすると、最近の顧客データを操作するときにデータ漏洩やその他のプログラミング上のミスのリスクがあります。代わりに、postdeploy​ コマンドで実行されるシードスクリプトを使用して、非本番データでデータベースを包括的にシードすることをお勧めします。

pr-predestroy スクリプト

app.json​ ファイルで、必要に応じて pr-predestroy​ スクリプトを指定できます。このスクリプトは、関連付けられたプルリクエストがマージまたはクローズされた後にレビューアプリが破棄されると実行されます。

{
  "name":"Node.js Sample",
  "scripts": {
    "postdeploy": "bin/bootstrap",
    "pr-predestroy": "bin/teardown"
  }
}

postdeploy​ の間にプロビジョニングされたすべてのリソースを破棄したり、その他のクリーンアップを実行したりするには、pr-predestroy​ スクリプトを使用します。

このコマンドはプルリクエスト (PR) アプリフローの中でのみ実行されるため “pr-” という接頭辞が付いています。

このスクリプトの出力はログドレインに送信されません。

Docker イメージを使用しているアプリは pr-predestroy​ スクリプトを使用できません。これらのスクリプトは、app.json​ ファイルに含まれていると無視されます。

コマンドが実行される dyno のサイズは、command​ および size​ キーでオブジェクトを指定する​ことによって設定できます。

挿入された環境変数

個々のレビューアプリの作成時に、以下の環境変数がアプリに追加されます。

  • HEROKU_APP_NAME​: レビューアプリの名前
  • HEROKU_BRANCH​: レビューアプリで追跡しているリモートブランチの名前
  • HEROKU_PR_NUMBER​: レビューアプリが自動的に作成された場合の GitHub プルリクエスト番号

スクリプト処理に役立つ、2 つの特別な環境設定がレビューアプリで利用できます。これらはすべてのレビューアプリで使用可能であり、app.json ファイルで指定する必要はありません。

HEROKU_APP_NAME​、HEROKU_BRANCH​、および HEROKU_PR_NUMBER​ は変更される可能性があります。レビューアプリの作成フローでしか利用できず、アプリの名前が変更された場合は更新されません。

レビューアプリの無効化

レビューアプリはいつでも無効化できます。無効化すると、新しいレビューアプリが作成されなくなります。

レビューアプリを無効化すると、既存の関連付けられているレビューアプリも削除されます​。

Heroku Postgres 拡張機能

2023 年 7 月 10 日以降、Essential 層データベースなどの Heroku Postgres データベースをプロビジョニングする新しいレビューアプリで、拡張機能はデフォルトで public​ スキーマにインストールされます​。拡張機能​が heroku_ext​ スキーマにあることをアプリケーションで想定している場合、エラーが発生する可能性があります。

CREATE EXTENSION…WITH SCHEMA…​ を使用して拡張機能のスキーマを定義できます。たとえば、レビューアプリで拡張機能を heroku_ext​ スキーマにインストールするには、データベースセットアップスクリプトで次のようにします。

CREATE EXTENSION extension_name WITH SCHEMA heroku_ext

レビューアプリと CI

パイプラインで Heroku CI​ を有効化している場合、プルリクエストへのすべての後続のコミットで、レビューアプリの更新されたビルドに対してテストが実行されることに注意してください。テスト結果は通常どおり、パイプラインの Tests​ (テスト) タブで確認できます。テストが失敗した場合でも​、更新されたコードがビルドおよびデプロイされます (プルリクエストはもともと実験的なものであるため、Heroku ではレビューアプリへのデプロイはブロックされません)。

以上の規則は、Heroku Pipelines と統合する他の CI システムにも当てはまります。

アプリへのコミットのたびに Heroku CI​ または別の CI サービスのいずれかが実行される場合は、レビューアプリの設定で 「Wait for CI to pass」 (CI の合格を待機する) にチェックを付けてください。そうしないと、CI が設定されていない場合に、テストに合格するまでレビューアプリがいつまでも待機する可能性があります。

レビューアプリと Heroku Private Spaces

Private Space​ は、dyno や特定の種類のアドオンを、分離されたネットワーク内に閉じ込めた形で実行するための専用環境です。Private Space 内のアプリは、パイプラインのどのステージも占有する可能性があります。

レビューアプリは、app.json​ ファイルでアプリの設定の一部としてリージョンまたは Space が指定されている限り、どの Private Space 内でも生成および実行できます。次に例を示します。

{
 "app": { "region": "us" }
}
{
 "app": { "space": "1234-abcd" }
}

レビューアプリと Docker

Dockerfile​ を使用してビルドを定義する場合、heroku.yml​ ファイルをプロジェクトにインクルードする必要があります。heroku.yml​がある場合、Heroku は指定された Docker イメージをビルドし、レビューアプリで使用します (app.json​ ファイルはまだ必要です)。

レビューアプリの管理と費用

レビューアプリによって使用される dyno とアドオンは、通常のアプリとまったく同じように課金されます。費用は秒単位で課金され、レビューアプリが存在している時間のみが請求対象になります。

ほとんどの場合、Heroku はデフォルトで、お客様のプランでレビューアプリに利用可能な dyno のうち最も安価なものを使用します。ただし、Private Space 内のアプリはデフォルトで private-m​ dyno を使用します。app.json​ファイルで、デフォルト以外の dyno サイズを指定できます。

レビューアプリが存在するのは、関連付けられたプルリクエストの存続期間中だけであり、アクティブでない状態で 1 日、2 日、5 日、14 日、または 30 日が経過したら自動的に破棄されるように設定できます。

パイプラインのメインページから Heroku レビューアプリを管理

アプリを実行およびテストするために、無料または低費用のアドオンプランでも十分な場合は、app.json​ でそれらのプランを指定することもできます。レビューアプリは通常は短命であり、存在している時間分しか請求されないため、月額料金は少額に収まるのが普通です。

自動的に作成されるレビューアプリの費用はすべて、アプリを GitHub に接続したユーザーが請求先になります。レビューアプリを手動で作成する場合、レビューアプリを作成したユーザーが費用の請求先になります。

詳細は、「使用と請求​」の記事を参照してください。

レビューアプリ API

Review Apps API は、Heroku の Platform API​ の拡張機能です。この API を使用して、レビューアプリを有効化、無効化、作成、および削除できます。詳細は、API ドキュメントを参照してください。特に、レビューアプリ​、レビューアプリの設定​、および環境設定​に関するセクションを参照してください。

アクセス許可の変更

パイプラインのアクセス許可と機能​に加えて、レビューアプリには以下のアクセス許可モデルの変更があります。

  • “管理者” ロールを持つすべての Heroku Team および Enterprise Team ユーザーに、チーム内のすべてのレビューアプリと CI アプリへのフルアクセスが与えられます。
  • “メンバー” ロールを持つすべての Heroku Team および Enterprise Team ユーザーに、チーム内のすべてのレビューアプリと CI アプリに対する “表示"、"デプロイ"、および "操作” アクセス許可が与えられます。ただし、これらの権限では、ユーザーはアプリケーションをプロモートできません。Enterprise Team の管理者は、ユーザーごとに権限を調整したり、自動参加の権限設定を変更したりできます。
  • ユーザーが GitHub でプルリクエストを作成すると、ユーザーの Heroku アカウントがアプリケーションにアクセスできる場合に限り、ユーザーはそのプルリクエストに対して生成されたレビューアプリを Heroku で表示できます。GitHub リポジトリでプルリクエストを作成するアクセス許可があっても、レビューアプリへのアクセスは保証されません。
  • 変更と GitHub へのコミットを行うユーザーが Heroku アプリにアクセスできない場合でも、新しいコミットに対してレビューアプリがビルドされます。
  • レビューアプリの作成には、パイプラインを GitHub にリンクするユーザーのトークンが使用されます。
  • パイプライン内のアプリに対する “共同作業者” アクセス許可を持つユーザーは、レビューアプリに自動的にはアクセスできません。レビューアプリと CI アプリへの共同作業者のアクセス権を与えるには、パイプラインのアクセスタブでそのユーザーを新しいアクセス許可の表に追加してください。

よくある質問

Git サブモジュールは機能しますか?

いいえ。サブモジュールを使用する GitHub リポジトリは一般的に Heroku に正常にデプロイされません。これは、repo-content の tarball が生成される場合は、GitHub にサブモジュールのコンテンツがないためです。

Fourchette とレビューアプリ

GitHub で作成されるプルリクエストに対して Heroku アプリを作成するというアイデアの先駆けは、Rainforest​ と Fourchette です。

関連カテゴリー

  • Heroku の拡張
Webhook イベント Webhook イベント

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