GitHubのプロフィールを充実させてみよう♪

## はじめに
こんにちは！

<font color="red"> **DMM WEBCAMP Advent Calendar 2023** :christmas_tree:</font> 最後の**25日目**も去年に引き続き @Keichan_15 が担当させて頂きます！よろしくお願い致します！

今年は初の **メンター × 卒業生のコラボ企画** ということで、1つの素晴らしいカレンダーを作り上げることができました！:calendar_spiral:
記事執筆にご協力頂いた皆さん！本当にありがとうございました！:bow:

■今までの記事はこちらからどうぞ！

https://qiita.com/advent-calendar/2023/infratop

さて、そんなAdvent Calendarもいよいよ最終日を迎えることになりました。

25日目のお題は…、

**【GitHubのプロフィールをアレンジして、多くの人に自分を知ってもらおう！** :mortar_board:】

といった内容になります！

自身も個人開発や勉強のアウトプットの一環でGitHubを頻繁に使用するのですが、多くの人が訪れるGitHubのプロフィール、華やかにアレンジしてみたくないですか？？:sunglasses:

ちなみに僕のGitHubのプロフィールはこんな感じです！

https://github.com/Keichan15

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/e1f58b4c-d315-a364-44c3-399f341933cf.png)

![Animation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/6c5168fc-ca5f-6b18-4f28-8900609d0c45.gif)

特にこのグラフみたいなの、格好良くないですか？？:relaxed:

GitHubではこのようにひと手間加えることでプロフィールを充実させることができちゃいます！:sparkles:

今回はこちらを紹介していきたいと思います！早速やっていきましょう～～！

## そもそもどうやって作るんだい？
まず、先に紹介したグラフや自己紹介文などはどのようにして作成するのでしょうか。

これは[GitHub Docs](https://docs.github.com/ja/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme)にて紹介されているのですが、端的に言うと **「GitHubのユーザー名と同じ名前のリポジトリを作成し、リポジトリの直下にREADME.mdというファイルを置く」** ことで実現可能です！

https://docs.github.com/ja/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme

ただ一部条件があって、以下の条件に該当する場合でないと正しく表示されません。

- **GitHubのユーザー名と同じリポジトリを作成**していること
- リポジトリが**公開リポジトリ**であること
- **リポジトリのルート**に **README.md という名前のファイルが配置されている**こと
- **README.md内にグラフ表示等の任意コンテンツが含まれている**こと

基本的に初めて作成する分には問題無いと思って頂いて大丈夫かな～と思います！:ok_woman:

## 早速READMEを作ってみる
まずは自分の名前で公開リポジトリを作成します(もう僕は作っちゃってるのでエラー出てますが…)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/ee2c1a4a-095d-47f6-74d0-6bab871ede99.png)

可愛いネコちゃんが表示されて、`ユーザーID/リポジトリ名 is a special repository ~~`みたいな表記が出ていればOKです。:cat:

ついでに`Add a README file`にチェックを入れて、リポジトリ作成と同時に`README.md`も生成させるようにしておきましょう！

準備はたったこれだけ！簡単でしょ？:v:

## プロフィールを充実させていく 難易度★☆☆

まずは簡単なものから表示させてみましょう！

実際の表示は以下のようになります！

### ★実装結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/bc573b46-8415-9017-82f0-7206d71ba39b.png)

以下にコードと利用したリポジトリを掲載しておきます。

**コード内の `Keichan15` の部分は適宜ご自身のモノに置き換えてくださいね！**
(変えないと僕のデータがそのまま表示されますよ！)

- Profileへのアクセス数合計の表示

https://github.com/antonkomarev/github-profile-views-counter

- Qiita 投稿数やコントリビューション数の表示

https://qiita-badge.apiapi.app/

- Zenn 記事数の表示

https://badgen.org/



```md:README.md
<p align="left">
  <a href="https://github.com/Keichan15">
    <img height="20" src="https://komarev.com/ghpvc/?username=Keichan15" />
  </a>
  <a href="https://github.com/Keichan15">
    <img height="20" src="https://img.shields.io/github/followers/Keichan15?label=follow&logo=github&style=flat" />
  </a>
  <a href="http://qiita.com/Keichan_15">
    <img height="20" src="https://qiita-badge.apiapi.app/s/Keichan_15/posts.svg" />
  </a>
  <a href="http://qiita.com/Keichan_15">
    <img height="20" src="https://qiita-badge.apiapi.app/s/Keichan_15/contributions.svg" />
  </a>
  <a href="https://zenn.dev/keichan_15">
    <img height="20" src="https://badgen.org/img/zenn/keichan_15/articles?style=plastic" />
  </a>
</p>
```

特にQiitaやZennのバッジを使用するのであれば、技術記事を投稿しなければなりませんね。
そう思うと日々学んだことのアウトプットにも益々拍車がかかるんじゃないでしょうか？:relaxed:

個人的にはガンガンアウトプットすることで知識って深く定着していくものだと思っていますし、人に見てもらうことを意識した文章を書く力って、書いてみないと養えない所があるよな～と思っている人間です。

:speaking_head: …(意外とハマるもんですヨ！)

表示が出来たら、次はもう少し内容を追加してみましょう！

## プロフィールを充実させていく 難易度★★☆
次はステータスやグラフ、トロフィーを表示させてみましょう！:robot:

実際の表示は以下のようになります！

### ★実装結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/a438b173-b914-0722-7eaf-5ac4005d5321.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/118f46a3-21c0-f389-905c-ae8262bc468d.png)


- 自身のステータス・グラフ等をカード表示する

https://github.com/vn7n24fzkq/github-profile-summary-cards

- トロフィーを表示する

https://github.com/ryo-ma/github-profile-trophy

```md:README.md
## Stats
![](http://github-profile-summary-cards.vercel.app/api/cards/profile-details?username=Keichan15&theme=gruvbox)
![](http://github-profile-summary-cards.vercel.app/api/cards/repos-per-language?username=Keichan15&theme=gruvbox)
![](http://github-profile-summary-cards.vercel.app/api/cards/most-commit-language?username=Keichan15&theme=gruvbox)
![](http://github-profile-summary-cards.vercel.app/api/cards/stats?username=Keichan15&theme=gruvbox)
![](http://github-profile-summary-cards.vercel.app/api/cards/productive-time?username=Keichan15&theme=gruvbox&utcOffset=9)

## Trophy
![trophy](https://github-profile-trophy.vercel.app/?username=Keichan15&theme=gruvbox)
```

これでだいぶプロフィールが充実してきましたね！:raised_hands:

最後は個人的に凄い面白いな～と思った機能を追加する方法をご紹介します！

## プロフィールを充実させていく 難易度★★★

最後は草を食べるヘビちゃんを実装します！:snake:

実際の表示は以下のようになります！

### ★実装結果

![Animation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/86be4636-5fee-4362-ef19-6be7a052d150.gif)

- ~~これ、興味本位でやり始めて3時間掛かりました~~
- ~~READMEを10回吹っ飛ばしました~~
- ~~GitHub Actionsのymlはちゃんと調べて書こうな！~~

二の舞は踏ませないのでご安心ください！

- コントリビューション(草)をヘビが食べるgifを表示する

https://github.com/Platane/snk

こちらを実装するためには**GitHub Actions**を使用する必要があります。

実装量が多いので、段階を分けて紹介していきます！

### ① Personal Access Tokenの発行
まず事前準備としてPersonal Access Tokenを発行します。

`Settings > Developer Settings > Personal access tokens > Tokens (classic)` をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/16e012d9-2b59-f5cf-957e-b1799824f880.png)

`Generate new tokens > Generate new token (classic)`をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/eeea27d2-34f2-140b-f043-8f7d0de81c13.png)

それぞれ入力内容を以下のように設定します。

- `Note`: **generate-snake-token**
- `Expiration`: **No expiration**

`Select scopes`は以下のように設定しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/b9023673-fbf2-0ffe-e6af-f7702db7cb46.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/1dfd26f7-7f48-10d4-bb0f-5c5cd37aedbf.png)

`Generate Token`をクリックし、発行されたTokenをコピーしておきます。

![スクリーンショット 2023-11-21 235400.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/ab5b5abf-eb9b-be9a-6ae6-7f1b10b1f618.png)

### ② リポジトリにPersonal Access Tokenを追加
次に先ほど取得したTokenをリポジトリに追加します。

リポジトリ内の`Settings > Secrets and variables > Actions`をクリックします。

以下の画面が表示されると思います。
(`SAMPLE_SECRETS`が元々入っているのは見なかったことにしてください…)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/148e1446-c704-edd3-ec82-10d10cbebd72.png)

`New repository secret`をクリックし、以下の情報を入力します。

- `Name`: **SAMPLE_SECRETS**
- `Secret`: **先ほどコピーしたToken**

上記を入力後、作成が出来ていれば問題ありません！

### ③ ディレクトリ作成
自身のユーザー名のリポジトリ直下に`.github/workflows`ディレクトリを作成し、その中に`GenerateContributionSnake.yml`を作成します。

ディレクトリ構成はこんな感じ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/3314e7ee-0ab2-0d6f-a467-74911324e225.png)

### ④ GenerateContributionSnake.ymlの編集

次に`GenerateContributionSnake.yml`を編集します。

```yaml:GenerateContributionSnake.yml
name: generate animation

on:
  # run automatically every 24 hours
  schedule:
    - cron: "0 */24 * * *" 
  
  # allows to manually run the job at any time
  workflow_dispatch:
  
  # run on every push on the master branch
  push:
    branches:
    - main
    
  

jobs:
  generate:
    permissions: 
      contents: write
    runs-on: ubuntu-latest
    timeout-minutes: 5
    
    steps:
      # generates a snake game from a github user (<github_user_name>) contributions graph, output a svg animation at <svg_out_path>
      - name: generate github-contribution-grid-snake.svg
        uses: Platane/snk/svg-only@v3
        with:
          github_user_name: ${{ github.repository_owner }}
          outputs: |
            dist/github-contribution-grid-snake.svg
            dist/github-contribution-grid-snake-dark.svg?palette=github-dark
        env:
          GITHUB_TOKEN: ${{ secrets.SAMPLE_SECRETS }}
          
          
      # push the content of <build_dir> to a branch
      # the content will be available at https://raw.githubusercontent.com/<github_user>/<repository>/<target_branch>/<file> , or as github page
      - name: push github-contribution-grid-snake.svg to the output branch
        uses: crazy-max/ghaction-github-pages@v3.1.0
        with:
          target_branch: output
          build_dir: dist
        env:
          GITHUB_TOKEN: ${{ secrets.SAMPLE_SECRETS }}
```

### ⑤ GitHub Actionsのworkflowが問題無く走るか確認
`Actions`をクリックします。

特に操作を行わずとも自動でworkflowが実行されます。
緑色のチェックが付いていれば成功です！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/f1ca4654-9490-61ad-684a-38b7fc9e8adf.png)

### ⑥ ヘビちゃんを表示させる
準備が全て終わったら、`README.md`にヘビちゃんを表示させる記述を追加していきます！

ユーザー名・リポジトリ名の箇所は適宜ご自身のモノに変更してください！

```md:README.md
![](https://raw.githubusercontent.com/ユーザー名/リポジトリ名/output/github-contribution-grid-snake.svg)
```

以下のように問題無く表示されていれば完成です！

![Animation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2798073/cf77d1ee-ed45-0410-fd98-a98391a2950d.gif)

これであなたもREADME マスター！:star:

## 参考

https://docs.github.com/ja/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme

https://zenn.dev/yutakatay/articles/kirakira-github-profile

## おわりに
いかがでしたでしょうか。

今回はGitHubのREADMEのアレンジ方法についてご紹介しました。

GitHubのプロフィールは最初に目に入るページなので、少しでもインパクトのある内容を記載することで自身のアピールにも繋がると思います！:ok_hand:

今回紹介できなかったものもたくさんありますので、是非気になった方は調べてみるのもおススメします！

今年も25日目を担当させて頂き、本当にありがとうございました！:bow:
今年も残り少なくなりましたが、良い1年をお過ごしくださいね！:thumbsup:

**:santa:Merry Christmas♪:christmas_tree:**