Slack Desktop および Microsoft Teams のメッセージを、スクリーンリーダーで快適に読めるようにする NVDA アドオンです。
メッセージにフォーカスするだけで、以下の処理が自動的に行われます。
- メッセージ内の URL を、生のアドレスではなく取得したページタイトルで読み上げ
- 絵文字や装飾記号の除去(本文が埋もれない)
- 送信者、本文、リンク、時刻、リアクションなどの整理された順序での読み上げ
- 点字ディスプレイへの加工済みテキスト表示
- NVDA 2025.1 以降(2026年8月時点で 2025.3.3 および 2026.1 で動作確認。いずれも NVDA日本語版)
- Windows 11
- Slack Desktop(2026年8月時点で 4.51.180 で動作確認)
- Microsoft Teams デスクトップアプリ(新しい Teams)
- Releases ページ から最新の
.nvda-addonファイルをダウンロード - ダウンロードしたファイルをダブルクリック(またはEnterキー)
- NVDAのインストール確認ダイアログで「はい」を選択
- NVDAが再起動され、アドオンが有効になります
- NVDA メニュー → ツール → アドオンマネージャー を開く
- 一覧から「Message Sweeper」を選択
- 「削除」ボタンを押す
- NVDAを再起動
特別な操作は不要です。Slack または Teams でメッセージにフォーカスすると、自動的に処理が適用されます。
- NVDA+V: アドオンの有効/無効を切り替え(効果音で通知)
一時的にアドオンを無効にして、Slack や Teams 標準の読み上げに戻したい場合は NVDA+V を押してください。もう一度押すと再び有効になります。
メッセージにフォーカスすると、以下の順序で読み上げられます。
- 送信者名
- メッセージ本文(絵文字や装飾がクリーニングされた状態)
- リンクのタイトル(URLの代わりにページタイトルを読み上げ)
- 時刻
- リアクション数・返信数
リンクのタイトル取得にはインターネット接続が必要です。取得中はメッセージ本文が先に読み上げられ、タイトルが取得でき次第追加で読み上げられます。
メッセージ内の URL を検出し、ページタイトルを取得して読み上げます。
- 生の URL の代わりに「リンク: 記事のタイトル」と読み上げます
- 一度取得したタイトルはキャッシュされるため、同じ URL を含むメッセージへの再フォーカス時は即座に読み上げられます
- Confluence など認証が必要なサービスでも、Slack の展開カード(プレビュー)からタイトルを取得できます
- YouTube 動画のタイトルにも対応しています
X(旧 Twitter)のポスト URL が含まれるメッセージでは、生の URL ではなくツイート本文を読み上げます。Slack ではメッセージ画面に表示されているプレビューカードから本文を取得し、Teams では X の oEmbed API を介してツイート本文を取得します。
装飾の多いメッセージから不要な記号を除去し、本文を聞き取りやすくします。
除去されるもの:
- 連続する絵文字(既定: 3 個以上が連続する場合。しきい値は NVDA 設定 →「Message Sweeper」→「絵文字を省略する連続数のしきい値」から 1〜99 の範囲で変更可能)
- コロン絵文字(:emoji_name: 形式)
- 全角の装飾記号(罫線、幾何学模様、装飾マークなど)
- 長い ASCII 装飾(===== など5文字以上の連続記号)
保持されるもの:
- チャンネル名(#channel)やメンション(@name)
- --- の区切り線
- しきい値未満の連続絵文字(既定では 2 個まで。朝の挨拶で使われる程度の絵文字は残ります)
Slack および Teams のメッセージから言語(日本語/英語)を自動で検出し、それぞれの言語のパターンに合わせて処理を行います。読み上げの言語は NVDA の言語設定に従います。
NVDA メニュー → 設定 → カテゴリ一覧から「Message Sweeper」を選択して変更できます。
- 既定: 3
- 範囲: 1〜99
- この値以上の絵文字が連続している場合に絵文字を除去します。値を小さくするほど積極的に除去されます。
- 既定: メッセージの後
- 選択肢: 読み上げない/メッセージの前/メッセージの後
- 除去された絵文字のサマリー(例:「スキップ: ピカピカ 3 個」)の読み上げ位置を指定します。
- 既定: ホスト名とともに読み上げる
- 選択肢: 読み上げない/「タイトル取得不可」とだけ読み上げる/ホスト名とともに読み上げる/URL をそのまま読み上げる
- タイトル取得に失敗した URL(プライベート IP、ネットワークエラー、HTML 以外のレスポンスなど)の読み上げ方法を選びます。
- 既定: オン
- NVDA+V でアドオンの有効/無効を切り替えたときの通知方法を指定します。オンの場合は効果音、オフの場合は音声で状態を通知します。
テスト時に以下の点にご注意ください。
- リンクのタイトル取得にはインターネット接続が必要です。取得できなかった URL は、デフォルトではホスト名と共に「リンク: example.com (タイトル取得不可)」のように読み上げます。挙動は NVDA 設定 →「Message Sweeper」→「リンクのタイトル取得に失敗したときの読み上げ」から変更できます(読み上げない/タイトル取得不可とだけ読み上げる/ホスト名と共に読み上げる/URL をそのまま読み上げる)
- プライベート IP アドレス(社内ネットワークなど)の URL はセキュリティのためタイトル取得をスキップし、上記の設定に従って読み上げます
- 社内限定のサービス(VPN接続が必要なページなど)は、アドオンからアクセスできずタイトルが取得できない場合があります
- Teams 対応は新しい機能のため、Slack に比べて対応が不十分な部分がある可能性があります
使ってみて気づいたことがあれば、ぜひお知らせください。
- 読み上げが不自然な箇所
- 期待どおりに動作しなかった場面
- こうなるともっと便利、という改善アイデア
連絡先: message-sweeper@kinto-technologies.com
このアドオンは NVDA 本体に合わせて GNU General Public License v2.0 (GPLv2) の下で公開されています。
- ライセンス全文: リポジトリ内の LICENSE ファイルを参照してください
- ソースコード: https://github.com/kinto-technologies/message-sweeper
本ソフトウェアは現状のまま提供され、明示または黙示を問わず、いかなる保証も行いません。詳細はLICENSEファイルの「NO WARRANTY」条項をご覧ください。
本アドオンは Slack Technologies, LLC および Microsoft Corporation とは無関係の独立したサードパーティソフトウェアです。SlackおよびMicrosoft Teamsは各社の商標です。
Copyright (C) 2026 KINTO Technologies Corporation