Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Google App Engine for Javaを使ってみよう!
(7)App Engine Cron Service

Google App Engine for Javaを使ってみよう! (7)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/06/18 14:00

 この連載では2009年4月に発表されたJava版のGoogle App Engineを解説します。今回は、Google App Engine上で設定した時間にプログラムを動作させることができる「App Engine Cron Service」の使い方を勉強したいと思います。

目次

はじめに

 Googleのインフラで実行されるクラウドサービス Google App Engineが2009年4月7日にJavaに対応しました。Javaエンジニアにも利用できるようになった、Google App Engineを一緒に勉強して行きましょう!

 今回は、Google App Engine上で設定した時間にプログラムを動作させることができる、「App Engine Cron Service」の使い方を勉強したいと思います。

対象読者

  • ウェブサービス開発に興味のあるJavaエンジニア
  • Google App Engine for Javaに興味がある方

必要な環境

  • 「Google Plugin for Eclipse」がインストールされている、Eclipse 3.3(Europa)か3.4(Ganymede)

 開発環境の構築手順については、第1回の解説を参照してください。

App Engine Cron Serviceとは?

 ウェブサービスを作っていると、以下のように決まった時間にプログラムを走らせたいことがよくあります。

  • 毎日24時に1日のアクセス記録を統計化して管理者にメールする
  • 毎月1日の0時にテンポラリデータの削除をする

 Windows系のシステムでは、「タスク・スケジューラ」、UNIX系のシステムでは「Cron」を利用しますが、Google App Engineにもこれに似た「App Engine Cron Service」と呼ばれる仕組みが用意されています。App Engine Cron Serviceでは、時間とURLを記述したxmlファイルをプログラムと一緒にデプロイすることによって、プログラムを制御します。

App Engine Cron Serviceを使ってみよう!

 App Engine Cron Serviceの設定ファイル(cron.xml)は非常に簡単に書くことができます。早速、cron.xmlを見てみましょう。

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
  <cron>
    <url>/cron/mail</url>  <!-- (1) -->
    <description>every 1 minutes</description>  <!-- (2) -->
    <schedule>every 1 minutes</schedule>  <!-- (3) -->
  </cron>
</cronentries>
  1. 自動的に実行したいURL
  2. この定義の名前(管理コンソールの「Cron Jobs」で表示される名前になります)
  3. アクセスさせたい日時
scheduleのフォーマット
("every"|ordinal) (days) ["of" (monthspec)] (time)

書き方の例

every 5 minutes
every 12 hours
2nd,third mon,wed,thu of march 17:00
every monday 09:00
1st monday of sep,oct,nov 17:00
every day 00:00
scheduleの詳細な説明
項目 詳細な説明
every

毎月/毎日/毎時を表現したい場合、「every」を指定します。

ordinal 最初の週/第3週などを表現したい場合、英語で指定します。「1st」か「first」のいずれかのフォーマットで書きます。カンマ(,)で区切ることで複数指定できます。例:「第1と第3」と表現したい場合、カンマ(,)で区切り「1st,3rd」あるいは「first,third」と指定します。
days 曜日を英語で指定します。「mon」か「monday」のいずれかのフォーマットで書きます。カンマ(,)で区切ることで複数指定できます。毎日の場合、「every mon,tue,wed,thu,fri,sat,sun」の代わりに「every day」と書くこともできます。
monthspec 月を英語で指定します。「jan」か「january」のいずれかのフォーマットで書きます。カンマ(,)で区切ることで複数指定できます。指定がない場合、毎月になります。
time 時間を「HH:MM」スタイル(24時方式)で指定します。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 山下 大介(ヤマシタ ダイスケ)

    &nbsp;&nbsp;京都大学を中心とした、産官学共同プロジェクトのSOBAプロジェクトに参加後、同プロジェクトで開発したP2P配信によるVoIP技術を2005年に商業化。オープンソース、VoIP、P2P、クラウドコンピューティングに精通。趣味はGoogleの追っかけ。現在は、株式会社SOBAプロ...

バックナンバー

連載:Google App Engine for Javaを使ってみよう!

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5