Discord のメッセージ文字数制限ガイド

約 11 分で読めます

Discord はゲーマー向けの音声チャットとして 2015 年に登場し、現在では開発者コミュニティ、教育機関、企業のチームコミュニケーションにも広く使われる主要 SNS プラットフォームの 1 つです。メッセージの文字数制限を正しく理解することは、円滑なコミュニケーションの基盤になります。Discord コミュニティ運用の書籍と合わせて、本記事を活用してください。

Discord の文字数制限一覧

項目文字数上限備考
メッセージ本文2,000 文字無料ユーザー・Nitro Basic
メッセージ本文 (Nitro)4,000 文字Nitro 加入者のみ
チャンネルトピック1,024 文字チャンネル上部に表示
チャンネル名100 文字小文字・ハイフン・数字のみ
サーバー名100 文字サーバー設定で変更可能
ニックネーム32 文字サーバーごとに設定
ユーザー名32 文字グローバル表示名
自己紹介 (About Me)190 文字プロフィール欄
カスタムステータス128 文字絵文字 + テキスト
Embed 合計6,000 文字全フィールドの合算
Embed タイトル256 文字Embed の見出し
Embed 説明4,096 文字Embed の本文
Embed フィールド名256 文字各フィールドの見出し
Embed フィールド値1,024 文字各フィールドの内容
Embed フッター2,048 文字Embed 下部のテキスト
Embed Author 名256 文字Embed 上部の著者名
Webhook メッセージ2,000 文字content フィールド
スラッシュコマンド説明100 文字コマンドの説明文
モーダル入力4,000 文字TextInput コンポーネント

日本語と英語の情報密度の違い

Discord の 2,000 文字制限は「文字数」であり、バイト数ではありません。ここで注目すべきは、日本語と英語で 1 文字あたりの情報密度が大きく異なる点です。

英語では 2,000 文字でおよそ 300〜400 単語、A4 用紙の半分程度の分量になります。一方、日本語では 2,000 文字で約 1,200〜1,500 単語相当の情報を伝えられます。漢字 1 文字が英単語 1 つ分以上の意味を持つためです。つまり、日本語ユーザーは同じ 2,000 文字の枠内で英語ユーザーの約 3〜4 倍の情報量を詰め込めます。

この差は実用上も重要です。英語圏のユーザーが「2,000 文字では足りない」と感じる場面でも、日本語ユーザーにとっては十分な長さであることが多いのです。文字数とバイト数の違いを理解しておくと、マルチリンガルなサーバー運営で役立ちます。

なぜ 2,000 文字なのか - 技術的背景と設計思想

Discord がメッセージ上限を 2,000 文字に設定した背景には、複数の技術的・設計的な理由があります。

第一に、リアルタイムチャットの設計思想です。チャットは短いやり取りの連続で成り立つコミュニケーション形式であり、長文を 1 メッセージに詰め込むよりも、複数のメッセージに分けて会話する方が自然です。IRC (Internet Relay Chat) の 512 バイト制限や、初期のSlack のメッセージ設計と比較すると、2,000 文字は「短すぎず長すぎない」バランスを狙った数値といえます。チャット UX の研究では、1 メッセージの読了に 10 秒以上かかると受信者の集中力が低下するとされており、英語で 2,000 文字 (約 300〜400 語) はおよそ 8〜10 秒で読める分量に相当します。

第二に、WebSocket のペイロードサイズの最適化です。Discord はメッセージを WebSocket 経由でリアルタイムに配信しています。数万人が同時接続するサーバーでは、1 メッセージあたりのデータ量が通信負荷に直結します。UTF-8 エンコーディングでは日本語 1 文字が 3 バイトを消費するため、日本語 2,000 文字は最大約 6 KB のペイロードになります。この程度であれば、WebSocket フレームの一般的な上限 (多くの実装で 64 KB〜1 MB) を大きく下回り、フラグメンテーションなしに配信できます。実際のメッセージペイロードには本文以外にもメタデータ (送信者 ID、タイムスタンプ、添付ファイル情報など) が含まれるため、本文だけで数十 KB を消費する設計は現実的ではありません。

第三に、データベースの効率です。Discord は ScyllaDB (Cassandra 互換の分散データベース) をメッセージストレージに採用しており、1 日あたり数十億件のメッセージを処理しています。各メッセージには Snowflake 形式の 64 ビット ID が割り当てられ、タイムスタンプ順にソートされます。メッセージ長に上限を設けることで、パーティションあたりのデータサイズが予測可能になり、ホットスポットの発生を抑制できます。仮にメッセージ長が無制限であれば、1 つの巨大メッセージがパーティションを圧迫し、同じチャンネルの他のメッセージの読み書き性能に影響を及ぼすリスクがあります。

第四に、クライアント側のレンダリング負荷です。Discord のデスクトップアプリは Electron ベースで動作しており、チャットログのレンダリングには仮想スクロール (画面に表示されている範囲のメッセージだけを DOM に描画する手法) を採用しています。メッセージ長が予測可能であれば、各メッセージの高さの推定が容易になり、スクロール位置の計算やジャンプ操作がスムーズに動作します。

文字数カウントのエッジケース

Discord の文字数カウントには、直感に反する挙動がいくつかあります。メッセージを送信する前に知っておくと、「あと数文字なのに送れない」という事態を防げます。

要素表示上の見た目実際のカウント
標準絵文字😀 (1 文字に見える)1〜2 文字 (Unicode コードポイント数)
カスタム絵文字:emoji_name:約 20〜40 文字 (<:name:id> 形式)
アニメーション絵文字:emoji_name:約 21〜41 文字 (<a:name:id> 形式)
ユーザーメンション@ユーザー名約 22 文字 (<@ユーザーID> 形式)
ロールメンション@ロール名約 22 文字 (<@&ロールID> 形式)
チャンネルリンク#チャンネル名約 21 文字 (<#チャンネルID> 形式)
URLリンクテキストURL 全体の文字数がそのままカウント
Markdown 記法太字記号を含む全文字数 (**太字** = 6 文字)
コードブロック整形されたコードバッククォートと言語名を含む全文字数

特に注意が必要なのはカスタム絵文字です。サーバー独自の絵文字は内部的に <:emoji_name:123456789> のような長い文字列として扱われるため、見た目は 1 文字でも 20 文字以上を消費します。カスタム絵文字を多用するメッセージでは、想定より早く文字数上限に達することがあります。

同様に、メンションも内部的にはユーザー ID やロール ID を含む長い文字列です。10 人にメンションするだけで約 220 文字を消費するため、残りの本文に使える文字数が大幅に減ります。

見落としやすいのがゼロ幅文字と結合文字の扱いです。ゼロ幅接合子 (ZWJ: U+200D) は画面上には表示されませんが、1 文字としてカウントされます。家族絵文字 (👨‍👩‍👧‍👦) は ZWJ で 4 つの絵文字を結合した構造で、見た目は 1 つのアイコンでも内部的には 7 文字 (絵文字 4 + ZWJ 3) を消費します。肌色修飾子付きの絵文字 (👋🏽 など) も同様に、基本絵文字 + 修飾子で 2 文字分です。絵文字と Unicode の文字数の仕組みを把握しておくと、正確な文字数管理に役立ちます。

Markdown の記法も文字数を圧迫する要因です。たとえば、太字 (**テキスト**) は装飾記号の ** が前後で計 4 文字、取り消し線 (~~テキスト~~) も 4 文字を消費します。コードブロックは開始の ```言語名\n と終了の \n``` で最低 8 文字以上が必要です。装飾を多用するメッセージでは、本文の実質的な文字数が 1,600〜1,800 文字程度に縮まることも珍しくありません。

Nitro と無料プランの比較

Discord Nitro に加入すると、メッセージの文字数上限が 2,000 文字から 4,000 文字に倍増します。ただし、Nitro Basic では文字数上限は 2,000 文字のままです。

機能無料Nitro BasicNitro
メッセージ文字数2,0002,0004,000
ファイルアップロード25 MB50 MB500 MB
カスタム絵文字の利用サーバー内のみどこでもどこでも

4,000 文字の恩恵が大きいのは、技術的な議論やコードレビューを Discord 上で行うユーザーです。コードスニペットを含むメッセージは文字数を消費しやすいため、Nitro の拡張枠が活きる場面が多くなります。一方、日常的なチャットでは 2,000 文字で十分なケースがほとんどです。

注意すべき点として、Nitro の 4,000 文字拡張はあくまで送信者側の特典です。受信者が無料ユーザーであっても、Nitro ユーザーが送った 4,000 文字のメッセージは全文表示されます。ただし、Nitro を解約した場合、過去に送信した 4,000 文字のメッセージは編集できなくなります (2,000 文字以下に短縮しない限り保存できません)。サブスクリプションの継続を前提にした運用は避け、重要な長文は別の手段 (Embed やスレッド) で管理する方が安全です。

効果的なメッセージの書き方

2,000 文字の上限は日常的なチャットには十分ですが、長い説明や議論では工夫が必要です。チャットコミュニケーションの文章術を身につけておくと、限られた文字数でも的確に伝えられます。以下のポイントを意識しましょう。

  1. 結論を先に書く。質問・依頼・報告など、メッセージの目的を冒頭で明示すると、読み手がすぐに内容を把握できます。
  2. Markdown 記法を活用する。Discord は太字 (**テキスト**)、斜体 (*テキスト*)、コードブロック (`コード`) に対応しています。ただし、Markdown の記号自体も文字数にカウントされる点に注意してください。
  3. スレッド機能を使う。長い議論はスレッドに移行することで、メインチャンネルの流れを妨げません。
  4. 箇条書きで情報を整理する。ハイフン (-) やアスタリスク (*) で箇条書きにすると、視認性が大幅に向上します。

長文メッセージの分割テクニック

2,000 文字を超える内容を伝えたい場合、効果的な分割方法を知っておくと便利です。

Bot・Webhook メッセージの文字数制限

Discord Bot を開発する場合、通常メッセージと Embed の両方の制限を正確に把握する必要があります。API レスポンスの文字数設計と同様に、制限を超えるとリクエストが 400 Bad Request で拒否されます。

制限項目上限注意点
Bot メッセージ content2,000 文字Nitro の 4,000 文字は Bot には適用されない
Webhook content2,000 文字Webhook 名は 1〜80 文字
Embed 合計6,000 文字全フィールドの文字数を合算
1 メッセージあたりの Embed 数10 個合計 6,000 文字の制限は Embed 全体に適用
Embed フィールド数25 個1 つの Embed あたり
API レートリミット5 リクエスト/5 秒チャンネルあたり (Bot 共通)
Interaction レスポンス2,000 文字スラッシュコマンドの応答

Bot メッセージで重要なのは、Nitro の 4,000 文字拡張が Bot には適用されない点です。Bot の content フィールドは常に 2,000 文字が上限です。大量の情報を表示する場合は、Embed を活用するか、ページネーション (ボタンで次のページに遷移) を実装するのが一般的です。

Embed の 6,000 文字制限は、1 メッセージに添付された全 Embed のフィールドを合算した値です。たとえば、Embed を 3 つ添付する場合、3 つの title + description + field name + field value + footer + author name の合計が 6,000 文字以内に収まる必要があります。個々の Embed が制限内でも、合計で超過するとリクエストが拒否されるため、複数 Embed を使う場合は合計文字数を事前に計算しましょう。

Webhook メッセージも同様に 2,000 文字が上限ですが、Embed を最大 10 個まで添付できます。GitHub の通知や CI/CD の結果を Discord に送る場合、content は短い要約にとどめ、詳細は Embed に格納する設計が推奨されます。Webhook には Bot とは異なるレートリミット (30 リクエスト/60 秒) が適用されるため、高頻度の通知を送る場合はキューイングの仕組みを設けると安定します。

Bot 開発で見落としがちなのが、メッセージ編集時の文字数制限です。Bot が送信済みメッセージを編集する場合も 2,000 文字の制限が適用されます。また、Interaction (スラッシュコマンドやボタン) のレスポンスにも同じ 2,000 文字制限があり、Deferred Response を使って後から編集する場合も同様です。大量のデータを返す Bot では、content + Embed の組み合わせで最大 8,000 文字 (content 2,000 + Embed 6,000) を活用する設計が実用的です。

よくある失敗パターン

Discord でのコミュニケーションで陥りがちな失敗を紹介します。

サーバー運営での文字数制限の活用法

サーバー管理者にとって、文字数制限はルール設計やチャンネル構成に直結する要素です。

プロのテクニック

Discord を使いこなすための上級テクニックを紹介します。

他のチャットプラットフォームとの比較

プラットフォームメッセージ上限Embed/リッチ表示Bot API特徴
Discord (無料)2,000 文字6,000 文字 (Embed)充実Markdown 対応、Embed で拡張可能
Discord (Nitro)4,000 文字6,000 文字 (Embed)充実有料プランで倍増
Slack40,000 文字Block Kit充実ビジネス向け、長文に寛容
LINE10,000 文字Flex Message限定的モバイル中心、個人利用が主
X (旧 Twitter)280 文字 (無料)なし限定的短文特化、Premium で拡張
Telegram4,096 文字HTML/Markdown充実Bot API が強力、グループ上限 20 万人
Microsoft Teams28,000 文字Adaptive Cards充実Office 365 統合、企業向け

Discord の 2,000 文字は、Slack の 40,000 文字や Teams の 28,000 文字と比べると控えめですが、リアルタイムチャットとしては十分な長さです。Slack や Teams はビジネス文書に近い長文を想定しているのに対し、Discord は会話のテンポを重視した設計です。一方、Telegram の 4,096 文字は Discord の無料プランの約 2 倍で、Nitro とほぼ同等です。

Discord の真の強みは Embed システムにあります。Slack の Block Kit や LINE の Flex Message と同様にリッチな構造化データを表示できますが、Discord の Embed は 1 メッセージあたり最大 10 個・合計 6,000 文字という大容量を持ち、Bot 開発者にとって最も柔軟な表現手段を提供しています。メッセージ本文の文字数制限だけでプラットフォームの表現力を判断するのは早計です。

まとめ

Discord のメッセージは通常 2,000 文字、Nitro 加入者は 4,000 文字まで入力できます。ただし、カスタム絵文字 (1 つあたり 20〜40 文字)、メンション (1 つあたり約 22 文字)、Markdown 記法 (太字で 4 文字、コードブロックで 8 文字以上) は見た目以上に文字数を消費するため、実質的な上限はそれより短くなる場合があります。ゼロ幅結合子を含む複合絵文字にも注意が必要です。Bot 開発では Embed の 6,000 文字制限 (全フィールド合算)、Bot には Nitro の拡張が適用されない点、そしてレートリミット (5 リクエスト/5 秒) を押さえておきましょう。メッセージの文字数を事前に確認したいときは、文字数カウントスをご活用ください。