【Discord】Bot のシャード (Shard) って何??初心者にも分かりやすく解説!

この記事は初心者向けとなっているため、厳密な事実よりも分かりやすさを優先して書いている部分があります。

Discord サーバーの拡張機能ともいえる Bot。様々なものが開発されていますが、大規模な Bot を使ったときに「シャード (Shard)」という単語を目にすることがあると思います。

Bot の情報に「Shard ID」の文字
Dyno のステータスページにも
Disboard のステータスページにも

この「シャード」という概念、Discord の Bot を開発したことがある方でないと知らないと思います。
そこで、この記事では Bot のシャードについて、初心者にも分かりやすく説明していきます。

目次

Bot が動く仕組み

シャードを理解するにあたって、まず Discord の Bot がどのように動いているのか理解する必要があります。
まずはこの画像を見てください。

この図の通り、基本的に Bot や Discord はどこかのデータセンターや個人宅にあるサーバー (プログラムを動かす専用に作られた高性能なパソコンのようなものだと思ってください) の中で動いており、それぞれがネットワークを介して通信しあうことでサービスを提供しています。

小規模な Bot だとこの図のようにサーバーが1つで動作していることが多いです。
しかし、Bot が大規模になってくると (2,000サーバー程度)、いくら高性能なサーバーを使っていても、通信の受け口が1つだけでは処理が追い付かなくなってきます。
そこで使われるのが シャーディング (Sharding) という手法です。

シャーディングとは?

シャーディングでは、この図のように通信の受け口を複数個に増やします。この受け口のことを「シャード (Shard)」と呼んでいます。
シャードが多ければ多いほど多数のサーバーでの同時使用に耐えることができるので、大規模な Bot は大量のシャードを持っているのです。

この図では物理的なサーバーが分かれているように見えますが、実際にはそうとも限りません。
あまりシャードをまとめすぎると、一度 Bot をストップした際の復帰に時間がかかりすぎるためです。

実際の運用では、1サーバーで数十シャードを立ち上げて複数の物理サーバーに分けたり、1つの巨大な物理サーバーの中にいくつかの仮想サーバーを立ち上げてその中でシャードを作ったり… 臨機応変に対応しています。

まとめ

この記事では、Discord Bot におけるシャードについて解説しました。
最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする


目次