👾

【3分でできる】Herokuの無料プランでもスリープせずに高速化する方法【アドオン不要】

2020/10/14に公開

概要

Herokuの無料のdynoプランでアプリをデプロイしている人も多いかと思います。

その時の問題点は30分アクセスがなければ、Herokuがスリープしてしまい、次回アクセス時にレスポンスが返ってくるのに時間がかかるという点です。無料で使わせてもらっているとはいえ、やっぱりレスポンスは速くしたい!

そこで今回は、無料でもHerokuを24時間稼働させる方法を実践してまとめました。

結論

GAS(Google Apps Script)で定期的にHerokuの該当アプリにアクセスする。

具体的な内容

1. GASの設定

GASの新規プロジェクトを作成して以下のコードを準備します。シンプルに特定のurlにアクセスしているだけです。コードを設置したら一度デバッグして正常に動くか確認しましょう。なお、ファイル名はデフォルトのままでも構いません。

GASのプロジェクト作成はこちら
https://script.google.com/

main.gs

function main() 
{
  // sleepさせたくないアプリのurl
  var url = 'https://kusutan.com';
  var data = UrlFetchApp.fetch(url).getContentText();
}

2. トリガーの設定

コードが正常に動くことを確認したら、トリガーを設定してGASの方でこのプログラムを自動で実行するように設定します。添付画像の赤マークを選択して、トリガー設定画面に移動します。

スクリーンショット 2020-02-20 8.39.13.png

「トリガーを追加」を押して添付画像の用に設定したのち、保存ボタンを押したら自動でプログラムが実行されます。つまり、15分おきにHerokuのアプリにアクセスしてくれるので、Herokuが常に起動している状態になるのです!

スクリーンショット 2020-02-20 8.39.48.png

注意点

現状だとこの方法でHerokuのフリープランを使えるのは1つのアプリのみになります。どうしても複数アプリを常時起動させたい場合は、有料プランを使うか、サーバを借りるかしましょう。

HerokuのFree Dynoについて
https://devcenter.heroku.com/articles/free-dyno-hours

おまけ

この方法を使って、APIサーバとしてHerokuを使って簡単なAndroidアプリをリリースしました。
いつアクセスしてもすぐにレスポンスが来るようになっているのがわかるかと思います!

プログラミング勉強会検索@鹿児島
https://play.google.com/store/apps/details?id=com.ksyst.connpass

Discussion