GithubでのアクティビティをMastodonへとTootする

#はじめに

本記事は、IFTTTを使用してGitHubの特定リポジトリでのアクティビティ(issueやcommitなど)をMastodonへとTootする方法をまとめたものです。

事の発端は、「GitHubでの commit や issue を Mastodon へ Tootできないか？」という単なる好奇心でした。

基本的には、以下の通りにすることで Mastodon へと Toot することができるようになります。

- ⑴ IFTTT で Maker WebHooks を有効化。key と url をメモ

- ⑵ Mastodonインスタンスのアクセストークンを取得

- ⑶ IFTTT で取得したアクセストークンを使い、Tootできる環境を構築

- ⑷ アクティビティを Toot したいリポジトリにWebHook を設定 

あと、僕は今回初めて WebHooks を弄りました。ですので、間違っているところなどありましたらご指摘いただけますと幸いです。

#実際の手順
## 必要なもの
- IFTTT アカウント
- Mastodon アカウント
- GitHub アカウント

上記の三つが必要になります。

## IFTTT での Maker WebHooks の有効化

まず、https://ifttt.com/maker_webhooks にアクセスして
Maker WebHooks を有効化します。

![toot1.png](https://qiita-image-store.s3.amazonaws.com/0/191521/283c29b6-8565-bf01-1dfa-6919f30d9fd0.png)


画面の Connect を押すと有効化されます。

![toot2.png](https://qiita-image-store.s3.amazonaws.com/0/191521/69c040e4-fc8d-2ed9-b9e1-32d9bfbccec7.png)

その後、documentation を押すと発行されたアクセスキーとURLが表示されます。
此方をメモしておいてください。
ちなみに、黒塗りの部分になります。

一旦、これで IFTTT での作業は終了です。

## Masotodonインスタンスへのアクセストークン取得

次に、Mastodonインスタンスのユーザー設定を開きます。

![toot3.png](https://qiita-image-store.s3.amazonaws.com/0/191521/f6e07544-6f06-24de-8b46-f38a47c7353e.png)


その中に、「開発」という項目がありますので、そこをクリックしてください。

![toot4.png](https://qiita-image-store.s3.amazonaws.com/0/191521/db167142-49ae-1460-722c-f83c37e267d1.png)


すると以下の画面に切り替わりますので、新規アプリというボタンを押します。

![toot5.png](https://qiita-image-store.s3.amazonaws.com/0/191521/0dc107b7-8a91-7e92-8632-5be027c18fb9.png)

以下の画面に切り替わったのち、「アプリの名前」に「GitHub」、「アプリのウェブサイト」に「https://github.com」と入力してください。

![toot6.png](https://qiita-image-store.s3.amazonaws.com/0/191521/fb79b04a-03b9-df03-dbe8-a419465400e2.png)

入力が終わったら、送信ボタンを押してください。

すると、アクセストークンが画面に表示されますので、それをメモしてください。

![toot7.png](https://qiita-image-store.s3.amazonaws.com/0/191521/b29d0112-0366-ffc8-400d-8c4e3a696e0d.png)

アクセストークンを取得したら、Mastodonインスタンスでの作業は終了です。

## IFTTT で Mastodon への Toot 設定

再び、IFTTT に戻って Mastodon へ Toot する設定を行います。

「New Applet」を押し、アプリを作成します。

![toot8.png](https://qiita-image-store.s3.amazonaws.com/0/191521/c5239053-9d02-d84a-feaa-7eedeef329a0.png)

以下のような画面に切り替わります。画面内の「this」というところを押して、「WebHooks」を選択します。

![toot9.png](https://qiita-image-store.s3.amazonaws.com/0/191521/f2e257cb-b757-bd69-3677-78647c9f15cf.png)

![toot10.png](https://qiita-image-store.s3.amazonaws.com/0/191521/e78597c3-0160-21ac-93ba-aaa4ddd4bd1e.png)

![toot11.png](https://qiita-image-store.s3.amazonaws.com/0/191521/e7a07e1b-eba0-00a2-f3a2-fb45edbd3ac8.png)

「Event Name」には「Github」と入力します。
入力後、「Create Trigger」をクリックします。

![toot12.png](https://qiita-image-store.s3.amazonaws.com/0/191521/6a5d2841-c4a1-1b41-008b-fa312a34a96e.png)

すると下記のような画面に切り替わります。
次に、「that」をクリックし、再び 「WebHooks」を選択します。

![toot13.png](https://qiita-image-store.s3.amazonaws.com/0/191521/52553587-929f-064e-13d9-31a325b12b01.png)

![toot10.png](https://qiita-image-store.s3.amazonaws.com/0/191521/e78597c3-0160-21ac-93ba-aaa4ddd4bd1e.png)

![toot14.png](https://qiita-image-store.s3.amazonaws.com/0/191521/6f35d47e-8c44-c891-3525-192dca4763a2.png)

以下のような画面が表示されたら、各項目に必要な情報を入力していきます。

![toot15.png](https://qiita-image-store.s3.amazonaws.com/0/191521/b9b6ebd1-e184-6c4c-86a1-4c30a618cff0.png)

|項目|内容|
|:-:|:-:|
|URL|https://mastodon.example.com/api/v1/statuses|
|Method|POST|
|Content Type|application/x-www-form-urlencoded|
|Body|access_token=[Mastodonアクセストークン]&status= New Activity for [GithubのリポジトリのURL] &visibility=public|

なお、未収載とする場合は、public の部分を unlisted に変更します。

入力後、「Create Action」 を押すことでアプリが作成されます。

## アクティビティを Toot したい GitHub リポジトリへの設定 

Mastodon へ アクティビティを Toot したいリポジトリの「Setting」をクリックし、「Webhooks」の項目をクリックします。

「add Webhook」というボタンがありますので、それをクリックします。

![toot16.png](https://qiita-image-store.s3.amazonaws.com/0/191521/6fffb656-1445-020d-50e1-7638804c83e1.png)

すると、以下の画面が表示されますので、必要な情報を入力していきます。

![toot17.png](https://qiita-image-store.s3.amazonaws.com/0/191521/5cb05f8f-8125-9233-7f21-868f0927dff2.png)


|項目|内容|
|:-:|:-:|
|Payload URL|https://maker.ifttt.com/trigger/Github/with/key/＜IFTTTで取得したWebHooksのシークレットキー＞|
|Content Type|application/x-www-form-urlencoded|
|Secret| ＜IFTTTで取得したWebHooksのシークレットキー＞|
|Which events would you like to trigger this webhook?|Send me everything.|

最後に、
これで リポジトリで issue などが作成されるたびに Mastodon へと Toot されます。

#おわりに

とりあえず、これで Mastodon へと Toot することができるようになりました。

本当は、commit のハッシュとかを投げたかったんですが、その辺どうなっているかよく分からなかったので放置。

どなたか詳しい方、ツッコミいただけますと助かります……。

#謝辞

今回、[wakin](https://biwakodon.com/@wakin)氏から[助言](https://biwakodon.com/@wakin/99493038025188461)をいただきました。
この場を借りて感謝申し上げます。

#参考記事

また、下記の記事を参考にさせていただきました。
誠にありがとうございます。

[Twitter の投稿を IFTTT で Mastodon へ転送する。](https://qiita.com/yukimochi/items/f80a50a4486d0cb770dc)

[Swarm のチェックインを IFTTT で Mastodon へ転送する](https://qiita.com/koogawa/items/b17494bea1c13ad0b9ff)

[Raspberry PiでIFTTTのMaker WebhooksにPOSTする](https://qiita.com/undo0530/items/95dc85e3b58380ea359a)