16:48:05Rails等で作ったちょっとしたWebアプリケーションを動かす時に、Herokuにデプロイするとお手軽で便利ですが。近頃はちょっとしたアプリケーションでも、バックエンド(API)と、フロントエンドのServerSideRenderingなどを組み合わせることも多くなってきました。小さなアプリケーションを試す場合に、バックエンドとフロントエンドで個々にデプロイするのは面倒だと思います。そこで、このエントリでは、バックエンドとフロントエンドが異なる言語で構成されたアプリケーションを1つのdynoで動かす手順について記載します。Buildpacksを使うと1つのdynoで異なる言語を動かすことが可能になります。Centerhttps://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app次に、以下の方法を用いると1つのdynoで複数のプロセスを実行することが出来ます。Helphttps://help.heroku.com/CTFS2TJK/how-do-i-run-multiple-processes-on-a-dynoこれらを組み合わせると、バックエンドとフロントエンドが異なる言語で構成されたアプリケーションを1つのdynoで動かせることがわかります。Railsアプリ(API)の作成それでは実際に環境を作っていきます。バックエンド部分としてRailsでAPIを作成します。以下のように現在時刻を返却するAPIを実装します。'sample#current_time'endサーバを起動して動作を確認します。現在時刻がJSONで返却されればOKです。次にフロントエンド部分としてExpress(Node)のアプリを作成します。express-http-proxyを追加します。express-http-proxyは、APIをプロキシするために使います。express-http-proxyexpressを起動するindex.jsを用意します。}`))出力するHTMLファイルを作ります。document.write(data['current_time']);}request.send();</script></body></html>Herokuで実行出来るようにProcfileを用意します。localで動かしてみます。アクセスすると、APIから現在時刻を取得して表示します。Localで実行する一旦、RailsとExpressを終了して、Procfileで両方あわせて起動できるように設定します。Rails(puma)とexpressを別ポートで起動するように、pumaの設定で参照するPORTの環境変数を変更しておきます。}両方あわせて起動できるように、Procfileを変更します。localで動かしてみます。アクセスで同じ結果が表示されます。Herokuにデプロイ以上でローカルで動く環境が構築出来たので、Herokuにデプロイしてみます。Gitにcommitします。nodejsのbuildpackを追加します。その後、モジュールをpushするとHerokuにデプロイできます。master表示されたURLにアクセスするとローカルと同じ結果が表示されるはずです。以上の流れで、2つの異なる言語で構成されたアプリケーションを1つのdynoで動かす事が出来ました。役立てて頂ければと思います。