This request has already been treated.

  1. technote-space
Changes in body
Source | HTML | Preview
@@ -1,114 +1,114 @@
GitHub の芝生(Contribution Graph)に関する資料が意外と見当たらなかったので、自身の勉強も兼ねてまとめてみることにしました。
# 対象読者
- 「芝生」「草を生やす」の意味がわからない方(「入門」あたりを読んでください)
- 「リポジトリ」「ブランチ」など基本は知っていると仮定します(解説しません)
- 芝生に関する小ネタを読みたい方(知っているところは読み飛ばしてください)
# 芝生入門
## 芝生とは?草を生やすとは?
まず、GitHub には Contributions という「過去一年間でこれだけ活動したよ」を可視化する機能があります。
![contributions_graph](https://help.github.com/assets/images/help/profile/contributions_graph.png)
出典: [Viewing contributions on your profile - User Documentation](https://help.github.com/articles/viewing-contributions-on-your-profile/)
ここは毎日熱心に活動しているとキレイな緑色が並びます。その見た目が芝生みたいにカラフルだからか、日本では **芝生** と呼びます(正確な起源や由来はわかりません)。
この芝生に緑色を増やすには、Contribution(GitHub上での活動のうち芝生に反映される活動)を行う必要があります。この行為を **草を生やす** といいます。
## 草を生やすにはどうしたらいい?
では、GitHub 上で何をすれば草が生えるのでしょうか。詳細は GitHub のヘルプ [Viewing contributions on your profile - User Documentation](https://help.github.com/articles/viewing-contributions-on-your-profile/) に書いてありますが、ざっくり言うと、
- master ブランチあるいは gh-pages ブランチへのコミット
- Issue や Pull Request の新規
です。
## XX contributions in private repositories. って何?
芝生の緑色マスをクリックすると「その日はこんなリポジトリにn回コミットしたよ」的な情報が表示されますが、たまに「2 contributions in private repositories.」みたいな情報が表示されることがあります。
これは「詳細は伏せるけどプライベートリポジトリで2回ほど草生やしたよ」という意味です。プライベートなので詳細は何も公開したくない、でも芝生には反映したいという心理を汲み取ってくれる機能です。
この機能は、デフォルトでは無効になっています(つまり芝生にすら反映されません)。有効にするには設定が必要です。これもヘルプ [Publicizing or hiding your private contributions on your profile - User Documentation](https://help.github.com/articles/publicizing-or-hiding-your-private-contributions-on-your-profile/) に書いてありますが、簡単に書いておくと、
- 右上のアバターアイコン部分 → Settings → Contributions
の Include private contributions on my profile にチェックを入れることで有効になります。
# 芝生応用
入門はこのくらいにして、ここからは芝生に関するネタを雑多に取り上げます。
## 芝生が禿げる時
リポジトリを削除すると、そこに紐付いていた Contribution もなくなります。つまり **芝生が禿げます**。
(詳細は後述しますが)芝生アートを消したい場合は、このテクニックを使います。芝生アート用のリポジトリを作って、散々楽しんだらリポジトリ毎消してやることで元通りです。
## 黄色い芝生
芝生が黄色になる時があります。ハロウィンです。詳しくは Twitter で当時の状況を見てみてください。
- [github halloween lang:ja - Twitter検索](https://twitter.com/search?f=tweets&q=github%20halloween%20lang%3Aja&src=typd)
黄色だと草とは呼べませんね。何と呼びましょうか。落ち葉?
## 芝生アート
Ascii Art や Emoji Art があるように、芝生で絵を描く遊びもあったりします。正式な用語は知らない(たぶん無い)のですが、便宜上 **芝生アート** と書くことにします。
芝生アートを描くツールはいくつか存在します。
-- [gelstudios/gitfiti: abusing github commit history for the lulz]([https://github.com/gelstudios/gitfiti)
+- [gelstudios/gitfiti: abusing github commit history for the lulz](https://github.com/gelstudios/gitfiti)
- [taichi/gontributions: GitHub Contribution Graph Hack](https://github.com/taichi/gontributions)
- [jbranchaud/commitart: Modifying the commit history of git repositories in order to write messages in GitHub's contribution graph.](https://github.com/jbranchaud/commitart)
- [ben174/git-draw: Allows you to draw in your github heatmap](https://github.com/ben174/git-draw)
- 芝生に直接草を描いて、最後に Render ボタンを押すとその絵を反映するコマンドがエクスポートされるという Chrome 拡張
どうやって実現しているかですが、最後の git-draw を見た感じだと、過去の日付でコミットするみたいです。でも草の濃さはどうやって調整するんでしょう?……コードリーディングの題材としても面白いかもしれませんね。
ちなみに、GitHub への反映は即時ではないようです(?)。 gitfiti の README を引用すると、
> Wait... Seriously, you'll probably need to wait a day or two for the gitfiti to show in your commit graph.
とあります。
## 草を絶やさない方法
ズラリと草を敷き詰めた芝生に憧れるものですが、忙しかったりすると簡単に空いちゃいます。白マスがスカスカ表示されてると格好悪いです。
草を絶やさない方法は色々あると思いますが、たとえばこんな方法があります。
- [funnythingz/funnypush: to push every day to GitHub.](https://github.com/funnythingz/funnypush)
1回だけ Commit と Push を行うスクリプトを作っておいて、それをジョブスケジューラ(cronとか)で毎日流すようにする、というアイデアのようです。
## 芝生を画像化したい
PNG 画像で出力してくれるサービスがあります。
- [Grass-Graph / Imaging your GitHub Contributions Graph](https://grass-graph.moshimo.works/)
ちなみに [解説記事](http://blog.a-know.me/entry/2016/01/09/222210) と [ソース(GitHub)](https://github.com/a-know/grass-graph) もあります。
芝生が SVG で取得できることが肝のようです。その気になれば色々応用できそうですね。
## GitHub ガチ勢はどんな芝生を持っているのか
調べてみたら普通に見つかりました。
- [Most active GitHub users (by contributions). http://twitter.com/paulmillr](https://gist.github.com/paulmillr/2657075/)
Follower 636 人以上のユーザー限定(芝生で遊んでる勢がヒットしないよう弾いてる?)で Contributions 上位 256 位を算出した記事です。
1位は **11088 Contributions**。単純計算で **1日30Contributions** の年中無休です。(芝生遊び等でズルしてないのだとして)どんな生活をしたらそうなるんでしょうか。想像もつきません。
## そもそも芝生で遊ぶのって OK なん?
私も早速芝生で遊んでみようと思ったのですが、そもそも GitHub が許してくれているのかが不明です。改めて [Terms of Service](https://help.github.com/articles/github-terms-of-service/) に目を通してみました。
芝生遊びを直接的に禁じる文言は無さそうですが、間接的には [3. Conduct Restrictions](https://help.github.com/articles/github-terms-of-service/#3-conduct-restrictions) の
> use our servers for any form of excessive automated bulk activity (for example, spamming), or relay any other form of unsolicited advertising or solicitation through our servers, such as get-rich-quick schemes;
このあたりでしょうか。たとえば「Contributions の値をカンストさせたいので Commit と Push を行う処理を無限ループで回して放置しとく」「何ならマルチスレッドやら複数起動やらでブーストさせる」行為は該当しそうですね。
また [G. API Terms](https://help.github.com/articles/github-terms-of-service/#g-api-terms) にて API の Abuse と Overuse も禁止しているので、API を使いまくって芝生をいじるのもダメでしょう。
ちなみに芝生アートについては、(上述したものは)Push は一回だけで済むため問題は無いと思います。
# おわりに
芝生ネタを取り上げてみました。色々遊んでみたくなりますね。