いつ、何をしたか、を記録したい。データ保存量や期間が限られているようだ。
Events
- イベントは “ETag"ヘッダーでポーリングするように最適化されています。
- ページングは
per_page=30固定。最大10ページまで。つまり最近300件まで - 過去90日間以内のみ。90日以降は300件以内でも削除される
- イベント一覧API
GET https://api.github.com/events
疑問
- ETagタグとは何か
- ポーリングとは何をすることか
API
-
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の利用も検討すべきか。