![](https://cdn-ak.f.st-hatena.com/images/fotolife/m/mountkoara/20210426/20210426144601.jpg)
![](https://doctor-koala-blog.com/wp-content/uploads/2023/02/B3E652CD-DF0B-4454-84DC-196B0575D187-150x150.png)
1ヶ月前の自分が読んだらなんのことだか意味が分からないタイトルです。すみません。
過去の自分に向けて説明するならば、「競技プログラミングの勉強(界隈では精進と言うのが慣例)の記録を、GitHubというコードのバージョン管理システムに上げてcontribution(変更回数)に応じてヒートマップで示したものを作りました」といったところでしょうか。
iOSのウィジェットでこのcontributionのグラフが見れるので、ホーム画面に設定して毎日眺めています。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/m/mountkoara/20210426/20210426145011.jpg)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/m/mountkoara/20210426/20210426145011.jpg)
![](https://is1-ssl.mzstatic.com/image/thumb/Purple124/v4/7b/34/48/7b344868-15ed-1002-ee37-be84c546e051/AppIcon-2x-4-85-220.png/1200x630wa.png)
![](https://is1-ssl.mzstatic.com/image/thumb/Purple124/v4/7b/34/48/7b344868-15ed-1002-ee37-be84c546e051/AppIcon-2x-4-85-220.png/1200x630wa.png)
自分は学ぶ楽しさそのものではすぐに熱が冷めてしまう無精者なのですが、記録してモチベーションを上げることでなんとか続けられます。
とは言っても、ビッチリ書き込み続けられるタイプではなくて、「手帳は続くけれど、日記は続かない」タイプです。つまりいつも手元にあって、サクッと作業が終わらないと続かない…。
記録に手間をかけて勉強時間が削れてしまっても本末転倒なので、先輩方のやり方を見習って自動で精進グラフを記録するように構築しました。
@togatogaさんの記事を参考にコマンドラインでAtCoderの正解したコード(ACコード)を取得し、MacのAutomatorで毎日定時にGitHubにpushしてcontributionを記録しています。一度コードを書いてAutomatorに任せれば、あとは放置でよし!勝手にケータイのホーム画面のcontributionグラフに反映されます。最初トライしたときは上手くいって、2回目が出来なくてなんでだろう?と思ってたらMacがスリープしていたからで、毎日定時のコードを走らせる1分前にスリープ復帰するように設定して解決しました。ほっ!
ひたすら頑張る
例)0時に更新するなら23:59などにスリープから復帰するように設定する
例)0時に以下を走らせる(コードは記事最後にGist貼っています)
- AtCoderのACを取得するコードがコマンドラインで走る(@togatogaさん記事参照)
- ローカルフォルダにAtCoderのコードが同期される
- GitHubにプッシュする
即座に反映ではなく少しタイムラグがあります。スマホなどでホーム画面にウィジェットを置いてウフフとしましょう!
![](https://cdn-ak.f.st-hatena.com/images/fotolife/m/mountkoara/20210412/20210412150647.jpg)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/m/mountkoara/20210412/20210412150647.jpg)
コードはこちら
![](https://github.githubassets.com/assets/gist-og-image-54fd7dc0713e.png)
![](https://github.githubassets.com/assets/gist-og-image-54fd7dc0713e.png)
参考にした記事と私のGitHubレポジトリ
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9QXRDb2RlciVFMyU4MSVBRSVFNiU4RiU5MCVFNSU4NyVCQSVFMyU4MiU5MiVFNSU4RiU5NiVFNSVCRSU5NyVFMyU4MSU5NyVFMyU4MSVBNkdpdEh1YiVFMyU4MSVBRSVFOCU4QSU5RCVFMyU4MiU5MiVFNyU5NCU5RiVFMyU4MiU4NCVFMyU4MSU5OSVFMyU4MiVCMyVFMyU4MyU5RSVFMyU4MyVCMyVFMyU4MyU4OSVFMyU4MyVBOSVFMyU4MiVBNCVFMyU4MyVCMyVFMyU4MyU4NCVFMyU4MyVCQyVFMyU4MyVBQiVFMyU4MiU5MiVFNCVCRCU5QyVFMyU4MSVBMyVFMyU4MSU5RiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9MjU2ZDhjYjg1MWY1MWE2NTVlNmY3MGRkMzAzNjM1Zjc&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB0b2dhdG9nYSZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MGFiYzI3NWZiYzZlOTE0NDZkNTRiMzY0MGNhOGM3ODk&blend-x=142&blend-y=486&blend-mode=normal&s=f2b4cfed91875259e92b55b0bf5cfd75)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9QXRDb2RlciVFMyU4MSVBRSVFNiU4RiU5MCVFNSU4NyVCQSVFMyU4MiU5MiVFNSU4RiU5NiVFNSVCRSU5NyVFMyU4MSU5NyVFMyU4MSVBNkdpdEh1YiVFMyU4MSVBRSVFOCU4QSU5RCVFMyU4MiU5MiVFNyU5NCU5RiVFMyU4MiU4NCVFMyU4MSU5OSVFMyU4MiVCMyVFMyU4MyU5RSVFMyU4MyVCMyVFMyU4MyU4OSVFMyU4MyVBOSVFMyU4MiVBNCVFMyU4MyVCMyVFMyU4MyU4NCVFMyU4MyVCQyVFMyU4MyVBQiVFMyU4MiU5MiVFNCVCRCU5QyVFMyU4MSVBMyVFMyU4MSU5RiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9MjU2ZDhjYjg1MWY1MWE2NTVlNmY3MGRkMzAzNjM1Zjc&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB0b2dhdG9nYSZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MGFiYzI3NWZiYzZlOTE0NDZkNTRiMzY0MGNhOGM3ODk&blend-x=142&blend-y=486&blend-mode=normal&s=f2b4cfed91875259e92b55b0bf5cfd75)