やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GitHubのEvent(Contribution,Activity)を取得する方法について調べてみた

いつ、何をしたか、を記録したい。データ保存量や期間が限られているようだ。

Events

GitHubイベントに対する読み取り専用API

  • イベントは “ETag"ヘッダーでポーリングするように最適化されています。
  • ページングはper_page=30固定。最大10ページまで。つまり最近300件まで
  • 過去90日間以内のみ。90日以降は300件以内でも削除される
  • イベント一覧API GET https://api.github.com/events

疑問

  • ETagタグとは何か
  • ポーリングとは何をすることか

API

  • Google 翻訳

    • https://api.github.com/users/{username}/events
  • “type”: “CreateEvent”

  • “type”: “ForkEvent”
  • “type”: “PushEvent”

CreateEventリポジトリ生成イベントを含む。リポジトリの名前やリンクなどが取得できる。PushEventはコミットイベントを含む。リポジトリのコミット単位を取得できる。

5W1H データ
誰が "actor":{"id":19922005,, "login":"ytyaru",
いつ "created_at":"2017-05-12T21:55:42Z"
何をした "type":"CreateEvent",
何に対し "repo":{"id":91132391,, "payload":{"ref":"master","ref_type":"branch",

上記は「masterブランチを作成した」イベントログである。

詳しいイベント種別は以下参照。

Event Types & Payloads | GitHub Developer Guide

意義

  • GitHubでの活動を記録したい。しかしサーバ側では一定期間しか保存しない。ローカルに保存して永続化したい。
  • リポジトリ作成日時だけならすでにDBに保存してある。しかし複数回のCommitとその日時については記録しておらず活動を追えない

これからリポジトリに対するコミットを繰り返して開発していくスタイルになるのであれば、その前にぜひとも実装したい。

方針転換?

GitHubでここまでやるなら、GitLabなどローカルにGitHub系のシステムを導入したほうがいいかもしれない。

所感

やる価値は大きい。しかしEventTypeの多さからDBを作成してローカル保存するのは骨が折れそう。まずはSVGのContribution数を保存するだけにするか。いずれEventを記録してその統計としてContributionを作れたら理想的。

ただ、そこまでやるならGitLabの利用も検討すべきか。