Q1:Herokuでバックグラウンド処理は扱える? Webアプリケーションのような様々なユーザーと対話しながら実行されるリアルタイム処理とは異なり、バックグラウンド処理は、メールの一括送信やデータの削除処理といった、定期的に実行した方が効率的とされるプログラムの実行に利用します。 Herok...
Q1:Herokuでバックグラウンド処理は扱える?
Webアプリケーションのような様々なユーザーと対話しながら実行されるリアルタイム処理とは異なり、バックグラウンド処理は、メールの一括送信やデータの削除処理といった、定期的に実行した方が効率的とされるプログラムの実行に利用します。
HerokuにはWebアプリケーションの他にもバックグラウンドで処理する機能がいくつか提供されており、利用用途に応じて使い分けることになります。ここでは以下の2つを紹介します。
Heroku Scheduler
Heroku Schedulerは、Herokuのアドオンとして提供されており、Heroku上にデプロイしたプログラムを指定の期間で繰り返し実行させることができます。
heroku runコマンド
heroku runは、HerokuよりCLI(Command Line Interface)として提供されているHerokuツールに含まれるコマンドです。このコマンドを利用することで、Heroku上のプログラムをコマンドラインから直接実行することができます。
Herokuでのバックグランド実行の単位は、前回の記事で紹介したWebアプリケーションのプロセス数単位であるWeb Dynosと同様にWorker Dynosというプロセス単位で数えられ、1 Worker毎に$0.05/hとなっています。
Q2:ジョブの定期実行はどうやるの?
設定した期間で定期的にジョブを実行させるには、Herokuではアドオンで用意されているHeroku Schedulerを利用します。cronというアドオンも登録されていますが、現在は非推奨となっており、その代わりとしてこのSchedulerを利用することが推奨されています。
Heroku Schedulerは、指定の時間の間隔(10分、1時間、1日おき)で定期的にアプリケーション上のコマンドを実行する機能です。Ruby on RailsアプリケーションであればRakeタスク(RakeはRubyで記述されたタスクをコマンドから呼び出す機能)を作成し、Schedulerに登録して定期的に実行させます。また、スクリプトファイルを直接Schedulerに登録することができるので、直接rubyスクリプトや、bashスクリプトをバックグラウンド処理として実行させることが出来ます。
ここではRakeタスクによるSchedulerの利用を紹介します。まずはプロジェクトがSchedulerを利用できるようにherokuコマンドを利用します。
$ heroku addons:add scheduler:standard
次に、”Hello World”と出力するRakeタスクをRailsアプリケーションのlib/tasksにscheduler.rakeとして保存し、Herokuにデプロイします。
task :output_greeting => :environment do puts "rake task is running..." puts "Hello World." end
次にHeroku上のアプリケーションのHeroku Schdulerページからジョブを登録します。コマンドラインからheroku addons:open schedulerを実行することでブラウザが起動し、Heroku Schedulerページが表示されます。ここでスクリプトが定期的に実行されるジョブとして登録され、それ以降、定期的に実行されます。
後述するheroku logsコマンドを実行すると次のようにRakeタスクが実行されていることが分かります。
2012-04-30T17:33:29+00:00 heroku[run.1]: State changed from created to starting 2012-04-30T17:33:37+00:00 heroku[run.1]: Starting process with command `bundle exec rake output_greeting` 2012-04-30T17:33:38+00:00 heroku[run.1]: State changed from starting to up 2012-04-30T17:33:40+00:00 app[run.1]: rake task is running... 2012-04-30T17:33:40+00:00 app[run.1]: Hello World. 2012-04-30T17:33:41+00:00 heroku[run.1]: Process exited with status 0 2012-04-30T17:33:41+00:00 heroku[run.1]: State changed from up to complete
Q3:ジョブをHerokuの外部から実行するにはどうしたらいい?
Herokuの外部からジョブを実行するには、Q1でも紹介したHerokuツールのrunコマンドを利用します。このコマンドはHerokuの仮想環境下でコマンドを実行することができます。つまり、ローカル環境のPCなどからheroku runコマンドを使用することで、Heroku上にデプロイしたプログラムを実行することができるのです。
この機能を社内システムのバッチ処理の途中に組み込むことで、Herokuを社内のバッチ実行環境の1つとして利用することが可能となります。
以下に、Q2で使用したrakeタスク、rubyスクリプト、bashスクリプトを、ローカル環境でheroku runコマンドを実行した結果を載せます。
$ heroku run rake output_greeting Running rake output_greeting attached to terminal... up, run.1 rake task is running... Hello World.
このように、ローカル環境からHeroku上のプログラムを実行し、その結果を標準出力として受け取りますので、処理結果をローカル環境でハンドリングすることができます。
Q4:ジョブやプロセスの監視はどうやるの?
通常のシステムでは、バッチ処理実行中にプロセスが正常に稼働しているか、エラーが発生していないか、ログやプロセスを確認して監視していると思います。Herokuでもプロセスやログを確認するための機能がherokuコマンドで提供されています。
プロセスの監視
heroku psコマンド※
コンソール(Windowsならばコマンドプロンプト)を開き、対象アプリケーションのローカルgitリポジトリから「heroku ps」を実行すると、対象のアプリケーションのプロセスの実行状況を確認できます。
$ heroku ps Process State Command ------------ ------------------ --------------------------------------------- web.1 up for 8h bundle exec thin start -p $PORT -e production web.2 up for 3m bundle exec thin start -p $PORT -e production worker.1 up for 1m bundle exec stalk worker.rb
コマンドの実行結果から、ジョブごとのプロセスの状態が確認できます。実行した場合の処理のイメージは以下のようになります。
ログの監視
heroku logsコマンド※
「heroku ps」と同じくコンソールから「heroku logs」を実行すると対象のアプリケーションのサーバーログが取得できます。
$ heroku logs 2010-09-16T15:13:46-07:00 app[web.1]: Processing PostController#list (for 208.39.138.12 at 2010-09-16 15:13:46) [GET] 2010-09-16T15:13:46-07:00 app[web.1]: Rendering template within layouts/application 2010-09-16T15:13:46-07:00 app[web.1]: Rendering post/list 2010-09-16T15:13:46-07:00 app[web.1]: Rendered includes/_header (0.1ms)2010-09-16T15:13:46-07:00 app[web.1]: Completed in 74ms (View: 31, DB: 40) | 200 OK [http://myapp.heroku.com/] 2010-09-16T15:13:46-07:00 heroku[router]: GET myapp.heroku.com/posts queue=0 wait=0ms service=1ms bytes=975 2010-09-16T15:13:47-07:00 app[worker.1]: 2 jobs processed at 16.6761 j/s, 0 failed ...
「heroku logs」ではオプションに「–tail」をつけることでUnixコマンドの「tail -f <filename>」と同様に、ログを表示し終わっても終了せずに、その後、ログに追加された内容を表示することができます。
ただし、「heroku logs」はあくまでログの確認しかできないため、直接ログファイルにアクセスできません。しかしアドオンの「Loggly」を利用することで、ログを保存して参照することが可能になります。
Logglyを利用すると、HerokuのAdd onsメニューから状況や中身を参照できるようになります。また、オプションでAWSのストレージサービス(S3)への保存も可能な便利なアドオンです。
※herokuコマンドはセットアップされていることを前提としています
これらの機能を利用することで、社内の他のシステムと同様に監視ツールと組み合わせて障害の検知等を行うことができます。
最新ニュース
はてなブックマーク - 新着エントリー - 総合 新着エントリー
- 日本最大のコーヒーの祭典「SCAJ」が楽しい あらゆるコーヒーが試飲でき高価な機械も触れる展示会2026年11月10日 に AM 2:06 に
日本最大のコーヒーの祭典と言われる、SCAJ展示会に行ってきた。コーヒー好きにとってはむちゃくちゃ楽しいので、どこがどう楽しいのかを紹介したい。 コーヒーの祭典が東京で開かれる 毎年秋に東京ビッグサイトで数日にわたって開催される日本最大のコーヒーの展示会、それが「SCAJ ワールド スペシャルティコーヒーカ...
- 【ITエンジニアの転職と入社後ギャップに関する実態調査】エージェント利用転職者の約9割が「求人票では職場の実態がわからない」と回答入社後に事前情報との食い違いを感じた人は7割以上〜最も知りたかった「配属チームの開発体制」が入社後に食い違った情報の1位に〜2026年11月10日 に AM 2:00 に
株式会社キッカケクリエイション(本社:東京都渋谷区、代表取締役:川島 我生斗)は、転職エージェント(人材紹介会社)を利用して直近3年以内に転職したITエンジニア101名を対象に、ITエンジニアの転職における「求人票に載らない情報」と入社後ギャップに関する実態調査を実施しましたので、お知らせいたします。 01...
- 「父がちょっと人が良すぎて心配なんだよな」映画館で自分たちが取った超良席を占領していた親子連れに対し、父が取った対応に不安を覚えた話2026年11月10日 に AM 1:33 に
なはん。 @kajyosayonara_3 親父がちょっと人が良すぎて心配なんだよな……。 この間、江釣子のイオンシネマで我々の座席(超良席)を占拠していた親子連れがいて、座席間違えてますよ、と言ったのに動かないから、いったんはその場を離れたんよ。 スタッフ呼んできますね、とわざわざ声がけして出るふりして 2026-11-09 2...
- マンジャロ、視力低下の恐れ 肥満治療、米FDAが警告(共同通信) - Yahoo!ニュース2026年11月10日 に AM 1:20 に
マンジャロ(KYODONEWS) 【ワシントン共同】米食品医薬品局(FDA)は9日、肥満症や2型糖尿病の治療に使われる「GLP1受容体作動薬」の使用により、急激な視力低下につながる恐れがあると発表した。製薬企業に対し、薬の添付文書にこうしたリスク情報を追加するよう求めている。 【写真】客に「デブ」とののしられた女性...
- The 100 Best Indie Rock Albums of All Time2026年11月10日 に AM 12:12 に
We started this project with one big question: What is indie rock? Our answer is these 100 albums that offer one definition of the genre. It is not the only definition, but it is ours, the one we think best captures indie rock’s spirit as it was and continues to be. A top summary of our definitio...
- Amazon CloudWatch Logs announces account-level retention policies - AWS2026年11月9日 に PM 11:46 に
The sessions are set and your seat is waiting. Register now
- 父と母の介護するのがしんどくって役所行ってきた 喋るのが苦手だから事前に資料も用意してきたけど見てもらえなかった 役所では地域包括支援センターの主任ケアマネに相談してとたらい回しにされた 役所から主任ケアマネに相談したらやっぱり本人の意思重視だからと言われた 絶望で役所で泣いちゃった→「ケアマネさん、替えることできますよ。どんどん社会資源使いましょうよ。良き担当者に巡り会える事、祈ってます」2026年11月9日 に PM 11:46 に
KOKOBIT STUDIO もぎ 📷 @cierge_music これ、たらい回しではなく、正規の手順。 市役所に相談して自分が住んでる地域の支援センターを教えてもらい、そこで空いてる介護施設を紹介してもらう。 介護度によって利用できるサービスが変わるので、市の調査員に自宅まで来てもらって頭と体の状態をチェックしてもらう。 x.c...
- 正倉院展の展示品の前でスマホのカメラを起動中のおばさまに周囲の人が「撮影禁止ですよ」と教えたら「これは写真撮るんじゃなくて、拡大して見たいだけなの」と言われた話2026年11月9日 に PM 11:36 に
?だれか? @question565656 正倉院展に行ったら、展示品の前でスマホのカメラを起動してるおばさまがいて、気づいた周りの人が「撮影禁止ですよ」と教えてあげてた 一人は「あ、そうなの?知らなかった!」と 別の場所で見たほかの人は「これは写真撮るんじゃなくて、拡大して見たいだけなの」と 2026-11-09 14:14:53 ...




