AstroでGitHub風の勉強ログカレンダーを作る
Googleカレンダーの予定から学習時間を自動で集計し、GitHubの「草」のようなカレンダー形式で表示するコンポーネントを作成した。 学習の記録を可視化することで、モチベーションの維持に繋げるための取り組みである。
合計勉強時間: 201.5 時間 (2026年)
GitHubでソースコードを見る
技術的な仕組み
Section titled “技術的な仕組み”このカレンダーは以下の仕組みで動作している。
- Astro (SSG): ビルド時に Google Calendar API を叩いてデータを取得し、静的なHTMLとして書き出す。
- Google Calendar API: 特定のカレンダーから予定を取得し、日付ごとに合計時間を集計する。
- GitHub Actions: 1日1回、深夜に自動でビルド・デプロイを実行することで、毎日最新の学習ログが反映される。
セットアップ手順
Section titled “セットアップ手順”詳細な手順はGithubリポジトリのREADMEを参照すること。
-
Google Cloud Console での準備
- Google Cloud コンソールでプロジェクトを作成。
- Google Calendar API を有効化。
- APIキー を発行。
-
Googleカレンダー側の設定
- カレンダーの設定で「一般公開」を有効にする。
- 「カレンダー ID」をコピー。
-
環境変数の設定 GitHubの Repository secrets または
.envに設定する。GOOGLE_CALENDAR_API_KEY="あなたのAPIキー"PUBLIC_GOOGLE_CALENDAR_ID="あなたのカレンダーID"
- Googleカレンダーの予定データを元に学習時間を集計し、GitHub風カレンダーコンポーネントとして表示できる。
- AstroのSSGとGitHub Actionsを組み合わせることで、定期的に静的サイトとして更新される仕組みを実現できる。
他の記事を探す