この記事は Qiita Advent Calendar 2025 - 時系列データ の6日目の記事です。
「コーヒーはコードを書くガソリン」と以前チームメンバーが言っていました。たしかに私もコーヒー飲みながらコードを書くのが好きなのか、コードを書きながら飲むコーヒーが好きなのか、とにかくこの組み合わせは最高です。
今回は、自分のコーヒー消費量とGitHubコントリビューションという2つの時系列データを重ねてみました。
使うデータ
| データソース | 取得方法 | 期間 |
|---|---|---|
| コーヒー消費 | スターバックスカードの利用履歴(Web) | 約5ヶ月 |
| 開発活動 | GitHub CLI | 同期間 |
スターバックスカードの利用履歴は半年しか保存されていませんでした。
データ取得
GitHub コントリビューション
gh api graphql -f query='
query {
user(login: "YOUR_USERNAME") {
contributionsCollection {
contributionCalendar {
weeks {
contributionDays {
date
contributionCount
}
}
}
}
}
}'
コーヒー消費
Webの利用履歴ページからスクレイピング。以下のような構造のデータが取れます:
date,store,amount,type
2025/07/12,Store A,1486,purchase
2025/07/23,Store B,463,purchase
2025/07/23,Online,1000,deposit
...
データクレンジング
利用履歴には「コーヒー購入」以外も含まれます。純粋なコーヒー消費のみを分析対象とするため、以下を除外しました:
- グッズ購入: タンブラー購入(1件)
- カード入金(Deposit): チャージは消費ではないため除外
月別サマリー
グッズを除外した結果:
| 月 | GitHub | コーヒー回数 | コーヒー金額 |
|---|---|---|---|
| 2025-07 | 88 | 3回 | ¥2,384 |
| 2025-08 | 234 | 11回 | ¥4,022 |
| 2025-09 | 38 | 5回 | ¥2,452 |
| 2025-10 | 16 | 3回 | ¥1,421 |
| 2025-11 | 4 | 1回 | ¥435 |
8月がピークに見えますが、記録以前はもっと頻繁にコーヒーを飲んでいました。半年しか履歴が残っていないので7月より前が見えていません。
秋以降は回数、金額とも急減しています。コーヒーを控えたら睡眠の質が上がるかと思い控えていました。はたして、コーヒーを控えた結果がGitHubにも影響しているでしょうか…?
可視化
週次で並べてみると、パターンがよく見えます。
上段がGitHubコントリビューション、下段がコーヒー消費(グッズ除外)です。
- 8月初旬: 両方ピーク(週5回の来店、90+のコミット)
- 9月以降: 両方とも減少傾向
- 11月: ほぼフラット
相関分析
週次データで相関係数を計算してみました。
# 週次集計後
corr_visits = weekly['github'].corr(weekly['coffee_visits'])
corr_amount = weekly['github'].corr(weekly['coffee_amount'])
| 指標 | 相関係数 |
|---|---|
| GitHub × コーヒー回数 | 0.437 |
| GitHub × コーヒー金額 | 0.468 |
中程度の正の相関があります。コーヒーを飲む週は、コードも書いている傾向。
答え合わせ
コーヒーを減らしたらGitHubの活動も自然と減少していました。Day2の記事で分析した際、GitHubが秋以降に低下していたことを自分では全く意識していませんでしたが、パターンは一致しています。もしかすると私はカフェインがないとコードが書けないのかもしれません…?!
解釈の注意
分析結果の解釈には注意が必要です:
- 交絡因子: 季節、仕事の忙しさ、体調など他の要因も影響
- 因果関係は不明: 相関があっても因果とは限らない
- 見せかけの相関: 今回は両方のデータが「秋にかけて減少」という共通トレンドを持つため、相関係数が高めに出ている可能性があります。
サンプル数も20週と少ないため、あくまで参考程度にご笑覧ください。相関分析は手軽で使いやすいですが、「相関」と「因果」は異なることを認識しておくべきです。分析を行う場合は他の手法も使って多面的に捉えるべきです。
まとめ
- 2つの時系列データを重ねると、単独では見えないことが浮かび上がる
- データクレンジング: グッズ購入を除外することをお忘れなく
- 利用履歴系データは保存期間が短いので長期の分析を行いたい場合は定期的にエクスポートするといいですね
明日の時系列データ Advent Calendarも何か書くかもしれません。
