LoginSignup
1
0

More than 1 year has passed since last update.

AtCoderの成績を動的にMarkdownに埋め込む方法

Last updated at Posted at 2022-08-14

はじめに

都内でバックエンド開発を行なっている@hamaguchiです。
最近趣味として競技プログラミングをはじめました。解けた喜びはもちろんのこと、解けなかった時の悔しさを毎週味わえるのが素晴らしいです。仕事では味わえない「THE・敗北」という感じがたまらないですよね。

『悔しいっ…!悔しいっ…!だがこれでいいっ…!これでこそ競プロだっ…!』


さて前置きはここら辺にして、今回はAtCoderの成績をMarkdownファイル上に動的に埋め込むことができる AtCoder Statsを作成しました🎉

リポジトリ

よろしければスターを付けていただけると幸いです〜🤲

使い方

以下をコピーしてMarkdownファイルに貼り付けるだけで成績チャートを表示することができます🎉
username=は適宜AtCoderのユーザー名に変更して下さい。

[![](https://atcoder-stats-git-main-akmhmgc.vercel.app/api?username={AtCoderのユーザー名})]

※ なおエンドポイントはVercelの無料プランを利用してデプロイしているので、API制限が気になる方はご自身でデプロイすることをお勧めします:pray:
(参考:デプロイ方法

仕組み

AtCoderの過去の成績を取得する

AtCoderは公式APIはないのですが、特定のURLの末尾に/jsonをつけるとJSON形式でデータが返ってきます。なので過去の成績は簡単に取得できます。

https://atcoder.jp/users/username/history/json

SVGを返すエンドポイントを作る

こちらのタコの画像のような、SVG要素を返すURLは、以下のような形でMarkdownに埋め込んで画像として展開することができます。

![タコの画像](https://upload.wikimedia.org/wikipedia/commons/6/68/Octopus_clipart.svg)

<img src="https://upload.wikimedia.org/wikipedia/commons/6/68/Octopus_clipart.svg" width="420px">

なので動的にSVGで成績のグラフを返すエンドポイントを作ってあげればOKです。
グラフ作成にはD3.jsをサーバーサイドで使用するためのライブラリを使用しています。

最後に

お好きなMarkdownにAtCoderのグラフを埋め込んじゃいましょう🎉
また、改善点やご要望などがあればお気軽にコメントいただけると幸いです:pray:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0