emoji ↔ shortcode 変換 — :smile: ↔ 😄 を一括変換 (GitHub / Slack / Discord 互換)
テキスト中の **GitHub-style shortcode** (`:smile:` `:thumbsup:` `:heart:` など) と **絵文字** (😄 👍 ❤️) を **双方向に一括変換** します。1570+ 種類の shortcode に対応 (GitHub Markdown / Slack / Discord / Mastodon / Mattermost が同じ名前を使用)。**shortcode → 絵文字** モードは PR 説明・Issue 本文・README の絵文字レンダリング、**絵文字 → shortcode** モードは絵文字をサポートしない環境向けのテキスト化やコード diff レビュー時の可視化に便利。**未知の shortcode** (例: 独自カスタム名) は「そのまま残す / 削除 / `?` に置換」を選択可。**完全にブラウザ内** で処理し、入力テキストはサーバーに送信されません。データは node-emoji (MIT) のローカル埋め込み。
使い方
**変換方向** ラジオで **shortcode → 絵文字** か **絵文字 → shortcode** を選び、入力欄にテキストを貼り付けて **変換する** を押すと結果が下に表示されます。GitHub の PR / Issue 本文、Slack / Discord の貼付メッセージ、README の見出しなど、**そのまま貼れる形式** で出力。**未知の shortcode** (例: `:my-custom-emoji:`) は **そのまま残す / 削除 / `?` に置換** の 3 通りから挙動を選択可。**サンプル** ボタンで `I :heart: :coffee: in the morning :sunny:` を流し込み可能。**コピー** / **テキスト保存 (.txt)** ボタンで結果を取り出せます。
詳細解説
変換対象のテキストが持つコンテキスト情報
:heart: :coffee: in the morning :sunny: のようなショートコードが混在するテキストを変換するとき、そのテキストは下書きの PR 本文、社内 Slack メッセージ、ブログ記事のドラフトといったものです。オンラインの変換ツールに貼り付けると、そのテキスト全体がサーバーに送信されます。内容が公開予定のものであれば問題は小さいですが、未発表の機能に関する PR 本文や、社内向けのアナウンス文書が混ざっている場合、その内容が外部に渡ることになります。
短文の変換ツールは「テキスト量が少ないから大丈夫」という感覚が生まれやすいですが、1 行の PR タイトルにも未公開の機能名・コードネーム・社内のみで通用する顧客略称が入ることはあります。文字数の少なさは漏洩リスクの低さを意味しません。
アップロード型の変換サービスを使う構造的なリスク
オンラインのショートコード変換サービスは「テキストを貼ってボタンを押すと結果が返る」シンプルな UI ですが、サーバー側では入力テキスト全文が一旦保存されることが珍しくありません。多くのサービスの利用規約には「利用状況の解析」「サービス改善」「不正利用検知」を理由として、入力データの一定期間の保持を許容する文言が含まれています。
さらに、こうしたサービスは「シンプルだから」と Cloud Functions や Edge Worker の上に薄く実装されていることが多く、上流のクラウド事業者のログにもリクエスト本文が記録されます。ユーザーから見えるのはツール提供者だけですが、構造的には複数の事業者がリクエスト本文を見うる経路にあるという非対称性があります。
node-emoji と内蔵辞書でオフライン変換を実現する仕組み
このツールは node-emoji (MIT ライセンス) と gemoji 由来の 1570+ ショートコード辞書をビルド時にバンドルしています。shortcode → 絵文字の変換は辞書引きの文字列置換で、絵文字 → shortcode は辞書の逆引きで行います。どちらの処理もブラウザのメモリ内で完結し、変換のためにネットワークリクエストは発生しません。
未知のショートコードの扱い (そのまま残す / 削除 / ? に置換) も JavaScript の条件分岐のみで実現しています。DevTools の Network タブを開いて変換を実行しても、リクエストが増えないことを確認できます。実装は GitHub で公開されています。
GitHub / Slack へ貼る前の確認ステップとして
PR 本文や Slack メッセージに絵文字ショートコードを混在させてから :smile: が正しくレンダリングされるかを確認したい場合、本ツールで一括変換してから貼り付けると、意図しない :unknown_code: が残る事故を防げます。特に外部サービスとの共有が混ざる PR (ベンダー向け、パートナー向け) では、変換前にブラウザ内でプレビューしておく習慣が有効です。
プラットフォーム別のショートコード辞書の差異
ショートコード :smile: :thumbsup: は GitHub 由来の gemoji 辞書がデファクトの起源で、Slack も初期は同じ辞書を採用しました。しかし時間の経過とともに各プラットフォームは独自の追加や別名 (alias) を持つようになり、いまでは「同じショートコードでも別の絵文字を指す」「片方にしか存在しない」というケースが珍しくありません。たとえば :hugs: は Slack では 🤗 ですが、Discord では :hugging: という別名を使う必要があり、GitHub の古い PR では :hugs: が認識されないこともあります。
このツールが内蔵する gemoji 由来 1570+ 辞書は、もっとも一般的な GitHub 系のセットを基準にしています。Slack / Discord / Mattermost 向けに最適化したい場合は、変換結果をそのまま貼るのではなく、出力のショートコードがターゲットの辞書に存在するかを別途確認するワークフローが必要です。FAQ に主要プラットフォーム別の典型的な差異をまとめてあります。
Unicode 絵文字の修飾語と結合シーケンスの落とし穴
:thumbsup: 👍 のような単純絵文字は安定していますが、肌色修飾子 (Fitzpatrick scale) を伴う 👍🏽、家族構成の ZWJ (zero-width joiner) シーケンス 👨👩👧👦、職業絵文字 👩💻 などは、Unicode 上は複数のコードポイントが結合した複合絵文字です。これらはショートコード 1 つで表現できないか、:thumbsup_tone3: のような拡張記法に依存します。
さらに、新しい絵文字 (Unicode 15.1 / 16.0 で追加されたもの) は、辞書ファイルが更新されないと shortcode 経由でアクセスできません。本ツールの辞書は MIT ライセンスの node-emoji 由来で、ライブラリ更新のタイミングで反映されます。「新しい絵文字を貼りたいのに変換されない」場合は、Unicode を直接コピペするのが確実です。shortcode のスペルを正確に確認したいときは emoji-info で名前 / コードポイント / 関連キーワードを引け、Markdown を HTML に展開しながら絵文字も一緒に処理したい場合は markdown-html-convert に流すと shortcode 周りの表示確認まで 1 タブで完結します。
よくある質問
- 入力データはサーバーに送信されますか?
- いいえ。すべてブラウザ内 JavaScript で完結します。**node-emoji** (MIT) と内蔵 emoji 辞書をローカルバンドルしているのでネットワーク通信もありません。
- 対応している shortcode は?
- **1570+ 種類** — **GitHub Markdown / Slack / Discord / Mastodon / Mattermost** が共通で使う **gemoji セット** に対応。`:smile:` `:thumbsup:` `:heart:` `:rocket:` `:sparkles:` のような短い名前が中心。Unicode 16 (2024) の最新絵文字は **emoji-info** ツールの方が網羅的 (1900+) ですが、GitHub-互換 shortcode 名 (PR 本文に貼れる名前) を扱うならこのツールが正解です。
- shortcode と Unicode CLDR の slug の違いは?
- **Unicode CLDR slug** (例: `grinning_face`) は Unicode が公式に付けた名前。**GitHub shortcode** (例: `:grinning:`) はそれを短く・覚えやすくしたもので、Slack / Discord / Mastodon でも同じ辞書が使われています。本ツールは GitHub-style の方を採用しています (実際の貼付テキストで需要が高いため)。CLDR slug を調べたいときは **emoji-info** ツールへ。
- 絵文字 → shortcode で **対応がない絵文字** は?
- 辞書にない絵文字 (例: マイナーな新規絵文字、肌色付き絵文字の一部) は **そのまま残されます**。これは情報を失わない安全側の挙動。完全な codepoint 情報が必要なときは **unicode-inspect** で個別解析できます。
- shortcode → 絵文字で **未知の shortcode** の挙動は?
- デフォルトは **そのまま残す** (`:my-custom:` のまま)。3 つの選択肢: (1) **そのまま残す** = 入力の `:foo:` をそのまま出力 (情報保持)、(2) **削除** = `:foo:` を空文字に置換 (テキスト整理)、(3) **`?` に置換** = 未知トークンをはっきり可視化。チームの独自絵文字記法を Markdown レンダリングに通す時は (1)、絵文字以外を弾きたい時は (2)、エラー検出を兼ねたい時は (3) を推奨。
- **skin tone modifier** (肌色付き絵文字) は対応していますか?
- node-emoji はベース絵文字 (`:hand:`) は変換しますが、Fitzpatrick 肌色 modifier (`:hand::skin-tone-3:` 等) の正規化は不完全です。本ツールでは **base shortcode のみサポート**、ZWJ-結合絵文字 (👨👩👧👦) は **そのまま残します**。複雑な絵文字の構造を知りたいときは **unicode-inspect** で codepoint 分解できます。
- GitHub の README / Issue に貼った時にレンダリングされますか?
- **はい**、本ツールが扱う shortcode は GitHub Markdown のサポート対象とほぼ完全一致 (gemoji 由来)。生成された `:smile:` 形式のテキストをそのまま PR 本文に貼れば GitHub 側で 😄 にレンダリングされます。逆に絵文字をそのまま貼っても表示されます (GitHub は両方を受け付ける)。
- 節句絵文字 (鯉のぼり 🎏 こいのぼり 等) の shortcode は?
- `:flags:` = 🎏 (鯉のぼり)、`:tanabata_tree:` = 🎋 (笹の葉)、`:tada:` = 🎉 (お祝い) など。日本由来の絵文字も網羅されています。**emoji-info** で全名前と Unicode コードポイントを横断検索できます。
- 他の絵文字関連ツールとの違いは?
- **emoji-info**: 1 つの絵文字を選んで Unicode 詳細 (codepoint / HTML エンティティ / CSS エスケープ) を表示。**emoji-shortcode** (本ツール): テキスト全体に対する **一括変換**。**kaomoji-search**: 顔文字 (^_^ など、絵文字とは別系統) の検索。**unicode-inspect**: 任意の文字を codepoint 単位で分解。
「送らない」を確かめるには
このツールは入力データを外部に送信しません。仕組み・監査手順・運営方針は以下で詳しく説明しています。
類似のツール
絵文字情報・検索 — Unicode 名・コードポイント・shortcode を一覧
Unicode 絵文字を検索して詳細情報を表示するツール。Unicode 16 (2024) 準拠の 1900+ 絵文字を、名前・キーワード・グループ・シリーズ (笑顔・動物・食物・乗物・国旗 など) で検索できます。1 件選ぶと、Unicode コードポイント (U+1F600 形式の全コードポイント)、HTML エンティティ (`😀`)、CSS エスケープ (`\1F600 `)、JS エスケープ (`\u{1F600}`)、shortcode (Slack/Discord/GitHub 互換、`:grinning_face:`)、Unicode カテゴリ (group / subgroup)、関連キーワードを表示。ワンクリックでクリップボードにコピー。データは unicode-emoji-json (MIT) + emojilib (MIT) のローカル埋め込みで、ネットワーク通信なし。
顔文字検索 — (^_^) や ¯\_(ツ)_/¯ などをカテゴリ別にコピー
笑顔・泣き・怒り・驚き・愛・困惑・ちゃぶ台返し・動物・音楽など 12 カテゴリ計 80 種以上の顔文字 (キャラクター絵文字) を、テキスト・タグ・カテゴリの 3 つから横断検索してワンクリックでコピーできます。Unicode と中点・矢印・括弧の組み合わせで構成された顔文字は emoji と違って Slack / Discord / LINE / メールなどあらゆる環境で同じ見た目で表示できるので、絵文字の互換性を気にせず感情を載せられるのが利点。すべてのデータはツールに同梱されており、ネット接続もサーバー送信もなくブラウザ内で動作します。
Unicode 文字インスペクタ
テキストを 1 文字ずつ分解し、コードポイント (U+XXXX)・10進数・一般カテゴリ (大文字 / 数字 / 記号など)・スクリプト (ラテン / 漢 / ひらがな等)・Unicode ブロック・UTF-8 / UTF-16 のバイト列・HTML 数値文字参照を表示します。サロゲートペア (絵文字) や結合文字、ゼロ幅接合子 (ZWJ)・制御文字・不可視文字も正しく検出してバッジ表示するので、文字化けや「見えない文字」のデバッグに便利。すべてブラウザ内で処理され、入力はサーバーに送信されません。
Markdown ⇄ HTML 変換 — 双方向で往復
Markdown を HTML に、HTML を Markdown に双方向変換します。ブログから WordPress、静的サイトジェネレータへの移行、Web ページから README 化など、フォーマット間の橋渡しに最適。marked と turndown をブラウザ内で実行するので、原稿を外部に送信せずに変換できます。