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 とのインテグレーション
  • 言語サポート
  • Scala
  • Heroku の Scala サポート

Heroku の Scala サポート

日本語 — Switch to English

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

最終更新日 2024年05月09日(木)

Table of Contents

  • アクティベーション
  • 環境
  • ビルド動作
  • ランタイムの動作
  • Postgres の自動プロビジョニング

このドキュメントでは、Scala アプリケーションの認識と実行に関連した Heroku の一般的な動作について説明します。アプリケーションのデプロイ方法の詳細については、「Heroku スターターガイド (Scala)​」を参照してください。

アクティベーション

Heroku では、次のいずれかのパターンに一致するファイルが検出されたときに、Scala アプリケーションが認識されます。

  • /*.sbt
  • /project/*.scala
  • /project/build.properties
  • /.sbt/*.scala

デプロイされたアプリケーションが Scala アプリケーションとして認識された場合、Heroku は -----> Scala app detected​ と応答します。

$ git push heroku master
-----> Scala app detected

アプリケーションに /conf/application.conf​ ファイルも含まれている場合、Play 2.0 アプリケーションが検出され、Heroku は -----> Play 2.0 app detected​ と応答します。詳細については、Heroku Play サポート​の記事を参照してください。

Maven を使用する Scala アプリケーションもデプロイできますが、これらは Java アプリケーションとして扱われるため、Heroku Java サポート​が適用されます。

環境

次の環境変数が設定されます。

  • PATH​: ​.sbt_home/bin:/usr/local/bin:/usr/bin:/bin
  • PORT​: Web プロセスはこの HTTP ポートにバインドされます
  • DATABASE_URL​: ​Heroku Postgres​ データベース接続の URL

dyno のサイズ変更​を行うことで、Java メモリ設定が自動的に変更されます。JAVA_OPTS環境設定​を手動で調整して、これらのデフォルト値を上書きできます。

Java プロセスが dyno で開始されると、次の Java オプションが自動的に選択されます。

  • -Dfile.encoding=UTF-8

これらのオプションは、環境変数 JAVA_TOOL_OPTIONS​ の一部として設定されます。これは、コマンドラインにアクセスできないかコマンドラインを変更できない環境でコマンドラインを拡張する​ためのものです。これらの設定をオーバーライドする必要がある場合は、Procfile​ コマンドで優先オプションを定義する (こちらが優先される) か、独自の JAVA_TOOL_OPTIONS​ 環境変数を設定することができます。

dyno サイズのための環境の調整

  • eco​、basic​、または standard-1x​: ​-Xmx300m -Xss512k -XX:CICompilerCount=2
  • standard-2x​: ​-Xmx671m -XX:CICompilerCount=2​
  • performance-m​: ​-Xmx2g
  • performance-l​: ​-Xmx12g
  • performance-l-ram​、performance-xl​、performance-2xl​: ​XX:MaxRAMPercentage=80.0

Private Space dyno および Shield Private Space dyno の場合、値は以下のようになります。

  • private-s​ または shield-s​: ​-Xmx671m -XX:CICompilerCount=2​
  • private-m​ または shield-m​: ​-Xmx2g
  • private-l​ または shield-l​: ​-Xmx12g
  • private-l-ram​、private-xl​、private-2xl​、shield-l-ram​、shield-xl​、shield-2xl​: ​XX:MaxRAMPercentage=80.0

リソース使用量の監視

追加の JVM フラグを使用して、dyno のリソース使用量を監視できます。リソース使用量を監視するには、次のフラグをお勧めします。

-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+UseConcMarkSweepGC

JVM プロセスの調整について詳しくは、トラブルシューティング​の記事を参照してください。

ビルド動作

アプリケーションには、0.11.0 から 1.x までの間の SBT バージョンが sbt.version​ プロパティで指定されている /project/build.properties​ ファイルを含める必要があります。SBT のリリース候補、ベータ版、その他の事前リリースバージョンを指定できます。

Heroku Scala buildpack は sbt compile stage​ を実行してアプリケーションをビルドします。アプリケーションは、アプリケーションをインプレースで実行するための準備に必要なすべてのタスクを実行する stage​ タスクを含む必要があります。たとえば、Typesafe の sbt-native-packager​ は、アプリケーションの開始スクリプトを生成する stage​ タスクを SBT に追加します。プラグインを使用するには、次の内容を含む /project/plugins.sbt​ ファイルを作成します。

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.7.6")

または、次のようなコードを build.sbt​ に入力することによって、カスタムの stage​ タスクを記述できます。

val stage = taskKey[Unit]("Stage task")

val Stage = config("stage")

stage := {
  (packageWar in Compile).value
  (update in Stage).value.allFiles.foreach { f =>
    if (f.getName.matches("webapp-runner-[0-9\\.]+.jar")) {
      println("copying " + f.getName)
      IO.copyFile(f, baseDirectory.value / "target" / "webapp-runner.jar")
    }
  }
}

タスクは sbt compile stage​ をローカルで実行することによってテストできます。

クリーンビルド

場合によっては、コンパイル前にビルドでアーティファクトを消去する必要があります。クリーンビルドが必要な場合、SBT_CLEAN=true​ を設定することによって clean​ を実行するようにビルドを設定します。

$ heroku config:set SBT_CLEAN=true
Setting config vars and restarting example-app... done, v17
SBT_CLEAN: true

後続のすべてのデプロイで clean​ タスクが使用されます。clean​タスクを削除するには、SBT_CLEAN​ を設定解除します。

$ heroku config:unset SBT_CLEAN
Unsetting SBT_CLEAN and restarting example-app... done, v18

ランタイムの動作

デフォルトでは、Scala アプリケーションは sbt-native-packager​ によって生成される開始スクリプトで起動されます。

web: target/universal/stage/bin/appname

アプリケーションが sbt-native-packager​ を使用しないか、別の方法で起動される必要がある場合、web​ プロセスの別のエントリを指定するプロジェクトのルートにカスタムの Procfile​ を含めることができます。

Play フレームワークは開始スクリプトを自動的に生成するため、追加のプラグインは不要です。

サポートされている JDK バージョン

Heroku は現在、OpenJDK 8 を使用してアプリケーションを実行しています。OpenJDK バージョン 7 も使用できます。選択したメジャーバージョンに応じて、アプリをデプロイするたびに、その Java ランタイムの使用可能な最新のアップデートが使用されます。現在のバージョンの一覧は、Java サポート記事​を参照してください。

アプリが使用する JDK は slug に含められるので、slug のサイズに影響します。

Java バージョンの指定

system.properties​ というファイルをアプリケーションに追加することによって Java バージョンを指定できます。

ファイル内の java.runtime.version​ プロパティを設定します。

java.runtime.version=1.8

1.8 is the default version. To use Java 8, you don’t need this file at all. You can specify JDK 7 by setting this property to “1.7”. For details on how to set specific update versions, see the Java support article.

Postgres の自動プロビジョニング

このセクションは、2023 年 5 月 15 日​より前に作成されたアカウントまたは Heroku サポートにアカウントの自動プロビジョニングを有効にするように依頼した​場合にのみ該当します。

Heroku Postgres データベースは、Scala アプリケーションの初回デプロイで自動的にプロビジョニングされます。この自動プロビジョニングにより DATABASE_URL​ 環境変数が入力されます。

Postgres アドオンが必要ない場合、次のコマンドを実行してアドオンを削除します。

$ heroku addons:destroy DATABASE --app example-app

関連カテゴリー

  • Scala
Scala を使用したデータベース接続プール Heroku での Scala アプリのデプロイ

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