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

Heroku スターターガイド (Gradle)

​はじめに

このチュートリアルでは、Gradle アプリをデプロイする方法を簡単に紹介します。

少し時間を取って仕組みを学び、Heroku を最大限に活用できるようにしましょう。

このチュートリアルでは、以下が用意されていることを前提としています。

  • 無料の Heroku アカウント
  • Java 8 がインストールされている

Gradle の代わりに Maven を使用する場合は、『Heroku スターターガイド (Java)​』を参照してください。

​設定する

このステップでは、以前は Heroku Toolbelt と呼ばれていた Heroku Command Line Interface (CLI) をインストールします。 CLI は、アプリケーションの管理やスケール、アドオンのプロビジョニング、アプリケーションを Heroku で実行したときのログの表示に使用し、アプリケーションのローカル実行に役立ちます。

ご使用のプラットフォーム用のインストーラをダウンロードし、実行してください。

apple ロゴ​macOS

​インストーラをダウンロード

​Homebrew からも入手できます。

$ brew install heroku/brew/heroku
windows ロゴ​Windows

​ご使用の Windows に合ったインストーラをダウンロードします。

​64 ビット用インストーラ

​32 ビット用インストーラ

ubuntu ロゴ​Ubuntu 16 以降

​ターミナルで以下を実行します。

$ sudo snap install heroku --classic

​その他の Linux OS では Snap も利用できます​。

インストールが完了したら、ターミナルで heroku​ コマンドを使用できます。

​Windows では、コマンドプロンプト (cmd.exe) または Powershell を起動して、コマンドシェルを開きます。

インストールしたら、コマンドシェルで heroku​ コマンドを使用できます。

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   https://cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as me@example.com

認証は、heroku​ と git​ の両方のコマンドを動作可能にするために必要です。

外部の HTTP/HTTPS サービスへの接続にプロキシの使用が必要なファイアウォールを使っている場合は、heroku​ コマンドを実行する前に、ローカルの開発環境で HTTP_PROXY​ または HTTPS_PROXY​ 環境変数を設定​できます。

​アプリを準備する

このステップでは、デプロイできるシンプルなアプリケーションを準備します。

次のコマンドを実行してサンプルアプリケーションをクローンします。

$ git clone https://github.com/heroku/gradle-getting-started.git
$ cd gradle-getting-started

これで、シンプルなアプリケーションと、Gradle の依存関係マネージャーが使用する build.gradle​ ファイルを格納した、正常な Git リポジトリを準備できました。

​アプリをデプロイする

このステップでは、アプリを Heroku にデプロイします。

Heroku でアプリを作成すると、Heroku でソースコードを受け取ることができるよう準備できます。

$ heroku create
Creating app... done, stormy-bayou-48276
https://stormy-bayou-48276.herokuapp.com/ | https://git.heroku.com/stormy-bayou-48276.git

アプリを作成すると、heroku​ という名前の Git リモートリポジトリも作成され、ローカルの Git リポジトリと関連付けられます。

Heroku によってランダムなアプリ名 (この場合は warm-eyrie-9006​) が生成されます。パラメータを渡して独自のアプリ名を指定することもできます。

コードをデプロイします。

$ git push heroku master
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Gradle app detected
remote: -----> Spring Boot detected
remote: -----> Installing JDK 1.8... done
...

アプリケーションがデプロイされました。 アプリのインスタンスが 1 つ以上実行されていることを確認します。

$ heroku ps:scale web=1

アプリ名で生成された URL にあるアプリを開きます。 次のショートカットを使うと、簡単に Web サイトを開くことができます。

$ heroku open

​ログを表示する

Heroku では、すべてのアプリと Heroku コンポーネントの出力ストリームを、時系列のイベントストリームに集約してログを作成するため、1 か所ですべてのイベントを確認できます。

実行中のアプリに関する情報を表示するには、ログコマンド​の 1 つである、heroku logs​ を使います。

$ heroku logs --tail
2019-02-07T18:17:07.989806+00:00 app[web.1]: 2019-02-07 18:17:07.989  INFO 4 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
2019-02-07T18:17:08.543833+00:00 heroku[web.1]: State changed from starting to up
2019-02-07T18:17:08.538347+00:00 app[web.1]: 2019-02-07 18:17:08.538  INFO 4 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 48080 (http) with context path ''
2019-02-07T18:17:08.543461+00:00 app[web.1]: 2019-02-07 18:17:08.543  INFO 4 --- [           main] com.example.heroku.HerokuApplication     : Started HerokuApplication in 4.827 seconds (JVM running for 5.594)
2019-02-07T18:17:20.728559+00:00 app[web.1]: 2019-02-07 18:17:20.728  INFO 4 --- [io-48080-exec-3] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-02-07T18:17:20.728692+00:00 app[web.1]: 2019-02-07 18:17:20.728  INFO 4 --- [io-48080-exec-3] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-02-07T18:17:20.742328+00:00 app[web.1]: 2019-02-07 18:17:20.742  INFO 4 --- [io-48080-exec-3] o.s.web.servlet.DispatcherServlet        : Completed initialization in 14 ms

ブラウザで再びアプリケーションを表示すると、別のログメッセージが生成されます。ログのストリーム出力を停止するには、Control+C​ を押します。

​Procfile を定義する

Procfile​ は、アプリケーションのルートディレクトリにあるテキストファイルです。このファイルを使って、アプリの起動時に実行するコマンドを明示的に宣言します。

先ほどデプロイしたサンプルアプリの Procfile​ は、次のようになっています。

web: java -jar build/libs/gradle-getting-started-1.0.jar

単一のプロセスタイプの web​ と、その実行に必要なコマンドを宣言しています。 ここでは、web​ という名前が重要です。 これは、このプロセスタイプを Heroku の HTTP ルーティング​スタックにアタッチし、デプロイ後に Web トラフィックを受信することを宣言しています。

​Procfile​ の構文は重要です。Heroku では、Web dyno の起動時に、ここで指定されたコマンドがそのまま Unix 環境で実行されます。

​Windows のローカル環境で実行すると、Unix での環境変数 (​$JAVA_OPTS​) の受け渡し方法とパスの結合方法 (​:​​) は互換性がないため、エラーになる可能性があります。

Procfile には追加のプロセスタイプを含めることができます。 たとえば、アイテムをキューから外す処理を実行するバックグラウンドプロセスを追加で宣言できます。

​アプリをスケールする

現在、アプリは単一の Web dyno​ で実行されています。 dyno とは、Procfile​ で指定されているコマンドを実行する軽量のコンテナのようなものです。

実行されている dyno の数を確認するには、ps​ コマンドを使います。

$ heroku ps
Free dyno hours quota remaining this month: 1000h 0m (100%)
Free dyno usage for this app: 0h 0m (0%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping

=== web (Free): java -jar build/libs/gradle-getting-started-1.0.jar (1)
web.1: up 2020/05/20 13:08:41 +0200 (~ 10s ago)

デフォルトでは、アプリは Free dyno でデプロイされます。Free dyno は、アイドル状態 (トラフィックを何も受信しない状態) が 30 分続くとスリープします。​ スリープすると、スリープ解除するときの最初のリクエスト時に数秒の遅延が発生します。その後のリクエストは正常に処理されます。 Free dyno は、月ごとに割り当てられるアカウント別の Free dyno 時間​を消費します。割り当て時間が残っている限り、無料のアプリはすべて稼働し続けます。

dyno がスリープしないようにするには、「dyno タイプ​」の記事で紹介されている Hobby または Professional の dyno タイプにアップグレードできます。たとえば、アプリを Professional dyno に移行すると、Heroku に特定の数の dyno の実行を指示するコマンドを実行し、各 dyno で Web プロセスタイプを実行させて、アプリを簡単にスケールすることができます。

不正操作を防止するため、アプリケーションをスケールするには、アカウントの確認​が必要です。アカウントが未確認の場合は、確認用ページ​に転送されます。

​アプリの依存関係を宣言する

Heroku では、アプリのルートディレクトリに gradlew​ または build.gradle​ ファイルがあると、そのアプリを Gradle アプリと認識します。

デプロイしたデモ用アプリには、事前に build.gradle​ が用意されています (こちらを参照)​)。次に一部を抜粋して示します。

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    runtimeOnly 'org.postgresql:postgresql'
    runtimeOnly 'org.webjars:jquery:3.3.1-1'
    runtimeOnly 'org.webjars:jquery-ui:1.12.1'
    runtimeOnly 'org.webjars:bootstrap:4.1.3'
    runtimeOnly 'org.webjars:webjars-locator:0.38'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

build.gradle​ ファイルでは、アプリケーションと一緒にインストールする必要がある依存関係を指定します。 アプリをデプロイすると、Heroku はこのファイルを読み出し、./gradlew build​ コマンドを使用して依存関係をインストールします。

別の system.properties​ ファイルで、使用する Java のバージョンが判断されます(Heroku では、多数の異なるバージョン)​をサポートしています)。このファイル (オプション) の内容は、とても簡単です。

java.runtime.version=1.8

ローカルディレクトリで Gradle build​ タスクを実行して依存関係をインストールし、アプリをローカルで実行できるようにシステムを準備します。 このアプリには Java 8 が必要ですが、独自のアプリは別のバージョンの Java を使用してプッシュできます。

Windows では次のコマンドを実行します。

> gradlew.bat build

Mac および Linux では次のコマンドを実行します。

$ ./gradlew build

どちらの場合でも、次のような出力が表示されます。

BUILD SUCCESSFUL in 4s
5 actionable tasks: 5 executed

Unsupported major.minor version 52.0​ などのエラーが表示された場合は、Gradle は Java 7 を使用しようとしています。JAVA_HOME​ 環境変数が正しく設定されていることを確認してください。

Gradle プロセスは、アプリケーションの build/libs​ ディレクトリ内の単一の JAR ファイルに依存関係をコピーします。このプロセスは「ベンダー化」と呼ばれ、デフォルトでサンプルなどの Spring アプリで行われます。ただし、『Heroku での Gradle アプリのデプロイ​』ガイドに記述されているように手動で行うこともできます。

依存関係がインストールされたら、アプリをローカルで実行する準備は完了です。

​アプリをローカルで実行する

ローカルでアプリを実行するには、最初に、前のセクションで説明しているように gradlew build​ タスクを実行していることを確認します。次に、heroku local​ コマンドを使ってアプリケーションを起動します。このコマンドは、Heroku CLI の一部としてインストールされています。

Windows の場合は、代わりに `gradlew.bat bootRun`​ コマンドを使用してください。
$ heroku local web
...
1:08:59 PM web.1 |  2020-05-20 13:08:59.022  INFO 18294 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1064 ms
1:08:59 PM web.1 |  2020-05-20 13:08:59.232  INFO 18294 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
1:08:59 PM web.1 |  2020-05-20 13:08:59.360  INFO 18294 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
1:08:59 PM web.1 |  2020-05-20 13:08:59.723  INFO 18294 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 5000 (http) with context path ''

Heroku と同じように、heroku local​ も Procfile​ を確認して実行する内容を判断します。また、PORT​ 環境変数を設定することによって、アプリがバインドするポートを定義することもできます。この変数は、ファイル src/main/resources/application.properties​ で server.port​ として設定されています。

これでアプリは http://localhost:5000​ で実行できます。curl​ または Web ブラウザで機能していることをテストしてから、Ctrl+C​ をクリックして終了します。

heroku local​ は、アプリを実行するだけでなく、後のチュートリアルで説明する「環境設定」も設定します。

​ローカルの変更をプッシュする

このステップでは、アプリケーションへのローカルでの変更を Heroku に反映させる方法を学びます。 例として、アプリケーションを変更して依存関係を追加し、それを使用するコードも追加します。

次のように、build.gradle​ を編集して、jscience​ の依存関係を dependencies​ セクションに追加します。

ファイル build.gradle​ の 30 行目に以下を追加します。

compile "org.jscience:jscience:4.3.1"

起動時にこのライブラリが読み込まれるように、src/main/java/com/example/heroku/HerokuApplication.java​ を編集します。

ファイル src/main/java/com/example/heroku/HerokuApplication.java​ の 19 行目に以下を追加します。

import static javax.measure.unit.SI.KILOGRAM;
import javax.measure.quantity.Mass;
import org.jscience.physics.model.RelativisticModel;
import org.jscience.physics.amount.Amount;

次の hello​ メソッドを HerokuApplication.java​ に追加します。

ファイル src/main/java/com/example/heroku/HerokuApplication.java​ の 59 行目に以下を追加します。

@RequestMapping("/hello")
String hello(Map<String, Object> model) {
    RelativisticModel.select();
    Amount<Mass> m = Amount.valueOf("12 GeV").to(KILOGRAM);
    model.put("science", "E=mc^2: 12 GeV = " + m.toString());
    return "hello";
}

ファイル src/main/resources/templates/hello.html​ で、以下のように記述します。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" th:replace="~{fragments/layout :: layout (~{::body},'hello')}">
<body>
  <div class="container">
    <p th:text="${science}"/>
  </div>
</body>
</html>

HerokuApplication.java​ の最終的なソースコードはこちら​のようになります。 ローカルで行ったすべての変更の差分はこちら​です。

ローカルでテストします。

$ ./gradlew build
...

BUILD SUCCESSFUL in 4s
5 actionable tasks: 5 executed
$ heroku local web
...
1:09:07 PM web.1 |  2020-05-20 13:09:07.764  INFO 18433 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1079 ms
1:09:07 PM web.1 |  2020-05-20 13:09:07.978  INFO 18433 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
1:09:08 PM web.1 |  2020-05-20 13:09:08.102  INFO 18433 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
1:09:08 PM web.1 |  2020-05-20 13:09:08.490  INFO 18433 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 5000 (http) with context path ''

http://localhost:5000/hello​ の /hello​ ルートにあるアプリケーションにアクセスすると、高度な科学の対話が表示されます。

E=mc^2: 12 GeV = (2.139194076302506E-26 ± 1.4E-42) kg

次にデプロイします。 Heroku へのデプロイは、ほとんどの場合、このパターンで行います。 まず、変更したファイルをローカルの Git リポジトリに追加します。

$ git add .

次に、変更内容をリポジトリにコミットします。

$ git commit -m "Demo"

前と同じ方法でデプロイします。

$ git push heroku master

最後に、すべて正常に動作しているかどうかを確認します。

$ heroku open

​アドオンをプロビジョニングする

アドオンは、アプリケーションですぐに使える追加サービスを提供するサードパーティのクラウドサービスです。永続性、ログ記録、モニタリングなど、さまざまなアドオンがあります。

Heroku では、デフォルトで 1500 行のアプリケーションログが記録されますが、 完全なログストリームもサービスとして提供しています。複数のアドオンプロバイダーがこのサービスを利用し、ログの永続化、検索、メールや SMS 通知などの機能を実現するログサービスを提供しています。

このステップでは、このようなログに関するアドオンの 1 つである、Papertrail をプロビジョニングします。

Papertrail​ ログ記録アドオンをプロビジョニングします。

$ heroku addons:create papertrail
Creating papertrail on stormy-bayou-48276... free
Welcome to Papertrail. Questions and ideas are welcome (support@papertrailapp.com). Happy logging!
Created papertrail-fluffy-05784 as PAPERTRAIL_API_TOKEN
Use heroku addons:docs papertrail to view documentation

不正操作を防止するため、アドオンのプロビジョニングにはアカウントの確認​が必要です。アカウントが未確認の場合は、確認用ページ​に転送されます。

アドオンがデプロイされ、アプリケーション用に設定されました。 アプリのアドオンは、次のように一覧表示できます。

$ heroku addons

このアドオンが動作していることを確認するため、アプリケーションの Heroku URL に数回アクセスします。アクセスする度にログメッセージが生成され、Papertrail のアドオンに送られるようになります。 Papertrail のコンソールにアクセスし、ログメッセージを確認します。

$ heroku addons:open papertrail

ブラウザで Papertrail の Web コンソールが開き、最新のログイベントが表示されます。 このインターフェースでは、検索したり通知を設定したりできます。

イメージ

​One-off dyno を起動する

One-off dyno​ で、heroku run​ コマンドを使ってコマンド (通常はアプリの一部を構成するスクリプトやアプリケーション) を実行できます。 このコマンドでは、アプリの環境で試行錯誤するためにローカルのターミナルにアタッチされた REPL プロセスを起動したり、アプリケーションでデプロイしたコードを起動することもできます。

$ heroku run java -version
Running java -version on stormy-bayou-48276... connecting, run.2527 (Free)Running java -version on stormy-bayou-48276... up, run.2527 (Free)
openjdk version "1.8.0_252-heroku"
OpenJDK Runtime Environment (build 1.8.0_252-heroku-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

Error connecting to process​ というエラーが表示された場合は、ファイアウォールの設定​が必要な可能性があります。

必ず exit​ と入力してシェルを閉じ、dyno を終了してください。

​環境設定を定義する

Heroku では、設定を外部に置き、暗号鍵や外部リソースのアドレスなどのデータを環境設定​に保存できます。

環境設定は、ランタイムに環境変数としてアプリケーションに提供されます。 例として、src/main/java/com/example/heroku/HerokuApplication.java​ を編集し、環境変数 ENERGY​ から energy の値を繰り返し取得するメソッドを追加します。

ファイル src/main/java/com/example/heroku/HerokuApplication.java​ の 56 行目に以下を追加します。

@RequestMapping("/hello")
String hello(Map<String, Object> model) {
    RelativisticModel.select();
    String energy = System.getenv().get("ENERGY");
    if (energy == null) {
       energy = "12 GeV";
    }
    Amount<Mass> m = Amount.valueOf(energy).to(KILOGRAM);
    model.put("science", "E=mc^2: " + energy + " = "  + m.toString());
    return "hello";
}

次に、./gradlew build​ または gradlew.bat build​ をそれぞれ実行してこの変更が統合されるように、アプリをもう一度コンパイルします。

heroku local​ コマンドは、ローカルディレクトリにある .env​ ファイルの内容に応じて、環境を自動的に設定します。 プロジェクトのトップレベルディレクトリにはすでに .env​ ファイルがあり、以下の行が含まれています。

ENERGY=20 GeV

heroku local web​ でアプリを実行して http://localhost:5000​ にアクセスすると、対話の値として 20 GeV が表示されます。

Heroku で環境設定を設定するには、次のコマンドを実行します。

$ heroku config:set ENERGY="20 GeV"
Setting ENERGY and restarting stormy-bayou-48276... done, v7
ENERGY: 20 GeV

heroku config​ を使って設定した環境設定を表示します。

$ heroku config
=== stormy-bayou-48276 Config Vars
ENERGY:               20 GeV
PAPERTRAIL_API_TOKEN: sQlZUxphL3XFa0RnW4

変更したアプリケーションを Heroku にデプロイして、動作を確認します。

​データベースを使用する

add-on marketplace​ には、Redis や MongoDB、Postgres、MySQL など、多数のデータストアが揃っています。 このステップでは、無料の Heroku Postgres アドオンについて説明します。

初めに、このコマンドを実行して、PostgreSQL アドオンの新しいインスタンスをアプリにアタッチします。

$ heroku addons:create heroku-postgresql
Creating heroku-postgresql on stormy-bayou-48276... free
Database has been created and is available
 ! This database is empty. If upgrading, you can transfer
 ! data from another database with pg:copy
Created postgresql-shallow-55932 as DATABASE_URL
Use heroku addons:docs heroku-postgresql to view documentation

CLI で addons​ コマンドを使うと、アプリにプロビジョニングされたデータベースの詳細についてもう少し確認できます。

$ heroku addons

Add-on                                        Plan       Price  State
────────────────────────────────────────────  ─────────  ─────  ───────
heroku-postgresql (postgresql-shallow-55932)  hobby-dev  free   created
 └─ as DATABASE

papertrail (papertrail-fluffy-05784)          choklad    free   created
 └─ as PAPERTRAIL

The table above shows add-ons and the attachments to the current app (stormy-bayou-48276) or other apps.

アプリの環境設定を一覧表示すると、アプリがデータベースに接続するときに使用する URL (DATABASE_URL​) が表示されます。

$ heroku config
=== stormy-bayou-48276 Config Vars
DATABASE_URL:         postgres://tzzbgwdbhntgdl:a0383378128c3212881ae6e758ea6c8cdecd611d4f9943bdca5143742aea0115@ec2-34-200-72-77.compute-1.amazonaws.com:5432/det70282l3ul3a
ENERGY:               20 GeV
PAPERTRAIL_API_TOKEN: sQlZUxphL3XFa0RnW4

Heroku には、さらに詳細を表示する pg​ コマンドもあります。

$ heroku pg
=== DATABASE_URL
Plan:                  Hobby-dev
Status:                Available
Connections:           0/20
PG Version:            12.2
Created:               2020-05-20 11:10 UTC
Data Size:             7.9 MB
Tables:                0
Rows:                  0/10000 (In compliance)
Fork/Follow:           Unsupported
Rollback:              Unsupported
Continuous Protection: Off
Add-on:                postgresql-shallow-55932

表示内容から、Hobby のデータベース (無料) を使っており、実行している Postgres のバージョンは 9.3.3 で、1 行のデータがあることがわかります。

デプロイしたサンプルアプリにはデータベース機能が備わっています。これにはアプリの URL に /db​ を追加することでアクセスできます。 たとえば、アプリが https://wonderful-app-287.herokuapp.com/​ にデプロイされている場合は、https://wonderful-app-287.herokuapp.com/db​ にアクセスします。

データベースにアクセスするためのコードは簡単です。tick​ という名前のテーブルに値を挿入する方法は次のとおりです。

  @Value("${spring.datasource.url}")
  private String dbUrl;

  @Autowired
  private DataSource dataSource;

  @RequestMapping("/db")
  String db(Map<String, Object> model) {
    try (Connection connection = dataSource.getConnection()) {
      Statement stmt = connection.createStatement();
      stmt.executeUpdate("CREATE TABLE IF NOT EXISTS ticks (tick timestamp)");
      stmt.executeUpdate("INSERT INTO ticks VALUES (now())");
      ResultSet rs = stmt.executeQuery("SELECT tick FROM ticks");

      ArrayList<String> output = new ArrayList<String>();
      while (rs.next()) {
        output.add("Read from DB: " + rs.getTimestamp("tick"));
      }

      model.put("records", output);
      return "db";
    } catch (Exception e) {
      model.put("message", e.getMessage());
      return "error";
    }
  }

  @Bean
  public DataSource dataSource() throws SQLException {
    if (dbUrl == null || dbUrl.isEmpty()) {
      return new HikariDataSource();
    } else {
      HikariConfig config = new HikariConfig();
      config.setJdbcUrl(dbUrl);
      return new HikariDataSource(config);
    }
  }

これにより、/db​ ルートを使用してアプリにアクセスすると、tick​ テーブルに新しい行が追加され、その後、出力で描画できるようにすべての行が返されます。

build.gradle​ での heroku-jdbc​ 依存関係を介して使用可能にされる DatabaseUrl.extract()​ メソッドは、データベースアドオンにより設定された DATABASE_URL​ 環境変数を取得し、接続を確立します。

Git に対する変更をコミットし、続いて git push heroku master​ を実行することにより、Heroku に変更をデプロイします。

この後、アプリの /db​ ルートにアクセスすると、次のように表示されます。

Database Output
* Read from DB: 2014-08-08 14:48:25.155241
* Read from DB: 2014-08-08 14:51:32.287816
* Read from DB: 2014-08-08 14:51:52.667683

ローカル環境に Postgres がインストールされている​という前提で、heroku pg:psql​ コマンドを使ってリモートデータベースに接続し、すべての行を表示します。

$ heroku pg:psql
psql (10.1, server 9.6.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

DATABASE=> SELECT * FROM ticks;
            tick
----------------------------
2018-03-01 20:53:27.148139
2018-03-01 20:53:29.288995
2018-03-01 20:53:29.957118
2018-03-01 21:07:28.880162
(4 rows)
=> \q

詳細は、「Heroku PostgreSQL​」を参照してください。

MongoDB や Redis のアドオン​をインストールするときも、同様のテクニックを利用できます。

次のステップ

ここまで、アプリのデプロイ、アプリの設定変更、ログの表示、スケール、アドオンのアタッチを行う方法を説明しました。

次にお勧めするリソースを紹介します。 1 つ目の記事では、基本的な理解をさらに深めることができます。 最後の記事では、この Dev Center にあるメインの Java カテゴリをご覧いただけます。

  • 「Heroku の仕組み​」では、アプリケーションの作成、設定、デプロイ、および実行時に必要な技術的な概念の概要を紹介しています。
  • 「Heroku で Gradle アプリをデプロイする​」では、既存の Java アプリを Heroku にデプロイする方法を紹介しています。
  • Java カテゴリ​では、Java アプリケーションの開発とデプロイに関する詳細を確認できます。

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