あらゆる言語でのアプリケーション開発を可能にする Heroku Buildpack

Heroku Buildpack は、Heroku でアプリケーションをコンパイルするために使用するオープンソーススクリプトを集めたもので、Heroku の多言語プラットフォームのバックボーンを担っています。Buildpack を使用すると、Heroku のビルドシステムを拡張して好みの開発言語やカスタム要素をサポートできるようにしたり、特殊なバイナリパッケージをランタイムで使えるようにしたりすることができます。Heroku Buildpack があれば、アプリケーションや開発チームに最適な言語やフレームワークを自由に選んでコードを書くことができます。

使用する Heroku Buildpack によって、アプリケーションの開発プロセスや、コードの実行時に用意すべきアセットやランタイムが決まります。複雑なアプリケーションで複数の言語を実行する場合は、1 つのアプリケーションで複数の Buildpack を使用することもできます。

Heroku は、公式にサポートしている各言語に対応する Heroku Buildpack を提供しています。お使いの言語やフレームワークが Heroku のサポート対象でない場合は、カスタム Buildpack を作成したり、Elements マーケットプレイス7,800 種類以上のサードパーティ製 Buildpack から必要なものを選んで入手したりすることができます。

Heroku Buildpack のしくみ

Heroku Buildpack は、デプロイしたコードのコンパイルと、スラッグ(圧縮されあらかじめパッケージ化されたアプリケーションとランタイムのコピーで、Dyno Manager への配信に最適化されています)の作成を担います。Buildpack は、依存関係ファイルの取得、生成されたアセットの出力、コンパイル済みコードの出力などのタクスを実行するスクリプトで構成されます。

Heroku プラットフォームで公式にサポートされている言語を使う場合は、必要な Heroku Buildpack がビルドシステムによって自動的に検出されます。サポート対象外の言語を使う場合は、作業を開始する前にカスタム Buildpack をインストールする必要があります。

  1. Heroku にコードをデプロイ

    Elements Buildpacks

  2. Heroku がコードを分析して適切な Buildpack を選択するか、アプリに割り当てられた Buildpack を使用

    Elements Buildpacks
  3. Buildpack がアセットを取得して、コードをコンパイルし、アプリの slug を作成

    Elements Buildpacks
  4. Elements Buildpacks

Heroku Buildpack 関連文書

Heroku Buildpack とは
00:0000:00

「さまざまな言語で書かれたアプリをデプロイできるようになったことは私たちにとって非常に大きなメリットでした。Buildpack のおかけで仮想マシンに基本インフラをセットアップしなくてもアプリを簡単にデプロイできるようになったので、非常に楽になりました。」

Anthony Eden
DNSimple 社創業者
DNSimple 様事例→

「Heroku は、Elixir や Go などの新しい言語やフレームワークをサポートできる柔軟性を備えています。Buildpack などのプラットフォーム機能を活用すれば、このような最新の言語でコードを書き、すばやく Heroku で実行することができます。」

Courtney Hemphill
Carbon Five 社パートナー兼テクニカルリード
Carbon Five 様事例→
選べる言語とフレームワーク

使っているのが最新の言語でも、難解なフレームワークでも、既存のものを調整したものでも、Heroku Buildpack があれば Heroku のビルドプロセスを望みどおりのかたちに柔軟にカスタマイズできます。

複数の Buildpack を構成

アプリケーションの開発時に、アプリケーションを書く言語とアセットを処理する言語が違うときなど、1 つの Buildpack では足りなくなることもあります。そんな場合に備えて、ビルドプロセスで複数の Buildpack を組み合わせることができるようになっています。

カスタムバイナリとカスタムデーモンをサポート

Heroku Buildpack があれば、VM 系言語やエクステンションのように、デフォルトのランタイムやスタックにはないライブラリやバイナリを使用できます。また、デーモンを作成してアプリケーションで使えるコネクションプーリング情報を生成させたりすることもできます。

カスタム Heroku Buildpack

オープンソースコミュニティが開発、運用するカスタム Heroku Buildpack により、ElixirEmber CLIMeteor をはじめ、今後登場する新しい言語やフレームワークが幅広くサポートされます。Elements マーケットプレイスには、GitHub で公開されているオープンソース Buildpack が大量に登録されています。Heroku Buildpack の一覧は、こちらでご確認ください。

人気の Buildpack :

Heroku 製 Buildpack

Heroku は、幅広い言語とフレームワーク(Ruby、Python、Node.js、PHP、Go、Java、Scala、Clojure)を公式にサポートしています。サポート対象の言語とフレームワークについてはオープンソースの Heroku Buildpack を作成してプラットフォームに統合しています。開発に着手した段階で、アプリケーションのコンパイルに必要な Heroku Buildpack が自動的に検出されます。

Elements マーケットプレイスから入手可能な、公式にサポートされている Buildpack については、こちらをご覧ください。

特殊な言語やフレームワークのサポートが必要な場合は

Elements マーケットプレイスから入手可能な 6,000 種類を超える Heroku Buildpack をご覧ください。

Heroku Buildpack を見る