えいのうにっき

a-knowの日記です

「作ればわかる!Google App Engine for Javaプログラミング」作ってみてるよ!(2)

前回から少し間が開いてしまいましたが、この土日、ようやくまとまった時間が取れたもので、頁を進めることができました。 今回は、本の中では「彼女からの目覚ましメール」というアプリとして解説・作成されているものがターゲット。実際のアプリはこちらですね。

メールアドレスとニックネームを、メールを送ってきて欲しい時間(目覚まし時間)とともに登録すると、その時間に自動的にメールが送信されてくる、というもの。 最初、このサンプルを見たときは、「スケジュールタスクなら今の自作アプリでもやってるから、この章は見るだけでいいかな〜」とか考えていたんですが、「“メールをGAE宛に送ることで自動再送信を止める”のあたりの仕組みが未知&おもしろそう」「アレンジがしやすそう」といった点から、こちらの章も実際に手を動かしてみることにしました。

アレンジアプリの仕様

たいそーなアレンジじゃーないですが。

  • メールの自動送信をリマインダー的に使う、「Send Mail Reminder」ってのを作る!
    • 「ニックネーム」の代わりに、リマインド内容を登録できるようにする。
    • リマインダーなので、ひとつのアドレスで複数のタスクを登録可能にする。
      • 「彼女からの目覚ましメール」は、あくまで「目覚まし」であるから、タスクは1アドレスにつき1つしかできない。
        • タスクのエンティティの主キーにメールアドレスを使ってるから
      • これをこのまま作ったのでは複数のタスクを登録することはできない
        • 主キーをID(自動発番)にすることで解決
    • 来たメールに返信することで、自動再送信がストップ。
      • ただ、「彼女からの目覚ましメール」では返信元のアドレスをキーにタスクを削除していたけど、「Send Mail Reminder」ではそれができない
        • 主キー変えちゃったから
      • なので、リマインダーメールの件名に書かれている「登録No」を返信メールの件名に書いて返信することで再送信停止、とした
    • 自動再送信は2回までとした。
      • 「彼女からの目覚ましメール」では1回だけ。

こんなとこかな。

完成品。

こんなかんじです。。

こんな↓ふうにタスクを登録してもらうとー。

こんな↓かんじでメールが送られてきましてー。件名は「Send Mail Reminder::登録No.1」となってますね〜。

これを放置しておくと、10分後に同内容のメールが送られて来ます。

これをさらに放置しておくともう1度、メールが再送信されてきます。 タスクを消化するなどして、もう再送信が不要になった場合は、自動送信されてきたメールの件名の登録Noを返信メールの件名に入力した状態で返信して頂けると、自動再送信が停止されます(タスクが削除されます)。

返信しなかった場合でも、GAEからの自動再送信は最大2回(つまり、最大で3回、同内容のメールが送られて来ます)でストップします。

やってみての感想。

  • タスクキュー、スケジュールタスクの良い復習になった!
  • メール受信機能はおもしろい!簡単な操作であれば、「ユーザーからのメール受信」をトリガーになにかをさせてやるアプリをつくることもできるなー。
  • その他基本的なこと(エラーハンドリングとかtaglibとかエンコーディングとか)の復習・勉強にもなるから、ほんと良い教材!
  • やっぱぼくGAE大好きだなーっ

次回は「アバター旅行記」とな?! でもなー、ぼくflickrやってないんだよなー。。