Tatehito's Programming Blog

Rails / Ruby / 競プロ / 技術書感想 / ガジェット / その他もろもろ。現役プログラマがIT系記事をメインに書くブログです。

『ポケモンしりとり』を24時間稼働するようにした(Heroku無料プラン)

f:id:tatehito-st:20190829095909p:plain

画面表示に30秒かかってしまう問題

ポケモンしりとり』はHeroku上で動作しています。Herokuは無料プランであっても、クレジットカードを登録しておけば月1000時間まで利用することができます。30日間 = 720時間なので、アプリケーション1つであれば24時間稼働させても無料枠に収まります。

ただし公式サイトにも記載があるように、無料プランでは30分間まったく操作されないと自動的にスリープモードに切り替わってしまいます。

dyno 時間を節約するため、30 分間何も操作が行われないと、無料アプリケーションは自動的にスリープモードに切り替わります

スリープモードの状態でアプリケーションにアクセスすると、再起動の時間が余計にかかってしまいます。ポケモンしりとり』の場合、画面が表示されるまで長いときで30秒ほどかかっていました。

これほど画面表示に時間がかかると、「このサービスは運営停止しちゃったのかも」とユーザーに思われてしまい、ブラウザバックされてしまいます(僕も普段ネットサーフィンしていて画面表示に時間がかかるとブラウザバックすることが多々あります。)

実際のところ、『ポケモンしりとり』はゲーム系アプリのため、訪問してくれた人は一度は遊ぼうという意思がある(はず)ので直帰率が低くなるはずなのですが、Google Analyticsで計測している限り、直帰率は100%近くの数字を叩き出していました。oh no...

24時間稼働するようにした

トップページだけ見て「つまんなそう」と思われている可能性も否めませんが(汗)、「画面表示が遅い」ことが直帰させている原因のひとつだと考え、以下のサイトを参考に「スリープモードに切り替わらないように」してみました。現在では24時間いつアクセスしても、すぐに画面表示されるようになりました。

casualdevelopers.com

上記サイトでは4つの方法が紹介されており、採用したのは「UptimeRobotを使う方法」です。同じHerokuのサービスである「Heroku Schedulerを使う」方法の方がスマートかなと思ったのですが、予期しない課金リスクなどデメリットがあるということでUptimeRobotを使うことにしました。

Heroku Schedulerのアドオン自体は無料ですが、スケジューラがタスクを実行す時にOne-Off dynoを立ち上げています。これは時間課金のdynoです。アドオンの利用の条件がクレジットカードの登録である理由はここにあります。このOne-Off dynoの起動時間も無料枠の時間に含まれるので、無料枠が超過した場合課金されます。

UptimeRobotの設定は5分ほどで完了しました。簡単~!

ということで、24時間稼働するようになった『ポケモンしりとりを今後ともよろしくお願いいたします。 www.pokemon-shiritori.com

関連記事

blog.tatehitolog.com

blog.tatehitolog.com