入札情報の通知ツール (Lambda版)

2025-03-04

自分のための開発ですが、参考までに事例として紹介させていただきます(2015年2月ごろの作業です)。

目的

いろいろなところで案件の入札が行われていると思います。それらの入札情報は定期または不定期で更新されることが多いと思います。普通は、自分で入札情報が掲載されているサイトを見に行ってどのような入札案件があるのか確認すると思います。

これって、結構手間がかかると感じませんでしょうか?私の場合、個人で仕事をしているのもあり、忙しいとすっかり忘れていたりします。

そこで、入札情報の確認ツールを作り、新しい入札案件があれば、メールで教えるようにしました。

以前は、この作業を GoogleのGoogle Apps Script (GAS) を利用して行っていたのですが、入札情報のサイトが動的サイトに変更されたため、GASでは対応できなくなりました。

そこで、今回は次のような条件で構築しました。

  • 極力低コストで運用できるようにする
  • 確認先のサイトが複数になっても対応できるようにする
  • 入札案件の調査方法は、取得先のサイトに併せて変更可能とする
  • 確認は、週一回など定期的に行う

ツールの構築

動的サイトのスクレイピングを行うには、 Selenium が適していると思ったので、今回は Python で Selenium を動かして、必要な情報を取得するようにしました。

また、実行環境としてはサーバーを立てるとコストがかさむので、 AWS の Lambda を利用することにしました。 Lambda を定期的に呼び出すため、 EventBridge Scheduler を用いています。このほかにも、処理に失敗した際の通知や成功した場合の通知なども、 AWS のサービス (SNS) を使いました。

複数の AWS のサービスを連携して動かすために AWS Serverless Application Model (SAM) を用いて構築しました。

処理はサイトごとに週一回の起動ですが、 Web サイトに負荷をかけないように配慮しておきます。

技術的な内容について知りたい方は、スクレイピングについてはこちらのブログ記事、SAMについてはこちらのブログ記事などをご参照ください。

作業結果

スクリプトを作成後、下図のように毎週決まった曜日の決まった時間帯に動作するように設定します。

nyuusatsu timer setting

当日になると、下記のようなメールが送られてきます。

sample of nyuusatsu result mail

この例の場合は、指定したキーワード別に新しい案件があったかどうかを記載してくれています。

終わりに

以前これと同じことを GAS で組んでいたのですが、移行して動くようになると改めて便利さを実感します。

今回は Python で処理をおこなうようにしたので、複数サイトへの対応も簡単にできるようになりました。また、通知先を AWS SNS で管理しているので、宛先の増減や変更、スマホへの通知なども簡単に対応できるようになりました。

もし、類似のツールにご興味がある方は、こちらからお気軽にお尋ねください。