Vueでお手軽にGithubの芝をWebアプリに実装できるツールがあったので紹介する

# 初めに
今回は自分が開発に参加したプロジェクトのメンバーに教えていただいたツールの中で、手軽に扱えるかつ高性能なツールがあったので、この記事ではそのツールの紹介をしていきます！

# 詳解するツールについて
今回紹介するツールは、**vue-calendar-heatmap**です。

https://github.com/julienr114/vue-calendar-heatmap

このツールはGithubのContributionに似たグラフをSVG形式で描画してくれます。このツールはグラフをただ描画してくれるだけではなく、使用者がいくらかカスタムできるようになっています。ということで、次は実際にこのツールを使いながらこのツールの機能を見ていきます。

# 使ってみる
実行環境（この項目ではすでに以下の開発環境が構築していることを前提に進めていきます。）

|開発ツール|バージョン|
|:--|:--|
|Vue|2.6.14|
|npm|7.5.4|

※install及び使用までの手順については[**vue-calendar-heatmap**のリポジトリ](https://github.com/julienr114/vue-calendar-heatmap#installation)に詳細に書かれているので、ここでは取り上げません。

## 基本的な使い方
カウント数をグラフに表示させたい場合、基本的に以下のような記述となります。

```js
<calendar-heatmap :values="[{ date: '日付', count: カウント数 }, ...]" end-date="グラフに表示させたい最後の日付"/>
```

そしてもし今日まで(この記事の作成日は`2022/02/18`)の活動についてのグラフを作成し、`2021/09/22`のカウント数を`3`とし、`2022/01/11`のカウント数を`6`とした場合、このような記述となります。

```js
<calendar-heatmap :values="[{ date: '2021-9-22', count: 3 },{date: '2022-1-11', count: 6}]" :end-date="Date()"></calendar-heatmap>
```

このスクリプトを実行した結果はこちら
![VueCalendar.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478883/1da11a34-4564-10af-a274-c2b5af1120b7.png)
グラフ内のそれぞれの日付の四角の色がカウントによって変化するほかにその四角にカーソルを合わせると、その日の日付とカウント数が表示されることがわかります。まさにGithubの芝ですね！
このツールのしようにあたっての注意点は**end-dateから一年間までしかさかのぼって表示できない**という点です。一年以上さかのぼってグラフを表示させたい場合はグラフを二つ作成するなど工夫が必要です。

## グラフのカスタマイズ
### カウントに応じたグラフ内の四角の色を変える
`:range-color`属性を加えることでカウントに応じたグラフ内の四角の色を変えることができます。以下の記述をした場合、四角の色は以下の画像のように黄色に変わります。

```js
<calendar-heatmap 
:values="[{ date: '2021-9-22', count: 3 }, {date: '2022-1-11', count: 6}]" 
:end-date="Date()" 
:range-color="[                                                                                                                     '#ebedf0',
  'rgba(255,202,43,0.4)',
  'rgba(255,202,43,0.6)',
  'rgba(255,202,43,0.8)',
  'rgba(255,202,43,1.0)',
]"></calendar-heatmap>
```
![VueCalendarYellow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478883/39ae8ad2-8e6f-de00-6632-8650f1123e86.png)

### 色の変化の段階を変える
通常のカウントに応じたグラフ内の四角の色の変化の段階は5段階です。しかし`max`属性を変化させることで、その変化の段階を変化させることが可能です。例えば`:max="10"`とした場合、色の変化は下の画像のようになります。

```vue
<calendar-heatmap :values="[{ date: '2021-9-22', count: 3 }, {date: '2022-1-11', count: 6}]" :end-date="Date()" :max="10"></calendar-heatmap>
```
![VueCalendar10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478883/afa6dec1-4f76-1af2-a30e-1c7ceb274a5c.png)

### カーソルのホバー時に何も表示させなくする
`tooltip`属性を`false`にすることでグラフ内の四角にカーソルを合わせても何も表示されなくなります。

```vue
<calendar-heatmap :values="[]" :end-date="Date()" :tooltip="false"></calendar-heatmap>
```

### 表示されるカウント数の単位を変更する
`tooltip-unit`属性を指定することで、四角にカーソルを合わせた際に表示される単位の表示内容が変更できます。

```vue
<calendar-heatmap :values="[{ date: '2021-9-22', count: 3 }, {date: '2022-1-11', count: 6}]" :end-date="Date()" tooltip-unit="こんとりびゅーと"></calendar-heatmap>
```

![VueCalendarToolTip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478883/1a6756e3-1077-0eee-354d-95dffbc628b9.png)

### グラフの表示の向きを変える
`vertical`属性を`true`にすることでグラフの表示の向きを変更できます。

```vue
<calendar-heatmap :values="[{ date: '2021-9-22', count: 3 }, {date: '2022-1-11', count: 6}]" :end-date="Date()" :vertical="true"></calendar-heatmap>
```

![VueCalendarVertical.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478883/3b226e41-eee6-a772-cfaf-2ecbe8b5a7b6.png)


# 終わりに
今回紹介したツールの更新は最新で2年前となっているので、Vue３でも同じように使用できるかはわかりません。ただ、このツールはデータを入れるだけでGithubのContributionとほぼ同じクオリティーのグラフを作成できるものとなっていますので、Vueに触れたことのある方はぜひ使ってみてください～。