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 とのインテグレーション
  • 言語サポート
  • Java
  • Spring Boot の使用
  • Heroku に Spring Boot アプリケーションをデプロイする

Heroku に Spring Boot アプリケーションをデプロイする

日本語 — Switch to English

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

最終更新日 2023年04月04日(火)

Table of Contents

  • Spring Boot アプリを作成する
  • Heroku で Spring Boot アプリを準備する
  • データベースに接続する
  • 起動コマンドをカスタマイズする
  • 次のステップ

Spring Boot 型のスタンドアロンアプリケーションのデプロイは、Heroku にとても適しています。Heroku への Spring アプリケーションのデプロイには Maven か Gradle を使用できますが、このガイドでは、Maven を使用していて、コンピュータに Maven 3​ がインストールされていることを前提としています。

初めに、無料の Heroku アカウント​を作成します。 次に、Heroku CLI をダウンロードしてインストールします。

​Heroku CLI をダウンロードする

インストールしたら、ターミナルから heroku​ コマンドを使用して、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

Spring Boot アプリを作成する

新しい Spring Boot アプリケーションを作成するには、まず、Spring Boot のドキュメント​ に記載されている説明に従って Spring Boot CLI をインストールします。これにより、パスに spring​ コマンドが追加されます。

必要に応じて、実際に稼働しているサンプルアプリ​ から始めることもできます。

CLI で次のコマンドを実行して、新しいアプリケーションを作成します。

$ spring init --dependencies=web demo

作成したら、アプリケーションのディレクトリに移動します。

$ cd demo

デフォルトでは、アプリケーションにカスタムロジックはありません。ただの空のテンプレートです。動作を追加するには、src/main/java/com/example/demo/DemoApplication.java​ ファイルを開いて、次のコードを追加します。

ファイル src/main/java/com/example/demo/DemoApplication.java​ で、以下のように記述します。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.*;

@Controller
@SpringBootApplication
public class DemoApplication {

    @RequestMapping("/")
    @ResponseBody
    String home() {
      return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

このコードにより、ブラウザに「Hello World!」と表示される簡単なリクエストマッピングが作成されます。ローカルでアプリケーションを実行してこのコードを確認することもできますが、今回は直接 Heroku での実行に進みます。

Heroku で Spring Boot アプリを準備する

Heroku にアプリをデプロイする前に、次のコマンドを実行して、アプリケーションの Git リポジトリを作成し、そのリポジトリにすべてのコードを追加する必要があります。

$ git init
$ git add .
$ git commit -m "first commit"

この Git リポジトリを Heroku にプッシュすると、アプリがデプロイされます。Heroku Maven プラグイン​ を使用してデプロイすることもできますが、このガイドでは、Git と Heroku CLI を使用する方法のみ説明します。

Heroku にデプロイするためには、まず、新しい Heroku アプリをプロビジョニングする必要があります。次のコマンドを実行します。

$ heroku create
Creating app... done, tranquil-mountain-19785
https://tranquil-mountain-19785.herokuapp.com/ | https://git.heroku.com/tranquil-mountain-19785.git

このコマンドにより、heroku​ という名前のリモートリポジトリもローカルの Git リポジトリに作成されます。Heroku によってランダムなアプリ名 (この場合は nameless-lake-8055​) が生成されます。この名前は、後で heroku apps:rename​ コマンドで変更できます。

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

$ git push heroku main
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Java app detected
remote: -----> Installing JDK 1.8... done
remote: -----> Executing Maven
...
remote:        [INFO] BUILD SUCCESS
remote:        [INFO] ------------------------------------------------------------------------
remote:        [INFO] Total time:  15.129 s
remote:        [INFO] Finished at: 2020-05-20T09:17:47Z
remote:        [INFO] ------------------------------------------------------------------------
remote: -----> Discovering process types
remote:        Procfile declares types     -> (none)
remote:        Default types for buildpack -> web
remote:
remote: -----> Compressing...
remote:        Done: 65M
remote: -----> Launching...
remote:        Released v3
remote:        https://tranquil-mountain-19785.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/tranquil-mountain-19785.git
 * [new branch]      main -> main

pom.xml​ ファイルが存在するため、このアプリケーションは自動的に Maven/Java アプリとして検知されます。デフォルトでは Java 8 がインストールされますが、Java のバージョンは、Dev Center の記事「Java のバージョンを指定する​」の説明に従って、system.properties​ ファイルで簡単に設定できます。デフォルトのコマンド​を使用してアプリが実行されます。

これでアプリケーションがデプロイされました。次のコマンドを実行すると、アプリの URL にアクセスできます。

$ heroku open

ブラウザに「Hello World!」というテキストが表示されます。

次のコマンドを実行すると、アプリケーションのログを表示できます。

$ heroku logs --tail
2020-05-20T09:18:00.899237+00:00 app[web.1]: 2020-05-20 09:18:00.899  INFO 4 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to default profiles: default
2020-05-20T09:18:02.348822+00:00 app[web.1]: 2020-05-20 09:18:02.348  INFO 4 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 40371 (http)
2020-05-20T09:18:02.365045+00:00 app[web.1]: 2020-05-20 09:18:02.364  INFO 4 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-05-20T09:18:02.365316+00:00 app[web.1]: 2020-05-20 09:18:02.365  INFO 4 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.35]
2020-05-20T09:18:02.457002+00:00 app[web.1]: 2020-05-20 09:18:02.456  INFO 4 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-05-20T09:18:02.457162+00:00 app[web.1]: 2020-05-20 09:18:02.457  INFO 4 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1486 ms
2020-05-20T09:18:02.692238+00:00 app[web.1]: 2020-05-20 09:18:02.691  INFO 4 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-05-20T09:18:02.891409+00:00 app[web.1]: 2020-05-20 09:18:02.891  INFO 4 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 40371 (http) with context path ''
2020-05-20T09:18:02.903573+00:00 app[web.1]: 2020-05-20 09:18:02.903  INFO 4 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 2.739 seconds (JVM running for 3.302)
2020-05-20T09:18:03.300746+00:00 heroku[web.1]: State changed from starting to up

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

Heroku での Maven ベースの Java アプリケーションのデプロイに関する基本の詳細については、「Heroku スターターガイド (Java)​」を参照してください。このガイドでは、Spring Boot 以外でも使用できる多くのステップを説明しています。

この記事の後半では、調整する必要がある最も一般的な設定について、ざっと概要を説明します。

データベースに接続する

CLI から次のコマンドを実行すると、アプリに PostgresSQL データベースをアタッチできます。

$ heroku addons:create heroku-postgresql

MySQL または別のデータベースベンダーを使用する場合は、使用可能なデータベースを Add-ons Marketplace​ で確認します。

次に、アプリの環境設定をリスト表示して、データベースに接続するために必要な URL (DATABASE_URL) を表示できます。

$ heroku config
=== tranquil-mountain-19785 Config Vars
DATABASE_URL: postgres://user:password@ec2-1-2-3.compute-1.amazonaws.com:5432/databasename

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

$ heroku pg
=== DATABASE_URL
Plan:                  Mini
Status:                Available
Connections:           0/20
PG Version:            14.2
Created:               2020-05-20 09:18 UTC
Data Size:             7.9 MB
Tables:                0
Rows:                  0/10000 (In compliance)
Fork/Follow:           Unsupported
Rollback:              Unsupported
Continuous Protection: Off
Add-on:                postgresql-animated-55555

表示内容から、Mini データベースが Postgres 14.2 で稼働していて、1 行のデータがあることがわかります。

データベースアドオンが作成されると、環境変数 SPRING_DATASOURCE_URL​、SPRING_DATASOURCE_USERNAME​、SPRING_DATASOURCE_PASSWORD​ が自動的に設定されます。次のようにして PostgreSQL JDBC ドライバを依存関係に追加すれば、ほかの設定を行わなくても、これらの環境変数により Spring Boot アプリケーションからデータベースに接続できます。

ファイル pom.xml​ の 26 行目に以下を追加します。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
</dependency>

application.properties​ でアプリケーションのデータベース設定をカスタマイズできます。次に例を示します。

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

spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.maxActive=10
spring.datasource.maxIdle=5
spring.datasource.minIdle=2
spring.datasource.initialSize=5
spring.datasource.removeAbandoned=true

次に、設定 Bean をアプリに追加できます。

ファイル src/main/java/demo/DatabaseConfig.java​ で、以下のように記述します。

package com.example.demo;

import com.zaxxer.hikari.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*;
import javax.sql.DataSource;

@Configuration
public class DatabaseConfig {

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

  @Bean
  public DataSource dataSource() {
      HikariConfig config = new HikariConfig();
      config.setJdbcUrl(dbUrl);
      return new HikariDataSource(config);
  }
}

詳細は、「Java を使用して Heroku でリレーショナルデータベースに接続する​」を参照してください。

これで、アプリケーションからデータベースに接続できます。Heroku ガイドの「Java アプリのデータベース移行を実行する​」の説明に従って、データベースを初期化できます。サンプルアプリ​では、Liquibase を使用しています。

起動コマンドをカスタマイズする

Procfile​ を使用して、アプリの実行やカスタムプロセスタイプの定義に使用するデフォルトコマンドをオーバーライドできます。適切なコマンドは、アプリで行う必要がある処理に応じて変わります。Web プロセスを実行​したり、データベースの移行を実行​するには、一般的なプロセスタイプを使用します。

次のステップ

Heroku で実行する Spring Boot アプリの詳細な例については、次の情報を参照してください。

  • Heroku スターターガイド (Java)
  • Heroku の Spring Petclinic のデモ

Heroku には、Spring アプリケーション用の機能が豊富にあります。アドオンをプロビジョニングして、永続化、ログ記録、監視などのサードパーティ製のクラウドサービスを導入できます。 add-on marketplace​ には、Redis や MongoDB、Postgres、MySQL など、多数のデータストアが揃っています。

「Heroku の仕組み​」では、 アプリケーションの作成、設定、デプロイ、および実行時に必要な技術的な概念の概要を紹介しています。 「Dev Center の Java カテゴリ​」では、 Spring アプリケーションの開発とデプロイに関する詳細を確認できます。 Heroku への移行時にアプリケーションで問題が発生した場合は、Heroku のいずれかのサポートチャネル​にお知らせください。

Spring アプリのデプロイに関する詳細は、「Spring のドキュメント​」を参照してください。Heroku へのデプロイについては、「Spring Boot のドキュメント​」を参照してください。

関連カテゴリー

  • Spring Boot の使用
Memcache を使用した Spring Boot アプリケーションのスケーリング Heroku の本番環境用に Spring Boot アプリを準備する

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