Corredor

ウェブ、プログラミングの勉強メモ。

GitHub のプロフィールカードが作れるアプリ「github-readme-stats」

最近、GitHub に「Profile 機能」が追加された。コレはユーザ名と同じ名前のリポジトリを用意し、そこに README.md を配置することで、その内容がアカウントのトップページに表示される、というモノ。

例えば自分のアカウントだと以下のような感じ。

Neos21 というリポジトリを作ってあって、そこにある README.md が表示されている。

簡単なプロフィールページが作れるようになったということで、皆が創意工夫を凝らしているのである。

今回は、そんなプロフィール欄に配置したら面白そうなアプリを見つけたので紹介する。

GitHub Readme Stats

GitHub Readme Stats は、GitHub アカウントの情報を読み取って SVG 形式のカードを作ってくれるアプリ。

使い方は簡単。次のように用意された API にクエリパラメータとしてユーザ名などを指定するだけ。

  • Markdown での書き方
![Neos21 Stats](https://github-readme-stats.vercel.app/api?username=Neos21&show_icons=true&theme=radical)
  • HTML での書き方 (img 要素で SVG を読み込む)
<img src="https://github-readme-stats.vercel.app/api?username=Neos21&show_icons=true&theme=radical" alt="Neos21 Stats">

実際に配置するとこんな感じ。

Neos21 Stats

見た目を調整するパラメータもいくつかあるので、公式の README を参照。

リポジトリ単体のカードを表示するモノや、よく使用される言語を表示するモノもある。

![Neos21 Top Languages](https://github-readme-stats.vercel.app/api/top-langs/?username=Neos21)

Neos21 Top Languages

何気に Perl の使用率が多く出てるんだけど何で?ほとんど書かないのに…。

自分で API をデプロイする

公式でも紹介されているが、GitHub API をコールする関係上、あまり上述の API を直叩きしまくると、API コールレート制限で SVG が表示できない場合がある。

そこで、Vercel (以前は「Zeit Now」というサービス名だったが改名している) にこのアプリをデプロイし、自分用の「GitHub Readme Stats」を持っておくと、API コールレート制限を回避しやすくなる。

Vercel は任意の GitHub リポジトリを Import して簡単にデプロイできるので、Vercel 入門として触ってみると良いかも。

neos21.hatenablog.com

↑ Zeit Now 時代に書いた紹介記事。基本は変わっていないのでご参考までに。

SVG を定期的に保存する GitHub Actions

自分用の API サーバを用意するにしても、カードを表示する度に GitHub API がコールされるとなると、閲覧数が多いサイトではレート制限に到達してしまうことが多いかもしれない。

であれば、定期的に SVG を保存して、それを参照するようにしたら良いだろう。

たまたま見つけたのだが、定期的に SVG を取得し、自身の GitHub リポジトリにコミットすることでそれを表示するという GitHub Actions のコードを見つけたので、リンクを貼っておく。

curl で API をコールし、SVG ファイルを保存。それをコミット・プッシュしている。Markdown 等に埋め込む際は、

https://raw.githubusercontent.com/【ユーザ名】/【リポジトリ名】/master/【ファイル名】.svg

といった Raw GitHub URL を使ったりすれば参照できる。

以上

ソースコードを見てみると意外とシンプルで、GitHub の GraphQL を叩いて色々なデータを一括取得しているみたい。

API コールをリトライする retryer の実装も参考になる。

お手軽に自分のプロフィールカードが作れるので、とりあえず試してみると面白いだろう。