最終更新:

Bluesky の文字数制限と投稿のコツ

約 6 分で読めます

Bluesky は分散型プロトコル AT Protocol 上に構築された SNS です。X (旧 Twitter) の共同創業者ジャック・ドーシー氏が 2019 年に Twitter 社内で発表した分散化プロジェクトを起源とし、アプリは 2024 年 2 月に招待制を外して一般公開されました。投稿の文字数制限は 300 文字ですが、この「300 文字」の数え方には他の SNS にはない独自の仕組みがあります。本記事では、AT Protocol の技術仕様に踏み込みながら、文字数制限の背景と効果的な投稿術を解説します。

書記素クラスタカウント - Bluesky 独自の文字数計算方式

Bluesky の文字数カウントは「書記素クラスタ (grapheme cluster)」単位で行われます。これは Unicode 標準の UAX #29 で定義された、人間が「1 文字」と認識する最小単位です。この方式は X や Threads のカウント方法とは根本的に異なります。

具体的な違いを見てみましょう。絵文字の肌色バリエーション「👋🏽」は、内部的には U+1F44B (手を振る絵文字) と U+1F3FD (肌色修飾子) の 2 つの Unicode コードポイントで構成されています。X ではこれを 2 文字としてカウントしますが、Bluesky では書記素クラスタとして 1 文字です。同様に、国旗絵文字「🇯🇵」は 2 つの Regional Indicator コードポイント (U+1F1EF + U+1F1F5) から成りますが、Bluesky では 1 文字としてカウントされます。

この仕組みは、家族絵文字のような複合絵文字でさらに顕著です。「👨‍👩‍👧‍👦」は 7 つのコードポイント (4 つの絵文字 + 3 つの ZWJ) で構成されますが、Bluesky では 1 文字です。X では絵文字は構成の複雑さにかかわらず一律 2 文字分としてカウントされるため、この絵文字も 2 文字扱いです。絵文字を多用する投稿では、1 個あたりのカウントが小さい Bluesky のほうが実質的に多くの情報を詰め込めます。

同じ絵文字 3 個を入れた投稿 - Bluesky と X で消費文字数を並べる
投稿に入れる絵文字内部のコードポイント構成Bluesky の消費 (書記素クラスタ)X の消費 (絵文字は一律 2 文字)
👋🏽 手を振る (肌色付き)U+1F44B + U+1F3FD (2 コードポイント)1 文字2 文字
🇯🇵 国旗U+1F1EF + U+1F1F5 (2 コードポイント)1 文字2 文字
👨‍👩‍👧‍👦 家族絵文字 4 + ZWJ 3 (7 コードポイント)1 文字2 文字
3 個の合計11 コードポイント3 文字6 文字

本文がまったく同じでも、絵文字の消費分だけ残りの文字数が変わります。上限は Bluesky が 300 文字、X が 280 文字です。書記素クラスタで数える Bluesky では、絵文字の内部構成がどれだけ複雑でも 1 文字のままです。

Bluesky の文字数制限一覧

項目文字数上限カウント方式備考
投稿 (ポスト)300 文字書記素クラスタUTF-8 で 3,000 バイトの上限も併存
表示名64 文字書記素クラスタプロフィールに表示
プロフィール (自己紹介)256 文字書記素クラスタBio 欄
リプライ300 文字書記素クラスタ投稿と同じ制限
ハンドル名253 文字文字数DNS ドメイン名の形式に従う
リスト名64 バイトUTF-8 バイト数書記素の上限がない唯一の項目
リスト説明300 文字書記素クラスタリストの説明文
ALT テキスト (画像説明)2,000 文字書記素クラスタアクセシビリティ用

この表で見落としやすいのがリスト名です。AT Protocol のスキーマ定義では、長さ制約は書記素クラスタ数を指定する形式とバイト数を指定する形式の 2 種類があり、後者は UTF-8 バイト数で数えます。リスト名は後者だけが設定されているため、日本語のようにほとんどの文字が 1 文字 3 バイトを消費する言語では、体感で 21 文字前後しか入りません。「英数字なら 64 文字入るのに日本語だと途中で止まる」という現象はこれが原因です。

投稿本文にも同じ二重構造があり、書記素クラスタ 300 とバイト数 3,000 の両方が定められています。日本語では 300 文字書いても 900 バイト程度にとどまるため、実際に先に当たるのは書記素側の 300 です。逆に絵文字を大量に並べた場合は 1 個で 10 バイト以上を消費することもありますが、それでも 300 個並べるほうが先に上限に達します。バイト上限は事実上の安全弁で、日常の投稿で意識する必要はありません。

ハンドル名の 253 文字という値は、ハンドルが DNS のドメイン名としても機能することに由来します。DNS 名の長さ制約を踏襲したものと考えれば覚えやすいでしょう。ALT テキストは 2,000 文字まで入力できるため、視覚障害のあるユーザーに対して画像の内容を十分な分量で説明できます。

300 文字はどこで決まっているのか - プロトコルとアプリの境界

「300 文字」を Bluesky という会社が握っている数字だと思うと、この SNS の構造を読み違えます。上限が書かれているのは AT Protocol の中核仕様ではなく、Bluesky アプリが使うスキーマ定義のほうです。投稿の形を決めるスキーマにテキスト長の制約が書かれており、Bluesky のアプリとサーバーはその定義に従って入力を弾きます。

つまり 300 文字はプロトコルの物理的な限界ではなく、Bluesky というアプリケーションの設計判断です。同じ AT Protocol の上に別のアプリを載せれば、そのアプリは自前のスキーマで 500 文字でも 1,000 文字でも定義できます。X の 280 文字制限のような中央集権型サービスの上限と、見た目は同じ「文字数制限」でも成り立ちが違うわけです。

この違いは実務で 2 つの意味を持ちます。1 つは、Bluesky の投稿データを別のクライアントから読む場合、300 文字はあくまで書き込み時の検証値であって、データ構造そのものの制約ではないという点です。もう 1 つは、上限がスキーマ定義という公開された場所に書かれているため、変更があれば誰でも差分として確認できるという点です。仕様の根拠を確かめたいときは、運営の告知を待つのではなくスキーマ定義を見るのが最短経路になります。

Facets - Bluesky のリッチテキスト処理と文字数への影響

Bluesky の投稿には「Facets」と呼ばれるリッチテキスト機能があります。リンク、メンション (@)、ハッシュタグを本文のどの範囲に対応させるかを、別の領域に注釈として記録する仕組みです。ここで押さえておきたいのは、Facets 自体は文字数を消費しないという点です。装飾のためのタグを本文に埋め込む方式ではないため、リンクにしてもメンションにしても、カウントされるのは画面に見えている本文の文字列だけです。

この設計から、URL の扱いが 2 通りに分かれます。本文中に URL を書けば、その文字列はそのまま本文の文字数を消費します。「https://example.com/very-long-path/to/article」なら 45 文字です。一方、リンクカード (外部サイトのプレビュー) の URL は本文テキストとは別のフィールドに保存されるため、本文の 300 文字とは別枠になります。ただし、本文に書いた URL 文字列を残したままカードを付ければ、その文字列の分は当然カウントされます。文字数を節約したいなら、カードを付けたうえで本文側の URL をどう扱うかまで確認するのが確実です。

メンション (@ユーザー名) は、本文に書いたテキストがそのまま文字数になります。「@alice.bsky.social」と記述すれば 18 文字です。Bluesky のハンドルはドメイン名の形をとるため、X の短い ID に比べて長くなりがちです。独自ドメインの短いハンドルを持つ相手なら数文字で済みますが、既定の bsky.social ドメインのままの相手を複数メンションすると、それだけで数十文字が消えます。

300 文字で効果的に伝える 5 つのコツ

  1. 結論ファーストで書く。300 文字はタイムライン上ではほぼ全文が表示される長さですが、読者が読み進めるかどうかは冒頭の 1〜2 行で決まります。最も伝えたいメッセージを先頭に置き、理由や補足を後ろに回しましょう。
  2. 不要な修飾語を削る。「非常に」「とても」「基本的に」などの副詞を削るだけで 10〜20 文字節約できます。日本語の場合、「することができます」を「できます」に置き換えるだけで 5 文字の節約です。
  3. 改行で読みやすさを確保する。スマートフォンでの閲覧が中心のため、3〜4 行ごとに空行を入れると視認性が向上します。ただし、改行も 1 文字としてカウントされるため、改行の入れすぎには注意が必要です。
  4. リンクカードを活用する。カードの URL は本文とは別のフィールドに入るため、本文側に長い URL 文字列を残さずに済めば、その分を説明文に回せます。長いパスを持つ URL では数十文字の差になります。
  5. 投稿前に文字数カウントスで文字数を確認。書記素クラスタ単位のカウントは手動では正確に把握しにくいため、ツールでの事前チェックが安心です。

よくある失敗パターンと回避策

Bluesky での投稿で陥りがちな失敗を、原因と対策を含めて紹介します。

プロのテクニック

他の SNS との文字数比較 - カウント方式の違いに注意

プラットフォーム投稿文字数カウント方式URL の扱い
Bluesky300 文字書記素クラスタ短縮なし・本文の URL は文字数分そのまま消費
X (Twitter)280 文字 (Premium: 25,000 文字)NFC 正規化後のコードポイントURL は一律 23 文字 (t.co 短縮)
Threads500 文字Unicode コードポイントURL は文字数にカウント
Mastodon500 文字 (サーバーにより異なる)サーバー実装依存URL は一律 23 文字

単純な文字数だけを比較すると Bluesky の 300 文字は X の 280 文字より 20 文字多いだけに見えます。しかし絵文字や結合文字を含む投稿では、書記素クラスタで数える Bluesky のほうが消費が小さくなります。逆に URL については、一律の文字数に短縮される X のほうが有利です。どちらが得かは投稿の中身で入れ替わるため、絵文字が多いか URL が多いかで使い分けるのが実際的です。SNS の文字数制限一覧も参考にしてください。

まとめ

Bluesky の 300 文字は、書記素クラスタで数えるという一点で他の SNS と性格が違います。絵文字がどれだけ複雑な構成でも 1 文字として扱われるため、見た目どおりの感覚で書けるのが強みです。一方で URL は短縮されず書いた長さのまま消費するので、リンクを含む投稿では本文とカードの使い分けが効いてきます。上限がスキーマ定義という公開された場所に書かれていることも押さえておけば、仕様の変化を自分で追えます。投稿前に文字数カウントスで文字数を確認すれば、制限オーバーを防げます。

この記事を共有