Prompt

githubに表示されてるコントリビューションカレンダーを、iframeかapiかなんかで取得する方法はある?

お、GitHubのコントリビューションカレンダー(草)を自分のサイトに表示したいんだね!🌱 素晴らしいアウトプット精神だよ!

結論から言うと、キミが挙げた通り、主に2つのアプローチでこの「草」のデータを取得・表示できるよ。


1. iFrame/埋め込みによる方法(お手軽だが柔軟性低)

これは最も簡単で、プログラミングの知識があまりなくてもすぐに実装できる方法だよ。

🔹 仕組み

GitHubの提供する組み込み機能や、サードパーティが提供するウィジェットサービスを利用して、カレンダー全体をHTMLの <iframe> 要素として埋め込むよ。

🔹 公式の方法(現在は非推奨/代替が必要)

残念ながら、GitHubはユーザーのコントリビューションカレンダーを直接埋め込むための公式なウィジェットやiFrame URLを標準では提供していないんだ。

🔹 代替案:サードパーティ製サービス(推奨)

多くの開発者がこのニーズに応えるために、カレンダー画像を生成するサービスやリポジトリを公開しているよ。

サービス/ツール特徴
github-contribution-grid-acmeGitHubのAPIからデータを取得し、SVG画像を生成してくれる。これをMarkdown(README)やHTMLで埋め込む。
Contrib.rocksカレンダーをカスタマイズ可能な画像として生成できる。

💻 実装イメージ(SVG埋め込みの場合)

HTML

<img src="https://github-contribution-grid-acme.vercel.app/api?username=YOUR_USERNAME" 
     alt="GitHub Contrib Grid" />

⭕ メリットと ❌ デメリット

  • 簡単: 数行のHTMLを書くだけで完了。

  • メンテナンスフリー: データ取得や画像生成はサービス側がやってくれる。

  • 柔軟性がない: 色やレイアウトのカスタマイズが難しい。

  • 依存性: サードパーティサービスが停止すると表示できなくなる。


2. APIによる方法(複雑だが柔軟性高)

キミが情報工学を学んでいるなら、こっちのAPIを叩いて自分で表示するアプローチが、カスタマイズ性が高く、最も面白いと思うよ!

🔹 仕組み

GitHubの公式API(主にGraphQL)を使って、カレンダーの元となる「いつ、どれだけのコントリビューションがあったか」という生データを取得し、JavaScript(キミの得意な!)などで自分でカレンダーをレンダリングするよ。

🔹 使用するAPI: GitHub GraphQL API

GitHub REST APIでも可能だけど、GraphQL APIを使うのが最も効率的かつ推奨されている方法だよ。

GraphQLを使うと、特定のユーザーの過去1年間のコントリビューションデータを1回のクエリで取得できるんだ。

💻 GraphQLクエリのイメージ

GraphQL

query ContributionCalendar($username: String!) {
  user(login: $username) {
    contributionsCollection {
      contributionCalendar {
        weeks {
          contributionDays {
            date
            contributionCount
          }
        }
      }
    }
  }
}

🔹 実装手順(JavaScript/PHPなど)

  1. GitHub Tokenの取得: GitHubアカウントでPersonal Access Tokenを発行する。

  2. APIエンドポイントへのPOST: 上記のGraphQLクエリを、https://api.github.com/graphql へ送信する(Authorization ヘッダーにトークンを含める)。

  3. データ処理: 応答として得られたJSONデータ(各日の datecontributionCount)をJavaScriptなどで受け取る。

  4. レンダリング: CSS GridやSVGを使って、取得したデータに基づいてHTML上にカレンダーグリッドを描画する。

⭕ メリットと ❌ デメリット

  • 完全なカスタマイズ: 色、フォント、レイアウトを自由に設計できる。キミのサイトのデザインに完全に合わせられる!

  • 高速: 必要なデータだけを取得するため、効率的。

  • 複雑: APIキーの管理、認証処理、カレンダーの描画ロジックを自分で実装する必要がある。

  • レート制限: APIの叩きすぎには注意が必要。


🚀 結論:まずはAPIで試すのがおすすめ

キミはJava、C#、JavaScript、PHP、SQLの経験があるから、API(GraphQL)でデータを取得し、JavaScriptとHTML/CSSでレンダリングするアプローチが、スキルアップにも繋がって一番楽しいはずだよ!

GitHubのGraphQL Explorerを使って、まずは自分のユーザー名でどんなデータが取れるか試してみるのが最初のステップだね!

もし興味があれば、GitHub GraphQL APIの具体的な認証方法JavaScriptでのデータ整形・描画について、もう少し深く掘り下げてみようか?😉

Prompt

今回、secretなキーは扱えない制約があるから、単にmarkdownに貼りつけられる何かの方法を知らない?

APIキーなどのシークレットを管理したくない、という制約があるなら、URLを画像としてMarkdownに埋め込むだけの外部サービスを使うのがベストな解決策だよ!

これなら、サーバーを用意したり、APIトークンを発行したりする必要は一切ない。単にGitHubの公開情報を勝手に取得して画像にしてくれるプロキシのようなサービスを使うんだ。

代表的なものを2つ紹介するね。

1. ghchart (GitHub Contribution Chart Generator)

一番有名でシンプルなやつ。以下のURL形式をMarkdownに貼るだけで、キミの草(コントリビューションカレンダー)が表示されるよ。

使い方:

Markdown

![草の画像](https://ghchart.rshah.org/キミのGitHubユーザー名)

色を変えたい場合:

ユーザー名の前に16進数のカラーコードを入れると、草の色を変えられるよ。

Markdown

![青い草](https://ghchart.rshah.org/409ba5/キミのGitHubユーザー名)

2. GitHub Readme Stats (派生版など)

「草」だけでなく、リポジトリのスター数や使用言語の統計などをカード形式で出してくれる超人気サービスもあるよ。これもURLを貼るだけ。

使い方:

Markdown

![統計カード](https://github-readme-stats.vercel.app/api?username=キミのGitHubユーザー名&show_icons=true&theme=radical)

※厳密には「草のカレンダー」そのものではないけど、活動量を可視化する目的ではよく使われるね。

注意点 ⚠️

  • 外部サービス依存: これらのサービスは個人の開発者が運用していることが多いから、サービスが停止すると画像が表示されなくなるリスクがあるよ。

  • キャッシュ: 画像がキャッシュされて、最新のコントリビューションが反映されるのに数時間~半日くらいタイムラグがある場合がある。

でも、「手軽に貼り付けるだけ」なら、これが最強の方法だね!👍


この動画では、GitHubのREADMEなどのMarkdownファイルに画像を適切に配置・表示するための基本的なテクニックが解説されていて参考になるはずだよ。