particles.jsを使って幾何学模様のアニメーションをつける

# 概要
「**背景が動くオシャレなアニメーションをつけたい！**」
ということで**particles.js**というライブラリを使って実装してみた。
![particlesjs.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328602/f456008a-61a0-c3ae-32b0-2935d5ca7604.gif)
サンプルはこのような感じ。
幾何学模様の他にも、雪を降らせたり、図形を動かしたり、カスタマイズは豊富にできる。
# 公式サイト
https://vincentgarreau.com/particles.js/

# 実装
1, **HTMLにidを振る**
`<div id="particles-js"></div>`
2, **particles.jsのライブラリを読み込む**
* jsフォルダーの中にparticles.js用のファイルを作りそのファイルに下記URLのコードを貼り付ける。
https://cdn.jsdelivr.net/npm/particles.js@2.0.0/particles.min.js
* ↑で作ったファイルを読み込む
`<script src="作ったファイルのパス"></script>`
3, **jsフォルダーの中にapp.jsファイルを作る**
app.jsファイルに下記コードを貼り付ける
```app.js
particlesJS.load('particles-js', 'assets/particles.json', function() {
  console.log('callback - particles.js config loaded');
});
```
4, **jsonファイルを用意する**
jsフォルダーの中にjsonファイルを作りそのjsonファイルに下記コードを貼り付ける
```json
{
  "particles": {
    "number": {
      "value": 80,
      "density": {
        "enable": true,
        "value_area": 800
      }
    },
    "color": {
      "value": "#ffffff"
    },
    "shape": {
      "type": "circle",
      "stroke": {
        "width": 0,
        "color": "#000000"
      },
      "polygon": {
        "nb_sides": 5
      },
      "image": {
        "src": "img/github.svg",
        "width": 100,
        "height": 100
      }
    },
    "opacity": {
      "value": 0.5,
      "random": false,
      "anim": {
        "enable": false,
        "speed": 1,
        "opacity_min": 0.1,
        "sync": false
      }
    },
    "size": {
      "value": 10,
      "random": true,
      "anim": {
        "enable": false,
        "speed": 80,
        "size_min": 0.1,
        "sync": false
      }
    },
    "line_linked": {
      "enable": true,
      "distance": 300,
      "color": "#ffffff",
      "opacity": 0.4,
      "width": 2
    },
    "move": {
      "enable": true,
      "speed": 12,
      "direction": "none",
      "random": false,
      "straight": false,
      "out_mode": "out",
      "bounce": false,
      "attract": {
        "enable": false,
        "rotateX": 600,
        "rotateY": 1200
      }
    }
  },
  "interactivity": {
    "detect_on": "canvas",
    "events": {
      "onhover": {
        "enable": false,
        "mode": "repulse"
      },
      "onclick": {
        "enable": true,
        "mode": "push"
      },
      "resize": true
    },
    "modes": {
      "grab": {
        "distance": 800,
        "line_linked": {
          "opacity": 1
        }
      },
      "bubble": {
        "distance": 800,
        "size": 80,
        "duration": 2,
        "opacity": 0.8,
        "speed": 3
      },
      "repulse": {
        "distance": 400,
        "duration": 0.4
      },
      "push": {
        "particles_nb": 4
      },
      "remove": {
        "particles_nb": 2
      }
    }
  },
  "retina_detect": true
}
```
↑のjsonファイルの値を変更してカスタマイズ可能。
[公式サイト](https://vincentgarreau.com/particles.js/)にて様々なカスタマイズや、雪や図形アニメーションのテンプレートもあるので参考に。
# 注意点
jsはものによって、サーバー環境を用意してそこで実行しないと動かないことがしばしあるようです。
私もローカル環境では動かなかったのでサーバーを用意しました。
# まとめ 
アニメーションはゼロイチで作ると複雑で大変なので今回のparticles.jsのように偉大な先人が作ったライブラリを使うと簡単に実装できました。
カスタマイズも簡単で何より使っていて楽しかったです！
いずれは、ゼロイチでアニメーションが作れたらもっと楽しいんじゃないかとワクワクしたのでこれからも勉強に励みたいと思いますﾍ(･_･ﾍ)