長編小説サイト(特に「小説家になろう」「ハーメルン」など)を読んでいると、
- 文章量が多くて目が疲れる
- 手が離せないときでも続きを聞きたい
- 次ページへの遷移が地味に面倒
そんな不満を解消するために、
「行頭が 全角スペース or 「 or 『 で始まる行だけを自動で抽出して読み上げ、
ページ末まで読んだら next リンクを自動クリックして次ページまで読み続けてくれる」
Chrome 拡張を作りました。
▶ 対象となる小説(読み上げ可能な条件)
この拡張では次のような行頭ルールの小説を前提としています。
・各行が
- 全角スペース( )
- または 「
- または 『
で始まっていること。
例)
「おはようございます」
『システムメッセージ:起床時間です』
今日は良い天気だ。
この行は読まれない
上記の例では、
「おはようございます」と「システムメッセージ」と「今日は良い天気だ。」だけが読み上げ対象になります。
非常に重要な点として、
【小説家になろう】
【ハーメルン】
などの代表的な小説投稿サイトでは、
各行の先頭に全角スペースが入りやすい文章構造となっているため、
この Chrome 拡張で問題なく読み上げ可能であると考えています。
(もちろん作品によって文体は多少異なりますが、
基本的に “全角スペースから始まる改行” が本文の構造として多いため、
対象行抽出ロジックと非常に相性が良いです。)
▶ 拡張の主な機能
・行頭が「全角スペース or 「 or 『」の行だけを抽出して読み上げ
・読み上げ中の行を自動で選択(ハイライト)
・読み上げ行の位置まで自動スクロール(画面中央より少し下)
・最後まで読み終えたら next リンク(class="next" 等)を自動クリック
・次ページ読み込み完了を検知して、そのまま読み上げを継続
・読み上げ速度の調整機能(デフォルトは 2)
・ストリーミング読み上げ
・拡張の「読み上げ開始」ボタンでいつでも開始可能
▶ どんな場面で便利?
・ストレッチしながら小説を聞きたい
・家事をしながら物語の続きを聴きたい
・通勤中でも続きを読みたい
・長編の “次ページ” ボタン連打から解放されたい
など、「読み上げ × 自動ページ送り」が欲しい場面でかなり便利です。
▶ 動作の仕組み(概要)
- 現在のタブに content.js を注入
- ページ内のテキストノードを全て走査
- 改行ごとに分解し、
・先頭が「全角スペース or 「 or 『」の行だけを抽出 - Chrome TTS(音声読み上げ)で順番に読み上げ
- 読み上げ中の行を自動で選択+スクロール
- 最後まで終わったら next リンクを探してクリック
- 次ページ読み込み完了を Chrome が検知
- 再び本文抽出 → 読み上げ開始
という流れでループします。
▶ 実装したファイル構成(概要)
manifest.json
background.js
content.js
popup.html
popup.js
を使った Manifest V3 Chrome 拡張です。
「Chrome TTS + スクリプトの動的注入 + ページ遷移監視」の組み合わせで実現しています。
下記の URL で各ファイルを公開しています。
▶ 拡張機能の読み込み方法
Chromeで以下を実行します。
-
chrome://extensions/を開く - 右上の「デベロッパーモード」を ON
- 「パッケージ化されていない拡張機能を読み込む」をクリック
- このサイト からダウンロードしたフォルダ(novel-reader)を選択
これでブラウザ右上に新しいアイコンが追加されます。
「ピン留め」するとワンクリックでアクセスできて便利です。
▶ まとめ
この Chrome 拡張を使うことで、
・行頭に「全角スペース or 「 or 『」が入っている形式の小説はすべて読み上げ可能
・特に「小説家になろう」「ハーメルン」などのサイトと相性が良い
・読み上げながら next ページも自動で進むため、完全ハンズフリーで長編が読める
という快適な読書環境が手に入ります。
興味がある方は、ぜひ自分の環境でも試してみてください。