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

Heroku の Clojure サポート

日本語 — Switch to English

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

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

Table of Contents

  • アクティベーション
  • 設定
  • ランタイム
  • アドオン

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

  • Heroku スターターガイド (Clojure)

アクティベーション

Heroku の Clojure サポートは、アプリケーションのルートディレクトリに project.clj​ ファイルがある場合にのみ適用されます。

Maven を使用する Clojure アプリケーションもデプロイできますが、これは Java アプリケーションとして扱われるため、別のドキュメント が適用されます。

設定

Leiningen 1.7.1 がデフォルトで使用されますが、project.clj に :min-lein-version "2.0.0"​ がある (強く推奨) 場合は、Leiningen 2.9.1 リリースが代わりに使用されます。

Procfile​ では、アプリを実行させるプロセスタイプを宣言する必要があります。開発環境では通常、Leiningen プロジェクトは lein run -m my.project.namespace を使用して起動されますが、このようにするとプロジェクトのプロセスに加えて Leiningen が実行されたままになるため、本番環境では推奨されません。また、開発環境用のプロファイルが使用されるため、テストライブラリおよびテスト設定が本番環境に混じるおそれもあります。

一貫性のあるビルドが行われるようにするため、通常ではアプリケーション設定は、コンパイル中に見ることができませんが、プライベートリポジトリ資格情報 (LEIN_USERNAME​ など) がある場合は例外となります。公開された内容を変更するには、BUILD_CONFIG_ALLOWLIST​ 設定を、スペースで区切られた環境設定名のリストに設定します。アプリの設定を変更してもアプリは再構築されないため、この操作が予期しない動作を招く可能性があることに注意してください。

Uberjar

project.clj​ に :uberjar-name​ 設定が含まれている場合、デプロイ中に lein uberjar​ が実行されます。これを行う場合、Procfile エントリは java​ 呼び出しのみで構成される必要があります。

メインの名前空間に :gen-class​ がない場合、clojure.main​ をエントリポイントとして使用し、Procfile​ 内で -m​ 引数を使用して、アプリのメインの名前空間を指定できます。

web: java -cp target/myproject-standalone.jar clojure.main -m myproject.web

ビルド中にのみ適用するカスタム設定がある場合、これらの設定を :uberjar​ プロファイルに置くことができます。これは本番環境で AOT コンパイルされたクラスを使用すると便利な場合がありますが、再読み込みの問題を起こす可能性がある開発中は推奨されません。

:profiles {:uberjar {:main myproject.web, :aot :all}}

heroku run​ セッションで Leiningen が必要な場合、これはオンデマンドでダウンロードされます。

ランタイムに影響する Leiningen の機能 (:jvm-opts​、ネイティブ依存関係の抽出、または :java-agents​ など) を使用する場合、Procfile の java​ 呼び出しがこれらの機能を含むようにするために、いくつかの追加作業が必要になります。このような場合、Leiningen を実行時に使用するほうが簡単な場合もあります。

ビルドのカスタマイズ

次の環境変数を設定することにより、Leiningen のビルドをカスタマイズできます。

  • LEIN_BUILD_TASK​: 実行する Leiningen コマンド。
  • LEIN_INCLUDE_IN_SLUG​: ​yes​ に設定すると lein を uberjar slug に追加します。

実行時の Leiningen

直接的な java​ 呼び出しを Procfile に配置する代わりに、Leiningen にアプリの起動を処理させることができます。これを行う場合は、trampoline​ タスクと with-profile​ タスクを使用するようにします。trampoline では、Leiningen はプロジェクトで実行するクラスパスおよびコードを計算し、終了してからプロジェクトの JVM を実行しますが、with-profile​ では開発プロファイルが省略されます。

web: lein with-profile production trampoline run -m myapp.web

Leiningen を slug に含めると、サイズが約 10 メガバイト増加し、アプリの起動時間に 1 ~ 2 秒のオーバーヘッドが追加されます。

ビルド動作のオーバライド

これらのいずれのオプションによっても必要な結果が得られない場合、ユーザー独自の実行可能な bin/build​ スクリプトをアプリのリポジトリにチェックインすると、Leiningen のセットアップ後にそのスクリプトが compile​ または uberjar​ の代わりに実行されます。

Leiningen バージョンの設定

buildpack によってリポジトリ内の bin/lein​ スクリプトが検査され、存在する場合はデフォルトの lein​ コマンドの代わりにそのスクリプトが実行されます。これにより、アプリをビルドするために使用される正しいバージョンの Leiningen を制御できます。

Clojure CLI バージョンの設定

CLOJURE_CLI_VERSION​ 環境変数を設定することにより、アプリと一緒にインストールされる Clojure CLI のバージョンをカスタマイズできます。デフォルトのバージョンは 1.10.0.411 です。

ランタイム

Heroku では多数の異なるランタイムを使用できます。JDK を設定すると共に、特定の Clojure ランタイムを選択するようアプリを設定できます。

サポートされている 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.

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

Heroku では、サポートされている JDK バージョン上で実行されている Clojure のすべての本番環境リリース上のアプリをサポートします。

アドオン

デフォルトでプロビジョニングされるアドオンはありません。アプリ用の SQL データベースが必要な場合は、明示的に追加してください。たとえば、Essential-0 Heroku Postgres データベースを追加するには、次のようにします。

$ heroku addons:create heroku-postgresql:essential-0

関連カテゴリー

  • Clojure
Heroku スターターガイド (Clojure) Heroku での Clojure アプリのデプロイ

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