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コマンドはセットアップされていることを前提としています
これらの機能を利用することで、社内の他のシステムと同様に監視ツールと組み合わせて障害の検知等を行うことができます。
最新ニュース
はてなブックマーク - 新着エントリー - 総合 新着エントリー
- ドメインとブランドを持たない。複数プロダクト向けデザインシステムの設計判断 - RAKUS Developers Blog | ラクス エンジニアブログ2026年11月10日 に AM 6:02 に
はじめに プロダクト開発支援課フロントエンド推進チームの安彦です。 プロダクト開発支援課は2026年10月に発足したばかりの組織です。私たちのチームが顧客としているのは、プロダクトの先にいるエンドユーザーだけではありません。社内でプロダクトを作っている開発者もまた、私たちが価値を届けるべき顧客として捉え...
- 「3日で全て無になった」クックパッドで見つけたレシピで作った豚汁が普通の作り方に戻れなくなりそうなほど美味しい2026年11月10日 に AM 5:56 に
K @旧ジーク @K63000445 これまじ美味しかった! 普通の作り方には戻れないってことで娘と合意した! 余計なお世話かもだけど、作り方貼っとく cookpad.com/jp/recipes/199… x.com/k63000445/stat… 2026-10-24 21:41:06 プロの味!簡単にして激ウマな豚汁の秘密 by こじまぽん助【分子調理学研究家】 【クックパッド】 ...
- 半世紀前に見つかった若い女性2人の絞殺遺体、同一犯の犯行と判明 DNAで米迷宮事件を解決2026年11月10日 に AM 4:54 に
(CNN) 米ペンシルベニア州ワシントン郡の当局はこのほど、半世紀近く前に起きた若い女性2人の殺人事件について、同一犯による犯行との見方を明らかにした。遺族は何十年もの間、犯人が誰なのか分からないまま悲しみを抱えていた。 スーザン・ラッシュさん(当時21)は1976年の夜、勤務先のショッピングセンターを出る...
- アフリカの性教育でコンドームの付け方を教える時に親指を見立てて教えたら、再訪した時に双子を出産、理由を尋ねると男性は本当に親指にゴムを付けておまじない扱いだった2026年11月10日 に AM 4:45 に
塩田かごめ @shiotakagome 貧困地域なー 国際看護で、長年世界の色んな地域に出向いて看護活動をしていた人をゲストに迎えた授業があったけど その人が、計画外の出産が多くて結局育てられず乳幼児の死亡と貧困が発生してるアフリカの地域で、ゴムの付け方を現地の男性に教えたらしいんだが 2026-11-09 23:36:46 塩田か...
- SNSの偽広告掲載めぐり 前澤友作氏の訴え退ける 東京地裁 | NHKニュース2026年11月10日 に AM 4:44 に
実業家の前澤友作さんが自身の名前や画像を無断で使用した偽広告をSNSに掲載され、肖像権を侵害されたとして、運営するアメリカのIT大手「メタ」側に賠償などを求めた裁判で、東京地方裁判所は訴えを退ける判決…
- 前沢友作氏の請求棄却 メタに「なりすまし広告」削除求めた訴訟 | 毎日新聞2026年11月10日 に AM 4:41 に
インスタグラムなどになりすましの詐欺広告を掲載されたとして実業家の前沢友作氏が、運営する米IT大手メタと日本法人(東京)に広告の削除などを求めた訴訟の判決で、東京地裁は10日、前沢氏の請求を棄却した。SNS事業者の責任を明らかにすることが目的だとして、前沢氏側は損害賠償の請求額をあえて1円にとどめたが、...
- 紅葉と紅葉 第7話2026年11月10日 に AM 4:34 に
高校で“王子様”と呼ばれる美少女・紺野青(こんの あお)。 彼女に何度も告白してくるのは、 小学生の頃、青をからかいまくっていた 男子・橙山紅葉(とうやま こうよう)だった。 「男の子が嫌い、女の子が好き」 そう言って振ったはずの青の前に、 後日現れたのは── 可愛すぎる女の子になった紅葉、“もみじ”。 過去の罪悪...
- ゴジラ-0.0を観た外国人たちが、映画本編とはまた別に吉岡秀隆さんの『ヘアスタイル』を絶賛している「彼の髪に嫉妬」「彼のヘアケアのルーティンは何?」2026年11月10日 に AM 4:18 に
Yo Boi Abe @YoBoiAbe1 @eliranto As far as I know you’re the only person who pointed it out and thank you for that, I spent all of -1 and -0 think wow that is a beautiful head of hair. 2026-11-09 00:29:50 私の知る限り、それを指摘してくれたのはあなただけだと思います。ありがとうございます。-1と-0の...




