Twitterの3大代替プラットフォームはすべて異なるカウント方式を採用しています。Blueskyは書記素(300)、Threadsは文字(500)、Mastodonはインスタンス依存(デフォルト500、最大5,000+)。書記素計算の仕組みを含む、クロスプラットフォームリファレンスをご紹介します。
3つの分散型Twitter代替
2022年にTwitter離れが始まったとき、3つのプラットフォームが移行の大部分を吸収しました:Bluesky、Threads、Mastodon。外から見ると似ています(短い投稿、フォローグラフ、返信、リポスト)が、3つの完全に異なる技術基盤の上に構築されており、それが文字カウント方法を形作っています。
BlueskyはAT Protocol上で動作する、グローバルコンテンツレイヤーとポータブルアカウントを持つ連合型アーキテクチャです。2024年2月に公開ローンチしました。最もTwitterらしい感覚で、文字カウントが最も革新的です。
ThreadsはMetaの参入で、2023年7月にローンチ、Instagramのアイデンティティに緊密に結びついています。クローズドなMeta製品として始まりましたが、現在はActivityPub(Mastodonプロトコル)にブリッジしているため、Threadsの投稿はより広いフェディバースに連合できます。
Mastodonは3つの中で最年長:オープンソース、ActivityPubネイティブの連合型ネットワークで、サーバー(インスタンス)を選び、管理者がルールを設定します。2016年から稼働していますが、Twitterの所有権変更後の2022年末に爆発的に普及しました。
Blueskyの300書記素制限
Blueskyの投稿は300書記素に制限されています。300文字ではありません。300バイトでもありません。300書記素です。
書記素とは、画面を見ているときに「1文字」と呼ぶもの:1つの可視シンボルです。文字aは1書記素です。国旗絵文字🇺🇸も1書記素で、内部では2つの地域インジケーターコードポイント(と4つのUTF-16コードユニット)から構成されています。
プレーンな日本語テキストでは、300文字制限と同じに見えます。違いは絵文字、特に複合絵文字やスキントーン絵文字を追加したときに現れます。Twitterでは家族絵文字が280のうち11文字を消費する可能性がありました。Blueskyでは1文字だけです。
Threadsの500文字制限
Threadsの投稿は500文字に制限されています。シンプルです。ThreadsはInstagramの文字カウントモデルを継承しており、Twitterが元々使っていたのと同じUTF-16コードユニットを使います。
つまり、絵文字は通常500文字の予算で2文字としてカウントされます。複合絵文字は5、7、または11としてカウントされる可能性があります。テキスト中心の投稿を書く場合、500で十分です(日本語約200〜250文字)。絵文字に頼ると、実効予算は縮小します。
Mastodonの500文字デフォルト
Mastodonのデフォルト投稿制限は500文字ですが、ひねりがあります:各インスタンスが上書きできます。インスタンス管理者はサーバーを設定するときに上限を設定し、グローバルルールはありません。
最大のインスタンス(mastodon.social、mastodon.online、fosstodon.org)はデフォルトの500を保ちます。しかし多くのインスタンスはもっと高く運用されています:1,000、2,000、さらには11,000。infosec.exchangeやhachyderm.ioのような人気のあるものは1,000+の上限です。
連合がこれを複雑にします。寛容なインスタンスから4,000文字を投稿しても、その投稿はmastodon.social(上限500)に連合されます。受信側インスタンスでは、表示される投稿が「もっと読む」リンクで切り詰められる可能性があります。
実用的なルール:500で書く。すべてのインスタンスで動作し、きれいに連合し、Threadsと一致します。
なぜBlueskyは文字ではなく書記素を数えるのか
Twitterは2006年に140文字制限をUTF-16コードユニット、JavaScript文字列がネイティブに使うエンコーディングを中心に構築しました。英語ASCIIには理にかなっていました。絵文字と複雑なスクリプトが登場した瞬間、見事に壊れました。
家族絵文字👨👩👧👦を見てください。目には1つのものに見えます。内部では、3つのゼロ幅結合子(ZWJ)でつながった4つの別個の人絵文字から構成されています。合計:7コードポイント、11 UTF-16コードユニット。280文字のTwitter投稿では、この単一絵文字が11文字を消費していました。
BlueskyのAT Protocolチームはこれから学びました。300文字制限が書記素で測定されることを指定しました。これはIntl.Segmenterを{ granularity: 'grapheme' }と共に使ってJavaScriptが公開する単位です。カウントは今やユーザーが見るものと一致します。
クロスプラットフォーム文字計算
| プラットフォーム | 上限 | カウント単位 |
|---|---|---|
| Twitter(X) | 280 | UTF-16コードユニット |
| Bluesky | 300 | 書記素 |
| Threads | 500 | UTF-16コードユニット |
| Mastodon(デフォルト) | 500 | UTF-16コードユニット |
| Mastodon(最大インスタンス) | 5,000+ | UTF-16コードユニット |
その他のBluesky制限
- 投稿: 300書記素(Intl.Segmenter経由でカウント)
- 表示名: 256文字
- 説明(bio): 256文字
- ハンドル: 253文字(.bsky.socialまたはあなたのドメインを含む)
- 画像の代替テキスト: 2,000文字
投稿以外のThreads制限
- 投稿(500文字): ヘッドライン制限。プレーンUTF-16カウント。
- bio(150文字): Instagramと同じ。タイト。
- ユーザー名(30文字): ThreadsアカウントはInstagramに紐づくため、Instagramのユーザー名と共有。
- 表示名(Instagram名): Instagramの名前フィールドと共有、実用上通常30文字まで。
- DM(1,000文字): ダイレクトメッセージ制限、投稿制限より長い。
- 画像の代替テキスト: アクセシビリティ説明用に約1,000文字まで。
投稿以外のMastodon制限
- 投稿(デフォルト500文字): インスタンスごとに上書き。一部は5,000+を許可。
- 表示名(30文字): フィードに表示されるフレンドリー名。
- bio(500文字): プロフィール説明。
- ユーザー名(30文字): ハンドルのローカル部分。
- プロフィールフィールド(4メタデータ行): 各行はラベル255文字+値255文字。
- コンテンツ警告: 100文字。
- 画像の代替テキスト: 添付ファイル1つにつき1,500文字。
クロス投稿戦略:一度書いて、どこでも投稿
3つすべて(そしておそらくTwitter/Xも)にプレゼンスを維持している場合、実用的な動きは最小公倍数に書いて、残りを任せることです。
最小公倍数: オーディエンスがどちらに傾いているかに応じて、280文字(Twitter)または300書記素(Bluesky)。それを当てれば、投稿は余裕を持ってどこにでも収まります。
クロス投稿ツール: Buffer、Hypefury、Postiz、CroissantはすべてBluesky、Threads、Mastodon、Xでのマルチプラットフォーム公開をサポートします。
注意すべき1つのトラップ:Bluesky(各1書記素)で問題なく見える絵文字の多い投稿は、Twitterの280(家族絵文字あたり11 UTF-16文字)を超える可能性があります。絵文字が密集しているときは、必ず実際のプラットフォームのツールで確認してください。 文字数カウンター を使用してください。