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
      • Django の使用
      • Python でのバックグランドジョブ
    • Java
      • Maven の使用
      • Java でのデータベース操作
      • Play Framework の使用
      • Java の高度なトピック
      • Spring Boot の使用
    • 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
  • 言語サポート
  • Scala
  • Heroku の Scala サポート

Heroku の Scala サポート

日本語 — Switch to English

最終更新日 2021年03月09日(火)

Table of Contents

  • アクティベーション
  • 環境
  • ビルド動作
  • ランタイムの動作
  • アドオン

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

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

アクティベーション

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 サイズのための環境の調整

新しい dyno サイズが選択されると、以下の設定が自動的に JAVA_TOOL_OPTIONS​ に追加されます。

  • Free、Hobby、または Standard-1X: ​-Xmx350m -Xss512k
  • Standard-2X: ​-Xmx768m​
  • Performance-M: ​-Xmx2g
  • Performance-L: ​-Xmx12g

リソース使用量の監視

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

-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 so if you’d like 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.

アドオン

Heroku Postgres の Starter Tier データベースアドオンが、Scala アプリケーション用に自動的にプロビジョニングされています。これにより DATABASE_URL​ 環境変数が入力されます。

関連カテゴリー

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

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