数万人のコミュニティに、確実に情報を伝えるために。【個人開発】

:::note info
この記事は、[これからの情報伝達手段の在り方について考えてみよう！](https://qiita.com/official-events/a1b1a6dd87105eb2bb92)の参加記事です。
正直このキャンペーンを見るまで、`CPaaS`という言葉を知りませんでした。
貴重な経験をありがとうございます。
（なのでもしかしたら間違った用語使用をしているかもしれません。ご指摘ください。）
:::

## はじめに

おはようございます、しなもんです。

私はとある個人開発サービスを運営しています。
一言で表すと、いろいろ便利なDiscordBotです。

:::note info
**[Discord](https://discord.com)とは？**
個人間やグループ間でコミュニケーションをすることができるSNSです。
「**サーバー**」と呼ばれるコミュニティで分けられており、招待URLさえあれば様々なサーバーに自由に参加できます。
（本来の意味のサーバーとは異なります）

Slackをプライベートなものにしたようなものです。

**DiscordBotとは**
LINE公式アカウントやSlack Botのように、プログラムによってSNSを拡張できる仕組みです。
:::

Botの詳細はさておき、なんとこのプロジェクト、
**ありがたいことに3万人以上の規模を持つ、個人開発にしてはそこそこデカいコミュニティで構成されています。**

Bot公式のDiscordサーバーも、常時3000人ほどがオンラインの大きなコミュニティです。

ここで問題になってくるのが、**確実に情報を伝えるためのアナウンス手段**です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1927831/935bc03a-7d9f-8e8f-b7c8-c9ce7be6a08d.png)

これは以前（2022年9月、サービスリリース直後）のアナウンスです。
通常のチャット画面に、人力でアナウンス内容を書いていたわけです。

特に反応もなく、アナウンスの場所も不明瞭で、
**たびたびユーザーを困惑させていました。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1927831/58a5909a-350c-2ab2-7b83-520f1d9171cd.png)

**そしてこれが現在のアナウンスです。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1927831/088d29c8-b7db-9930-fc06-74c70927d13e.png)

さらに、このメッセージは
**自作のCPaaSソフトウェアで送信しています。**

さて、前置きが長くなりましたが、
この記事ではこの**数万人のコミュニティに、確実に情報を伝えられるようにするために**、
そして**これからの時代での情報伝達ツール**を探るために、
奔走した話を書きたいと思います。

## 目次
- はじめに
- 目次
- どんな問題を抱えていたのか
- どのように解決したのか
- これからの情報伝達手段を提供するために
- このサービスの今後
- コミュニティの反応
- 最後に

## どんな問題を抱えていたのか

初期のコミュニティでは、
- 更新情報が伝わらず質問が相次ぐ
- 重要なお知らせのノーリアクション
- メンテナンス時のサービス停止によるクレーム

などがたびたび発生し、問題となっていました。
その原因をいくつか書き出してみます。

### 情報の重要度が分からない
先述した通り、通常のチャットスペースに投稿していたため、
通知の有無以外でユーザーの投稿と区別できませんでした。

### 場所が分からない
これも同上の理由ですが、
通常のチャットだとアナウンスであることが分からず、
そのまま見逃す原因になっていました。

### 読みにくい
現在のDiscordにはマークダウン言語が使用できるとはいえ、
単なるチャットのテキスト情報だけでは情報を伝えられなかったと考えます。

***

以上の理由から、問題が相次いでいたと考えました。


## どのように解決したのか

Discordには、WebhookAPIが存在します。

（これもSlackのものと非常に似ていますが）
これは、特定のチャンネルにPostすることでメッセージを送信できるものです。

また、大きな特徴として、**`Embed`と呼ばれる特殊なメッセージを送信することができます。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1927831/70fdf08d-d717-62f4-ed75-d560261d9bbc.png)

引用: [初心者に捧ぐDiscordのEmbed入門](https://qiita.com/hisuie08/items/5b63924156080694fc81)

https://qiita.com/hisuie08/items/5b63924156080694fc81

この`Embed`は、ユーザーは投稿出来ない特殊なもので、
色や画像、アイコンなど、様々な特殊設定が可能です。

**まさにアナウンス用の情報伝達手段としてはピッタリだったわけです。**

## これからの情報伝達手段を提供するために

`Embed`がコミュニティへ情報を確実に伝えるための手段としてベストだったことに気づいたところで、問題はその手段でした。

> CLIプログラムでも、Webhookへの送信は可能だ。
自分だけが使うなら、それでサクッとツールを自作しても良いだろう。

> でもそれだけで良いのか？
世の中には、もっとたくさんのコミュニティがあって、もっとたくさんの情報を伝えなければならない場所があるのでは？

> 情報伝達に困っているコミュニティ管理者はもっと沢山いるはずだ。
エンジニアだけが使えるような、単なるCLIプログラムじゃだめだ。

> どんなにプログラムに疎い管理者でも、簡単に情報を伝えられるようにするためには...！

というわけで、GUIで送信できて、確実に情報を伝えられるようにする、
**Discord Announce System (通称: DAS)**
を開発したわけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1927831/8a004728-244e-e9fd-7e41-1b3395c4cf1f.png)

簡単に紹介すると、
ソフトウェア自体は `Electron` で制作しており、
Discordに慣れている方なら手軽に操作できるUI設計にしています。

また、送信先やテンプレートを管理できるようにしており、
様々なメッセージを様々な場所にワンクリックで送信できるようにしています。

画像についてですが、Discord WebhookAPIは
ファイルを直接送信することはできず、**画像のurl**のみを受け付ける仕組みです。

そのため、専用のAPIを設計~~しました~~してくれました。（[@mai_llj](https://qiita.com/mai_llj)さんが）

Cloudflare Workersで、画像をpostするとr2にアップロードされ、publicなurlを返してくれるAPIを設計し、内部に組み込んでいます。

これによって、非エンジニアなコミュニティ管理者でも、
画像を含む視覚的に分かりやすい情報伝達手段を得ることができるようになったのです。

## このサービスの今後
ちなみに、このソフトウェアおよびサービスはまだ一切公開していません。
**正直、この記事で初めて世間一般には公開しました。**

というのも、あまりにもコードがスパゲッティしており、
リリースするなら0から全部書き直したいと思ったからです。

また、ソフトウェアとしてだけでなくサービスとしても本格的に運用したいと考えており、
予約投稿サービスや他SNSへの提供、SaaS化も考えています。
（となるとおそらく名称変更も検討するかもしれません。）

`Discord`という形だけで終わらず、CPaaSとしての発展ができないかなと考えています。

もし進展があればまたQiitaで記事を書こうと思うので、
興味がある方は気にかけてくれるととてもとてもうれしいです。

## コミュニティの反応
めっちゃ好評（だと思います。）

`Embed`の活用だけでなく、画像の追加やマークアップ言語の積極的利用、コミュニティ人数の増加も理由の一つだとは思いますが、明らかにリアクションが増えてとてもうれしいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1927831/a238b0d6-16f5-f597-a592-67287a549679.png)

また、情報伝達ミスによるクレームは**一切なくなりました。**
今のところ（2024年7月現在）は、`Embed`を使用するようになってからは**0件です。**
やったぜ。

## 最後に

情報伝達機能の実装について、まとめておきたい話を書かせていただきました。
現在、SNSの分散化やユーザーの活動形態の変化によって、
情報伝達というものは非常に複雑化しています。

そんな中で、Discordという形ではありましたが、
少しでも適応する形を見出せたかなと感じています。

今後もこの考え方については積極的に取り組んでいきたいと思います。
**最後までお読みいただき、ありがとうございました。**