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 スターターガイド (Clojure)

​はじめに

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

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

このチュートリアルでは、無料の ​Heroku アカウント​をお持ちで、Clojure と ​Leiningen​ をローカル環境にインストール済みであることを前提としています。

​設定する

Heroku CLI には、一般によく使われている Git​ というバージョン管理システムが必要です。Git がまだインストールされていない場合は、先に進む前に次の手順を完了してください。

  • ​Git のインストール
  • ​Git の初期設定

このステップでは、Heroku Command Line Interface (CLI) をインストールします。CLI は、アプリケーションの管理やスケール、アドオンのプロビジョニング、アプリケーションログの表示、アプリケーションのローカル実行に使用します。

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

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 login​ コマンドを使って Heroku CLI にログインします。

$ 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

このコマンドにより、Web ブラウザで Heroku ログインページが開きます。ブラウザですでに Heroku にログインしている場合は、ページに表示されている[Log in]​ (ログイン) ボタンをクリックします。

この認証は、heroku​ と git​ コマンドが正常に動作するために必要な操作です。

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

​アプリを準備する

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

Heroku をはじめて使う場合は、 Heroku が提供するサンプルアプリケーションを使ってこのチュートリアルを行うことをお勧めします。

ただし、デプロイする既存のアプリケーションを用意してある場合は、 Heroku へのデプロイを準備する方法について、​この記事​を 参照してください。

サンプルアプリケーションをクローンして、Heroku にデプロイするコードのローカルバージョンを作成するには、ローカルのコマンドシェルまたはターミナルで次のコマンドを実行します。

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

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

​アプリをデプロイする

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

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

$ heroku create
Creating sharp-rain-871 in organization heroku... done, stack is heroku-20
http://sharp-rain-871.herokuapp.com/ | https://git.heroku.com/sharp-rain-871.git
Git remote heroku added

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

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

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

$ git push heroku main
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Clojure (Leiningen 2) app detected
remote: -----> Installing JDK 1.8... done
...
remote: -----> Installing Clojure 1.10.0.411 CLI tools
remote:        Downloading and expanding tar
...
remote: -----> Installing Leiningen
remote:        Downloading: leiningen-2.9.1-standalone.jar
remote:        Writing: lein script
remote: -----> Building with Leiningen
remote:        Running: lein uberjar
...
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing...
remote:        Done: 74.7M
remote: -----> Launching...
remote:        Released v3
remote:        http://sharp-rain-871.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/sharp-rain-871.git
 * [new branch]      main -> main

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

$ heroku ps:scale web=1

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

$ heroku open

​ログを表示する

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

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

$ heroku logs --tail
2019-08-13T14:48:12.515905+00:00 heroku[web.1]: State changed from starting to up
2019-08-13T14:48:12.296710+00:00 app[web.1]: 2019-08-13 14:48:12.296:INFO:oejs.ServerConnector:main: Started ServerConnector@669c2b07{HTTP/1.1}{0.0.0.0:33805}
2019-08-13T14:48:12.305018+00:00 app[web.1]: 2019-08-13 14:48:12.296:INFO:oejs.Server:main: Started @9949ms
2019-08-13T14:48:13.874066+00:00 heroku[router]: at=info method=GET path="/" host=murmuring-atoll-71587.herokuapp.com request_id=3ee01cce-c0b7-41f0-8e5c-f7df537dd493 fwd="62.17.146.153" dyno=web.1 connect=2ms service=428ms status=200 bytes=169 protocol=https

ブラウザで再びアプリケーションを表示すると、別のログメッセージが生成されます。

ログのストリーム出力を停止するには、Control+C​ を押します。

​Procfile を定義する

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

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

web: java $JVM_OPTS -cp target/clojure-getting-started-standalone.jar clojure.main -m clojure-getting-started.web

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

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

​アプリをスケールする

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

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

$ heroku ps
=== web (Free): `java $JVM_OPTS -cp target/clojure-getting-started-standalone.jar clojure.main -m clojure-getting-started.web`
web.1: up 2014/04/25 16:26:38 (~ 1s ago)

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

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

Heroku でアプリケーションをスケールするとは、実行する dyno の数を変更することを意味します。 Web dyno の数を 0 にスケールしてみます。

$ heroku ps:scale web=0

ブラウザのタブで更新ボタンを押してアプリにアクセスするか、heroku open​ コマンドを使ってブラウザのタブで開きます。 リクエストに応答できる Web dyno がないので、エラーメッセージが表示されます。

もう一度スケールしてみましょう。

$ heroku ps:scale web=1

不正操作を防止するため、有料のアプリケーションを 2 つ以上の dyno にスケールするには、アカウントの確認​が必要です。

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

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

デプロイしたデモ用アプリには、事前に次のような project.clj​ が用意されています。

(defproject clojure-getting-started "1.0.0-SNAPSHOT"
  :description "Demo Clojure web app"
  :url "http://clojure-getting-started.herokuapp.com"
  :license {:name "Eclipse Public License v1.0"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.10.0"]
                 [compojure "1.6.1"]
                 [ring/ring-jetty-adapter "1.7.1"]
                 [environ "1.1.0"]]
  :min-lein-version "2.0.0"
  :plugins [[environ/environ.lein "0.3.1"]]
  :hooks [environ.leiningen.hooks]
  :uberjar-name "clojure-getting-started-standalone.jar"
  :profiles {:production {:env {:production true}}})

project.clj​ ファイルでは、Clojure 自体を含め、アプリケーションと一緒にインストールする必要がある依存関係のバージョンを定義します。

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

次に、Leiningen を使用して repl セッションを開始します。

$ lein repl
nREPL server started on port 62103 on host 127.0.0.1 - nrepl://127.0.0.1:62103
REPL-y 0.4.3, nREPL 0.6.0
Clojure 1.10.0
OpenJDK 64-Bit Server VM 12.0.1+12
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e

user=>

この時点でアプリの環境で Clojure のコードを評価できますが、初めに内蔵の Jetty HTTP サーバーを起動します。

user=> (require 'clojure-getting-started.web)
nil
user=> (def server (clojure-getting-started.web/-main))
2014-08-19 16:14:56.170:INFO:oejs.Server:jetty-7.6.8.v20121106
2014-08-19 16:14:56.220:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:5000
#'user/server
user=>

これでアプリは http://localhost:5000​ で実行できます。Web ブラウザを使用して、動作をテストします。

ほとんどの Clojure ユーザーは、自分のエディタ (Emacs​、Vim​、Eclipse​ など) 内で repl を実行しますが、まだエディタを設定していない場合は、引き続きコマンドラインで lein repl​ を呼び出すのが一番簡単です。

lein run -m clojure-getting-started.web​ を使用してサーバーを起動することもできますが、変更を行うたびにサーバーを再起動する必要があるため、この方法は開発時にはお勧めしません。repl から実行するほうが圧倒的に便利です。

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

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

project.clj​ を編集して、camel-snake-kebab​ の依存関係を追加します。

  :dependencies [[org.clojure/clojure "1.10.0"]
                 [compojure "1.6.1"]
                 [ring/ring-jetty-adapter "1.7.1"]
                 [environ "1.1.0"]
                 [camel-snake-kebab "0.4.0"]]

このライブラリを :require​ するように src/clojure_getting_started/web.clj​ を編集します。

(ns clojure-getting-started.web
  (:require [compojure.core :refer [defroutes GET PUT POST DELETE ANY]]
            [compojure.handler :refer [site]]
            [compojure.route :as route]
            [clojure.java.io :as io]
            [ring.adapter.jetty :as jetty]
            [environ.core :refer [env]]
            [camel-snake-kebab.core :as kebab]))

次に、同じファイルで app​ ルートの定義を編集して、使用します。

(defroutes app
  (GET "/camel" {{input :input} :params}
       {:status 200
        :headers {"Content-Type" "text/plain"}
        :body (kebab/->camelCase input)})
  (GET "/snake" {{input :input} :params}
       {:status 200
        :headers {"Content-Type" "text/plain"}
        :body (kebab/->snake_case input)})
  (GET "/kebab" {{input :input} :params}
       {:status 200
        :headers {"Content-Type" "text/plain"}
        :body (kebab/->kebab-case input)})
  (GET "/" []
       (splash))
  (ANY "*" []
       (route/not-found (slurp (io/resource "404.html")))))

これにより、?input=...​ クエリパラメータを受け付ける /camel​、/snake​、/kebab​ ルートが追加され、文字列がそれぞれ CamelCase、snake_case、または kebab-case に変更されます。

次にローカルでテストします。依存関係を変更したため、既存の repl セッションがまだ開いている場合は終了 (ctrl-d​) して、lein repl​ で別のセッションを開始する必要があります。

user=> (require 'clojure-getting-started.web)
2019-08-13 17:06:49.640:INFO::nRepl-session-3c8f54c8-c194-477a-b711-fc3f895a4f78: Logging initialized @6036ms to org.eclipse.jetty.util.log.StdErrLog
nil
user=> (def server (clojure-getting-started.web/-main))
2019-08-13 17:07:07.884:INFO:oejs.Server:nRepl-session-3c8f54c8-c194-477a-b711-fc3f895a4f78: jetty-9.4.12.v20180830; built: 2018-08-30T13:59:14.071Z; git: 27208684755d94a92186989f695db2d7b21ebc51; jvm 12.0.1+12
2019-08-13 17:07:07.920:INFO:oejs.AbstractConnector:nRepl-session-3c8f54c8-c194-477a-b711-fc3f895a4f78: Started ServerConnector@2e98dc13{HTTP/1.1,[http/1.1]}{0.0.0.0:5000}
2019-08-13 17:07:07.921:INFO:oejs.Server:nRepl-session-3c8f54c8-c194-477a-b711-fc3f895a4f78: Started @24317ms
#'user/server

http://localhost:5000/snake?input=HelloWorld​ にアクセスすると、snake_case​ に変換された URL で文字列 hello_world​ が表示されます。

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

$ git add .

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

$ git commit -m "Add camel-snake-kebab and use it from web.clj."

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

$ git push heroku main

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

$ curl http://<your-app-name>.herokuapp.com/camel?input=doner-kebab
DonerKebab

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

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

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

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

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

$ heroku addons:create papertrail
Adding papertrail on sharp-rain-871... done, v4 (free)
Welcome to Papertrail. Questions and ideas are welcome (support@papertrailapp.com). Happy logging!
Use `heroku addons:docs papertrail` to view documentation.

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

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

$ heroku addons

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

$ heroku addons:open papertrail

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

ログメッセージが表示されたコンソールのスクリーンショット

​dyno で repl を起動する

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

$ heroku run lein repl
Running `lein repl` attached to terminal... up, run.1459
user=>

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

REPL は、ローカルの lein repl​ と同じように機能しますが、リモートで動作します。

次のコードを実行できます。

user=> (require '[camel-snake-kebab.core :as kebab])
nil
user=> (kebab/->kebab-case "JustSomeStuff")
"just-some-stuff"

dyno の仕組みに慣れるため、別の One-off dyno を作成し、この dyno でシェルを開く bash​ コマンドを実行してみましょう。シェルが開いたら、そこでコマンドを実行できます。dyno にはそれぞれ固有の一時的なファイル領域が割り当てられ、アプリとその依存関係がそこに格納されます。コマンド (この場合は bash​) が完了すると、dyno は削除されます。

$ heroku run bash
Running `bash` attached to terminal... up, run.3052
~ $ ls
Procfile  README.md  project.clj  resources  src  target  test

必ず ctrl-d​ を押して (または exit​ と入力して) シェルを閉じ、dyno を終了してください。

​環境設定を定義する

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

環境設定は、ランタイムに環境変数としてアプリケーションに提供されます。生の System/getenv​ 呼び出しを使用することもできますが、environ​ ライブラリでは便利な方法で環境変数が提供されます。

src/clojure_getting_started/web.clj​ で定義されているスプラッシュページからのリンクをサンプルの対話に追加しましょう。

(def sample (env :sample "sample-string-thing"))

(defn splash []
  {:status 200
   :headers {"Content-Type" "text/html"}
   :body (for [kind ["camel" "snake" "kebab"]]
           (format "<a href=\"/%s?input=%s\">%s %s</a><br />"
                   kind sample kind sample))})

sample​ 変数には、サンプルリンクで使用される文字列が格納されます。environ で、オプションのデフォルト値を使用して SAMPLE​ 環境変数から (env :sample)​ への変換処理が行われます。

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

$ heroku config:set SAMPLE=this_one_started_as_snake_case
Setting config vars and restarting sharp-rain-871... done, v10
SAMPLE: this_one_started_as_snake_case

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

$ heroku config
== sharp-rain-871 Config Vars
PAPERTRAIL_API_TOKEN: [REDACTED]
SAMPLE: this_one_started_as_snake_case

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

​データベースをプロビジョニングする

add-on marketplace​ には、Redis や MongoDB、Postgres、MySQL など、多数のデータストアが揃っています。 このステップでは、無料の Heroku Postgres Starter Tier dev データベースをアプリに追加します。

データベースを追加します。

$ heroku addons:create heroku-postgresql:hobby-dev
Adding heroku-postgresql:hobby-dev... done, v3 (free)

このコマンドによりデータベースが作成され、環境変数 DATABASE_URL​ が設定されます (heroku config​ を実行して確認できます)。

project.clj​ ファイルを編集して、java.jdbc ライブラリ​ と postgresql ドライバーを依存関係に追加します。

:dependencies [[org.clojure/clojure "1.10.0"]
                 [compojure "1.6.1"]
                 [ring/ring-jetty-adapter "1.7.1"]
                 [environ "1.1.0"]
                 [org.clojure/java.jdbc "0.6.1"]
                 [org.postgresql/postgresql "9.4.1211"]
                 [camel-snake-kebab "0.4.0"]]

次に、このライブラリをロードするように web.clj​ ファイルを編集します。ns​ の require セクションに [clojure.java.jdbc :as db]​ を追加します。次に、DB の読み取りと書き出しを行います。

(defn splash []
  {:status 200
   :headers {"Content-Type" "text/html"}
   :body (concat (for [kind ["camel" "snake" "kebab"]]
                   (format "<a href=\"/%s?input=%s\">%s %s</a><br />"
                           kind sample kind sample))
                 ["<hr /><ul>"]
                 (for [s (db/query (env :database-url)
                                   ["select content from sayings"])]
                   (format "<li>%s</li>" (:content s)))
                 ["</ul>"])})

(defn record [input]
  (db/insert! (env :database-url "postgres://localhost:5432/kebabs")
              :sayings {:content input}))

(defroutes app
  (GET "/camel" {{input :input} :params}
       (record input)
       {:status 200
        :headers {"Content-Type" "text/plain"}
        :body (kebab/->camelCase input)})
  (GET "/snake" {{input :input} :params}
       (record input)
       {:status 200
        :headers {"Content-Type" "text/plain"}
        :body (kebab/->snake_case input)})
  (GET "/kebab" {{input :input} :params}
       (record input)
       {:status 200
        :headers {"Content-Type" "text/plain"}
        :body (kebab/->kebab-case input)})
  (GET "/" []
       (splash))
  (ANY "*" []
       (route/not-found (slurp (io/resource "404.html")))))

これにより、すべての呼び出しが sayings​ テーブルに記録およびリストされます。これらはスプラッシュページに表示されます。

これを Heroku にデプロイします。 /​ にアクセスすると空白ページが表示されます。実際の内容を表示するには、heroku logs​ を実行する必要があります。大きなスタックトレースがありますが、一番上に次のように表示されています。

org.postgresql.util.PSQLException: ERROR: relation "sayings" does not exist|  Position: 21

これは、まだテーブルの作成を回避していないことを示します。実際のアプリケーションでは、Ring ミドルウェアを設定して例外を捕捉し、ブラウザでスタックトレースを表示するか (開発中)、ユーザーにわかりやすいエラーメッセージを (本番環境で) 表示しますが、それについてはこの記事では説明しません。

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

$ heroku pg:psql
--> Connecting to postgresql-symmetrical-27482
psql (11.4, server 11.5 (Ubuntu 11.5-1.pgdg16.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
=> create table sayings (id serial primary key, content text);
CREATE TABLE
=> insert into sayings values (1, 'HelloComputer');
INSERT 0 1
=> \q

次に、いくつかのサンプル呼び出しで値を入力します。

$ curl http://sharp-rain-871.herokuapp.com/camel?input=doner-kebab
doner_kebab
$ curl http://sharp-rain-871.herokuapp.com/kebab?input=snake_like_charms
snake-like-charms

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

  • HelloComputer
  • doner-kebab
  • snake_like_​charms

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

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

次のステップ

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

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

  • 「Heroku の仕組み​」では、アプリケーションの作成、設定、デプロイ、および実行時に必要な技術的な概念の概要を紹介しています。
  • 「Heroku で Clojure アプリをデプロイする​」では、既存の Clojure アプリを Heroku にデプロイする方法を紹介しています。
  • Clojure カテゴリ​では、Clojure アプリケーションの開発とデプロイに関する詳細を確認できます。
  • Heroku の開発者としての体験および CI/CD 機能についての詳細は、「Heroku Enterprise Developer Learning Journey​」を参照してください。

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