タスクマネージャーをGoogleリーダーで代替
「Googleリーダーを利用してスケジューラーにしてしまおう」という記事です。
当方の環境では、タスクマネージャーで定期的(月次、週次、日次、毎時)にスケジュールさせているコンソールアプリケーションがありますが、やり方が悪いのか、未だに結構トラブルが多いです。
知らない間に実行されていない事もありますし、実行形式のファイルなのでバグが見つかった場合、コンパイルし直してexeファイルをサーバーに置いてやったりしなくてはならない等、asp.netに比べると使い勝手が悪いと感じています。
そこで表題の件になりますが、要は「定期的に実行する」事さえ出来ればいいわけで、必ずしもタスクスケジューラーに依拠する必要はないと考えました。というか実践済み。
そこで当方が考えたのが、表題の件になりますが、Googleリーダーで呼び出してやる方法です。
Googleリーダーの説明をしますと、クラウド型のRSSリーダーで、フィードのアドレスを指定しておくと、定期的にアクセスし、新規の記事を蓄積してくれるサービスです。
「RSSだけでしょ?」と思われるかもしれませんが、asp.netはXMLの出力形式に対応しているため、(擬似的に)RSSとして振る舞う事も可能なのです。
この性質を利用して、asp.netページにC#やVB.NETでプログラムを記述し、RSSに準拠した出力を行い、Googleリーダーにフィード登録しておけば、スケジューラーの設定をするまでもなく、Googleが勝手に読み込んでくれる事になります。
更に付加的な機能として、フィードのtitleやdescriptionに結果データ(処理件数やエラー内容など)を書きだすようにしておけば、Googleリーダーを通して結果報告を知る事も出来て、面倒なメール通知などの機能を盛り込む必要さえなくなります。
以下、メリット・デメリットをまとめました。
メリット
- スケジューラーの設定・管理をせずに済む
- 記述の慣れたasp.netでプログラムを書ける
- プログラムの更新の際に、サイトのaspxファイルを書き換えるだけで良い
- エラー時も、web.configのcustomerrors等で定義しておけば、メール通知等可能
- Googleリーダーを通じて出力結果を参照できる
- AndroidやiPhoneのアプリには、googleリーダーに対応したRSSリーダーがあるため、スマフォやタブレットで結果を確認・共有できる
デメリット
- 実行時間が長くかかる処理だと、Googleが読み込んでくれない可能性がある
- フィードを読み込むタイミングを設定できないため、例えば日次処理などの場合、何度も実行される事があっても、不具合のないようにプログラムを書く必要がある(例:当日実行済みならその日は処理しない…等)
- 原則、public公開されるため、RSSに吐き出す内容には極秘情報は入れられない(メールで送信すればいいんですが)
- 当然ですが、DBの処理等をする場合、アクセス権を適切に設定する必要がある(原則、全てストアドプロシージャで実行させるのが安全でしょう)
特に重要になるのは、デメリットの1と2あたりでしょうか。
しかし定期的にレコード件数をDBに書きだすとか、そういった類の処理にはうってつけだと思いますが、いかがでしょうか。
また、Googleリーダーの巡回以外のIPアドレスでasp.netページへのアクセスを遮断しちゃえばよりセキュアになる気もしますが、まー面倒でしょう。
サンプルプログラムなんかも載せたかったのですが、時間がないのでここまで。リクあれば載せます。
その他ご意見等あれば、コメントお願いいたします。