Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • ドキュメント
  • 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 (アプリコンテナ)
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • コマンドライン
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリー
    • 継続的統合
  • 言語サポート
    • Node.js
    • Ruby
      • Bundler の使用
      • Rails のサポート
    • Python
      • Python でのバックグランドジョブ
      • Django の使用
    • Java
      • Maven の使用
      • Java でのデータベース操作
      • Spring Boot の使用
      • Java の高度なトピック
    • PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres Getting Started
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
    • Heroku Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
    • コンプライアンス
  • Heroku Enterprise
    • Private Space
      • インフラストラクチャネットワーキング
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
    • シングルサインオン (SSO)
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Integrating with Salesforce
  • Heroku の拡張
  • レビューアプリ (新しいバージョン)

レビューアプリ (新しいバージョン)

日本語 — Switch to English

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

最終更新日 2022年11月17日(木)

Table of Contents

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

Heroku dyno、Heroku Postgres、および Heroku Data for Redis® の無料プランは 2022 年 11 月 28 日で提供を終了します​。詳細は、FAQ​ を参照してください。 資格のある学生の皆様は、新しい Heroku for GitHub Students プログラム​を通じてプラットフォームクレジットを申請できます。

 

この記事は、2019 年 11 月 7 日に一般提供 (GA) リリースされた新しいバージョンの Heroku Review Apps に関するものです。これよりも古いバージョン​を使用している場合は、アップグレードすることを強くお勧めします。11 月 7 日以降に初めてレビューアプリを有効化にするユーザーについては、デフォルトで新しいバージョンのレビューアプリが有効化された状態になります。 11 月 7 日以降、古いバージョン​の Heroku Review Apps は CLI でサポートされなくなります。CLI コマンドを使用して有効化、無効化、または設定できるのは、この新しいバージョンの Heroku Review Apps のみです。 古いバージョンの Heroku Review Apps から新しいバージョンにアップグレードし、新しい機能を利用することを計画している場合は、このナレッジベースの記事​にある簡単な移行手順を参照してください。

 

Heroku Review Apps を新しいバージョンにアップグレードした後、古いバージョンに戻すことはできません。

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

レビューアプリは、プルリクエストごとに自動的に起動するように設定することも、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​ (レビューアプリの有効化) オプションを選択できます。

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

すでにレビューアプリを有効化している場合は、パイプラインの Settings​ (設定) タブで Upgrade​ (アップグレード) をクリックします。既存のレビューアプリがある場合、自動的に新しいバージョンに移行されます。 新しいレビューアプリの有効化

パイプラインの REVIEW APPS​ 列から新しいレビューアプリにアップグレードすることもできます。 新しいレビューアプリの有効化

アップグレード中にプルリクエストに失敗した場合や、プルリクエストに呼応してレビューアプリを自動生成する 「Automatically create apps」 (アプリの自動作成) オプションを選択していない場合、アップグレード後の新しいバージョンでレビューアプリは表示されません。最良の結果を得るために、失敗したプルリクエストを確認し、レビューアプリ作成オプションを更新してください。

URL パターンの選択

レビューアプリが有効になるか、または古いバージョンからのアップグレードが完了したら、パイプラインの設定タブに移動し、そのレビューアプリの URL パターンを確認して更新します。デフォルトは 「Random」 (ランダム) に設定されていますが、「Update URL pattern」 (URL パターンの更新) オプションを選択するとサイドパネルが開き、そこでランダムな名前から予測可能な名前に変更できます。

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

アクセス許可の設定

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

古いバージョンのレビューアプリ​のユーザーの場合、新しいパイプラインレベルの一時的なアプリのアクセス許可を使用してレビューアプリのアクセス許可を管理することはできません。ただし、ユーザーが CI を有効にしている場合は、これらのアクセス許可を使用して 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 での動作と同じように、新しいバージョンのレビューアプリでは “環境” キーがサポートされます。レビューアプリに固有の設定については、environments.review​ キーを使用できます。たとえば、異なるデータベースプランをレビューアプリに使用したい場合、次のような設定を使用できます。environments.review​ キー内でネストされている情報はすべて、基本設定にマージされます。

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

レビューアプリ名

この新しいバージョンのレビューアプリでは、何らかのランダム性を使用して名前の競合を防ぎます。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​ は変更される可能性があります。レビューアプリの作成フローでしか利用できず、アプリの名前が変更された場合は更新されません。

レビューアプリの無効化

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

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

レビューアプリと 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 日、または 30 日が経過したら自動的に破棄されるように設定できます。

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

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

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

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

レビューアプリ API

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

機能の変更

レビューアプリの以前のバージョン​から今回の新しいバージョンまでの間に行われた変更の概要は以下のとおりです。

  • 一般公開 API がレビューアプリに追加されました。
  • レビューアプリによって生成されるアプリ名はランダムまたは予測可能にできます。ユーザーが環境やユースケースに応じて選択できます。
  • プルリクエストは不要になりました。
  • 新しいバージョンのレビューアプリは親アプリをサポートしません。継承される設定は app.json​ またはパイプラインの環境設定で指定します。以前に親アプリによって処理されたアクセス許可やユーザーアクセスを設定するには、新しいパイプラインアクセスタブを使用します。
  • 同じリポジトリの複数のパイプラインでレビューアプリを有効化できます。
  • レビューアプリ (および CI アプリ) のアクセス許可が、新しいパイプラインアクセスタブ​を使用して容易に管理できるようになりました。

API を利用して、複雑なワークフローを自動化したり、他の CI ツールやテストアプリケーションと簡単に統合したりできます。さらに、複数のパイプラインを連携させたり、Heroku へのアクセスを付与しなくても外部のユーザーやチームがさまざまなブランチのステータスを確認できるように外部用のダッシュボードを作成したりできます。GitHub プルリクエストが不要になることで、GitHub を使用しないユーザーでも、レビューアプリを利用して開発フローを自動化したり、あるいは単に、デモ目的で新しいインスタンスを起動したりできるようになります。

アクセス許可の変更

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

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

よくある質問

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

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

Fourchette とレビューアプリ

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

関連カテゴリー

  • Heroku の拡張

Information & Support

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

Language Reference

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

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies
  • Cookie Preferences