Party Parrot OSS活動への参加方法

Party Parrotの起源に関して書いた[前記事](https://qiita.com/ayatothos/items/0c3da3d48fe8ade705e6)が好評だったため、Party Parrotに更に興味が湧きました。
そこで思い立ったが吉日。自分でParty Parrotのgif画像を作って公開してみました。

Qiita記事にするために無理やりOSS活動への参加ってことにこじつけています。

# Party Parrotとは

slack等でよく見かける七色に光るオウムのgif画像です。
ファーストビューから目にうるさくなっちゃうのでここでの掲載は割愛します。

詳しくは[こちらの記事](https://qiita.com/ayatothos/items/0c3da3d48fe8ade705e6)をご参照ください。

Party Parrotのgif画像は[Cult of the Party Parrot](https://cultofthepartyparrot.com/)という公式？のファンサイトで取りまとめられており、[GitHubリポジトリ](https://github.com/jmhobbs/cultofthepartyparrot.com)から取得することも可能です。

# OSS活動とは

OSSは[Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)によると下記のように定義されるらしいです。
> オープンソースソフトウェアは、ソフトウェアのソースコードが一般に公開され、商用および非商用の目的を問わずソースコードの利用・修正・再頒布が可能なソフトウェアと定義される[1]。オープンソースライセンスが課せられたソフトウェアやパブリックドメインに置かれたソースコードとそのソフトウェアなどがそれに当たる。

OSS活動とは、このOSSの開発、発展にContribute(貢献)する活動を指します。

上記でParty ParrotのGitHubリポジトリがあることを説明しましたが、実はそこにはContributeする方法が記載されています。
その方法を取ることで、既に多くの人が利用しているParty Parrotの絵文字グループの中に、自分の作ったgif画像を取り込んで貰うことができるのです。

# Contribute 方法

https://github.com/jmhobbs/cultofthepartyparrot.com にアクセスするとREADMEに下記の様に記載があります。

 1. Add your parrot gif to `parrots/` and append an entry to `parrots.json`  
 1. Make sure your parrot gif file is named [name]parrot.gif in all lower case e.g. `exampleparrot.gif`
 1. Open a PR
 1. PARTY

流石に和訳の必要はないですよね。

# 方針

gif画像は大きく2種類のサイズ作成されているようでした。
`parrots/`ディレクトリの小さめのgif画像。解像度は35x25ほど。 画像サイズは2.0KBほど。
`parrots/hd/`ディレクトリの大きめのgif画像。解像度は128x128ほど。 画像サイズは10KBほど。

どちらのサイズで作成するのか特にルールが無さそうだったので、せっかくなので大きい128x128のgif画像を作ることにしました。

# 実践

## 1. Fork

https://github.com/jmhobbs/cultofthepartyparrot.com にアクセスし、右上のForkボタンを押します。

<img width="1437" alt="スクリーンショット 2020-01-07 21.44.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/5425689a-9ccf-800b-aad2-d1fdcdd10561.png">

すると、自分のGitHubアカウントにリポジトリを作成（コピー）することができます。

<img width="1437" alt="スクリーンショット 2020-01-07 21.45.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/7ad7d808-61d0-dfa5-fc74-5dfa3c67dc5d.png">

`ayatothos/cultofthepartyparrot.com`と記載されており、自分のアカウントに紐付いていることが分かります。(ayatothosは私のアカウント名)

## 2. gif画像作成 & parrots.json加筆

gif画像を作成していきます。

先程作ったリポジトリをまずはローカル環境にCloneします

```shell
git clone git@github.com:ayatothos/cultofthepartyparrot.com.git
```

128x128のgif画像を作るので、同じ`parrot/hd/`ディレクトリにある画像(`parrots/hd/parrot.gif`)を元画像として利用することにしました。
![parrot.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/0c9e44cd-97a2-1eaf-3f42-28e82c4bea99.gif)

今回はなんとなくこの頭の動きが活用できそうだったのでサッカーボールをヘディングしている画像を作ってみました。
ちなみに、画像はMac標準のプレビューを使って別に作った素材画像を1フレームずつペタペタ貼って作りました。（10フレーム）
<img width="1102" alt="スクリーンショット 2020-01-08 23.55.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/e461f3b5-2d88-1323-c81a-6b5d9c416ff0.png">

ちなみに、この方法だとループ設定が外れてしまい、全フレーム表示後に動かなくなってしまいます。
![headingparrot_not_loop.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/b8335353-8bf4-4e03-1244-5af33c4a18a7.gif)

そのため、下記サービスを使っでループ設定を入れ直しました。
https://ezgif.com/loop-count

できたのがこちらです。
![headingparrot.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/9c786fd7-c2c7-005e-cb7d-c66ed1aac174.gif)

そもそもPhotoshopとか利用できる方は、そちらを利用してgif画像生成をしたほうが良いと思います。

作成した画像を`parrots/hd/headingparrot.gif`に配置し、さらにREADMEに記載されていたように、`parrots.json`に項目を追加します。

```json
  },
  {
    "hd": "hd/headingparrot.gif",
    "name": "Heading Parrot"
  }
]
```

## 3. Commit＆Push

作成した画像と加筆した`parrots.json`をCommitし、自分のリモートリポジトリにPushします。

```shell
git add .
git commit -m'Added Heading Parrot'
git push origin master
```

## 4. Pull Request

PushしたCommitをFork元の`jmhobbs/cultofthepartyparrot.com`リポジトリにマージしてもらうため、Pull Requestを作成します。

<img width="1437" alt="スクリーンショット 2020-01-07 23.12.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/cbe67f67-7256-82b8-1875-d77869301416.png">

画面の中央付近に`This branch is 1 commit ahead of jmhobbs:master.`と記載があります。上記のCommitによってFork元との間に差分ができたことを示しています。
この右側にある`Pull Request`をクリックするとPull Request作成画面が表示されます。

<img width="1437" alt="スクリーンショット 2020-01-07 23.12.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/ddcdfffe-8b25-da9a-afba-2501ecc5df78.png">

マージ元とマージ先を確認して`Create pull request`を押下します。

<img width="1437" alt="スクリーンショット 2020-01-07 23.17.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/7c911783-e12e-0c48-1428-144785627e62.png">

表示された画面でコメントを記述して更に`Create pull request`を押下するとPull Reqeuestが生成されて、`jmhobbs/cultofthepartyparrot.com`の管理ユーザに通知が飛びます。

## 5. レビューを待って、場合によっては直して

Pull Requestが作成された後はReviewerからの返答次第で直したりするのですが、今回はそのまま通ってMergeされたようです。（お世辞だろうけど「Genius!」とか言われるの嬉しいやん）
<img width="1437" alt="スクリーンショット 2020-01-08 8.54.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/7e19d5db-dc50-3853-9eb5-584426dce580.png">

無事サイトにも反映されていました。（一番下）
<img width="1437" alt="スクリーンショット 2020-01-08 8.54.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401312/cb66b47e-8de5-61e5-1d8b-72b29ccaf150.png">

# おわりに

「OSS活動にこじつけた」なんて言いましたけど、実際に自分の作ったものが大きな文化に取り込まれるってなんだか嬉しいですね。
:headingparrot: 良かったらslackに入れて使ってみてください。

また、興味があればみなさんも是非Contributeしてみてください！

「May the Parrot be with you」（パロットが共にあらんことを）