【PicGIF】QiitaにアニメーションGIFをアップロードする

## はじめに
Qiitaに動画をアップしようと思ったときに、ググると下記の記事がまず最初にヒットするのではないかと思います。

https://qiita.com/shizen-shin/items/5fb258da165235722e4c

私も記事を見て、PicGIFを使用してアニメーションGIFを作成し記事に貼り付けるようになりました。  
ただ、動画の内容（特にアニメーション多めなもの）や長さによっては、ちゃんと設定しないとアニメーションが思ってたのと違う感じのGIFができてしまうので注意が必要です。

今回は、ある程度自分の意図したアニメーションGIFが書き出しできるよう、設定方法について解説をします。
## 素材
以前題材にした[【Python】Seleniumでやさしい神経衰弱ゲームを最速攻略する🎮](https://qiita.com/goqsystem_nagaoka/items/1d1ca3f4d7dd60b12c42)の攻略画面を素材にします。（アニメーション多め 3.73秒の動画）
![result.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/057a8f04-b411-5646-7d38-18aa2a45502e.gif)
（最終的には上記のような感じになることを期待）

## フレーム設定
最初に設定するフレーム設定が重要です。

デフォルトでは「ノーマル」が選択されており、フレーム・カウントは「24」が設定されています。 
![スクリーンショット 2023-05-25 22.41.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/408b8382-ee44-2554-8fad-274fa2f35ca1.png)
 
この状態で動画を読み込んでしまうと、よくない結果になってしまうため（理由は後述）、ここは「自動」を選択します。  
![スクリーンショット 2023-05-26 22.01.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/b0bbbf70-f76a-f77a-0ab7-02691a53f062.png)
「自動」を選択すると、1秒あたり何フレームにするかの設定にできます。

動画を少しでもかじったことがある人ならわかると思いますが、通常、動画は30fps（30フレーム/1秒）です。  
アニメーションGIFにするのであれば個人的な感覚としては、大体10fps〜15fpsとかにするのがよいかなと思います。

なので、今回は15フレーム/秒で読み込みます。
## 速度設定
動画を読み込んだ後に設定するべきところは速度設定です。

![スクリーンショット 2023-05-31 7.43.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/2a479a61-b28b-d24f-07e4-d775d7290157.png)![スクリーンショット 2023-05-31 7.43.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/ded2bbd4-2423-b3c2-6608-5282ddc43f27.png)
デフォルトでは「ノーマル」が選択されていますが、設定がイマイチよくわからないので、「自動」を選択するのがよいです。
そして「フレーム数」の値には、最初にフレーム設定で設定した値（今回であれば15）を設定すると、元の動画とほぼ同じ再生時間に調整可能です。

**フレーム数：15フレームでの出力結果**
![スクリーンショット 2023-05-31 6.29.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/5f6b5d5b-e2f6-0a35-d356-baea9eb5f959.png)

**フレーム数：10フレームでの出力結果**
![スクリーンショット 2023-05-31 6.29.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/8c452c0b-dbf6-5250-0b3a-b470cabbb032.png)

これで書き出しを行えば、下記の様なアニメーションGIFが生成されます。
![result.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/057a8f04-b411-5646-7d38-18aa2a45502e.gif)

## 結論
下記の設定をしておけば、簡単に思った通りのアニメーションGIFが生成できる。
1. フレーム設定は「自動」を選択して、任意の値を設定をする
2. 速度設定は「自動」を選択して、1.で設定した値を設定する

## 脱線
以前、[アニメーションについての記事](https://qiita.com/goqsystem_nagaoka/items/3daf12dfa5b9c8866465)を書いたとき、アニメーションGIFを使いすぎたせいか記事のプレビューがやたら遅いことがあったことを思い出したので、ついでにQiitaのファイル上限などを調べてみました。  
すると、下記の様に1回のアップロードは10MB・月合計100MBという縛りを見つけたので、PicGIFの出力されるファイルサイズも気にして調整したほうがよさそうですね。

https://help.qiita.com/ja/articles/qiita-image-upload

## 余談
先述した**フレーム設定が「ノーマル」でフレーム・カウント「24」で読み込んでしまうと、よくない結果になる**話です。  
余談なので、気になる方だけ読んでいただければ大丈夫です。

フレーム設定「ノーマル」で動画を読み込むと、動画内から設定した値（今回の場合24フレーム）をピックアップしてきます。

![スクリーンショット 2023-05-25 22.47.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/5d14baee-9d82-6379-e7c2-c7e838479f79.png)
（24コマ分しかデータがない）

![24f.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/1d5906fe-775a-5050-791c-c5720188a2b1.gif)
（このまま出力した結果。15fpsと比較すると、だいぶ端折られているのがわかると思います。）

上記でも書いた通り、動画は30fps（30フレーム/1秒）なので、3.73秒の動画だと約112フレームで1つの動画は構成されていることになります。  
今回だと24フレーム/3.73秒なので、約6.5fps（6.5フレーム/1秒）くらいのフレームレートになっています。  
これだと動画が長ければ長いほど、値を変更しない限り、低fpsになりカクついたアニメーションになってしまいます。この「ノーマル」の設定で自分の思ったfpsにするためには、いちいち計算が面倒だったりするので、「自動」で設定するのが望ましいという話でした。

## 最後に
### GoQSystemでは一緒に働いてくれる仲間を募集中です！
ご興味がある方は以下リンクよりご確認ください。

https://goqsystem.recruit.site/?qiita=94038be84c6e9ab5bc1f