2
0

[1/3]限りなくコストを抑えて当日のGitHubContributesのスクレイピングし、push状況を通知するWebサービス作ってみました!!

Last updated at Posted at 2024-08-21

(この記事&Webサービスは作成途中となっております!ご了承ください![2024年8月21日現在])

概要

当サービスは、GitHubに当日のプッシュがなかった場合、
ユーザーが決めた時間にメールアドレスへ通知を送るシステムです!

利用者にはGitHubのアカウント名と通知に必要な情報

  • メールアドレス
  • github名
  • 通知時間
    を登録できるサイトを用意し、Contributeの継続数をランキング形式で表示します(準備中)

なお、タイトルにもある通りほぼ無料で構築できるようにこだわりました...!

作成のきっかけ

そろそろIT歴2年目に突入しますので記念にアウトプットも兼ねて何かサービスを作ってみたいな、と思い立ったのがきっかけです!
調べてみた限り、GitContributeをスクレイピングしてくれる技術はありましたが、本日のGithubへのpushがない場合通知してくれるサービスは無く、作成しました!

このシステムが狙っているのは以下の点です:

  • Gitへの毎日のプッシュが技術力向上につながる
  • コードに毎日触れることで継続的な学習意欲を養う
  • WebサイトでGitHubへの継続プッシュ数がランキング表示されることで、他のユーザーと競争心を煽り、モチベーションを保つ

と、長々と書きましたがほぼ自分用のサービスです:rolling_eyes:

構成

今回のサービスには大雑把に分けて3つのコンポーネントが必要になります

1. 30分単位でGitへのpushをスクレイピングし、任意の時間にpushが無ければユーザーにメールを送る24時間稼働させる定期的ジョブ(バッチ処理)
2. ユーザ情報登録&ランキングを閲覧出来るWeb画面(フロントエンド)
3. DBへのCRUD操作&ビジネスロジック(バックエンド)

当記事は1のバッチ処理の紹介になります

(超雑な)構成図

構成図

使用技術

言語: Python
データベース:MongoDB Atlas(アトラス)
メールサービス:Gmail SMTPサーバー
クラウドサービス(GCP):
Cloud Scheduler
Cloud Functions

1.バッチ処理の目的と概要

このバッチ処理の目的は、GitHubへのプッシュ状況を監視し、一定の時間内にプッシュがない場合にユーザーに通知することです
具体的には、以下の手順で実装されています:

1.定期的なジョブのスケジューリング:

Google Cloud Schedulerを使用して、30分ごとにジョブを実行
実行構成URLにCloud Functionsで作成したプロジェクトを指定

2.プッシュ状況のスクレイピング:

Pythonを使って、GitHubのアカウントからプッシュ状況を確認し、プッシュがない場合には通知
GitHubのユーザーの貢献状況を確実に取得するために、requestsライブラリを使用してHTTPリクエストを行い、BeautifulSoupでHTMLを解析しています

3.メールの送信:

Gmail SMTPサーバーを使用して、プッシュがないことをユーザーに通知

2.コード例

-- 作成中

3.セキュリティへの配慮

このシステムでは、以下のセキュリティ対策として
セキュリティに関する設定情報は、ソースコードに埋め込まず、.envファイルの使用してOSの環境変数として読み取るようにしています!
これにより、機密情報がソースコードに含まれることを防ぎます

4.まとめ

GitHubにソースをまとめたものがありますのでよろしければ見てみてください~!

作成中..

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0