1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Youtubeの英語字幕から難しい単語だけハイライトする拡張機能を作った

1
Last updated at Posted at 2026-04-24

動機

これまで使っていたYouTubeの二重字幕拡張機能が使えなくなり、エラーの原因を調べているうちに「拡張機能ってどうやって作るんだろう」と興味を持ち、勉強も兼ねて自作してみることにしました。


作ったもの

YouTubeの英語字幕の中から「難しい英単語」だけをハイライトする拡張機能を作りました。

  • 難しい単語のみを強調表示
  • マウスホバーで日本語の意味を表示

デモ

YouTube字幕上で難単語がハイライトされ、ホバーで意味が表示される様子です。demo.gif


技術

  • TypeScript
  • Chrome Extension(Manifest V3)
  • Plasmo

実装と課題

1. 難単語データの作成

難単語を検出するには、まず基準となる単語データが必要です。
しかし「何をもって難しいとするか」の定義に悩みました。

調べたところ、英語にはCEFR(言語能力の国際指標)があるため、これを基準にすることにしました。

使用したデータセット:
https://github.com/Maximax67/Words-CEFR-Dataset

このデータセットは以下のような形式で、単語と難易度(A1〜C2)が紐づいています。

headword;pos;CEFR;CoreInventory 1;CoreInventory 2;Threshold
a;determiner;A1;;;
a.m.;adverb;A1;;;

今回は B1以上(英検準1級相当) の単語を抽出して使用しました。


しかし、このデータだけでは語彙数が不足していました。
そこで、単語頻度ベースのデータも追加しました。

このデータセットは単語の出現頻度をランキング化したもので、上位ほどよく使われる単語です。
ここから「低頻度の単語」を抽出することで、難単語を補完できると考えました。


最終的に、

  • CEFRベースの難単語
  • 低頻度単語

を統合し、さらにDeepL APIを用いて日本語訳を付与しました。


結果と問題点

実際に使ってみると、いくつか問題がありました。

  • 簡単な単語が混ざってしまう
  • カバー範囲がまだ不十分
  • 文脈なし翻訳のため日本語訳が不自然
  • 動詞の活用(-ing, -ed など)に十分対応できていない

特に単語の正規化(normalize)は大きな課題です。
本来はNLPの手法(lemmatizationなど)を使うべきですが、

  • 拡張機能の容量増加
  • 処理速度の低下

を懸念し、今回は簡易的に語尾を削る実装にとどめました。

また、辞書データは権利関係が複雑なため公開は控えています。


2. JavaScript → TypeScript への移行

開発当初はJavaScriptの知識がほとんどなかったため、
ChatGPTにコードを書いてもらいながら動作確認をしていました。

ただしこの方法だと、

  • 拡張機能のリロード
  • YouTubeページの再読み込み

を毎回行う必要があり、開発効率が悪いという問題がありました。

そこで調べた結果、Plasmo + TypeScript が良いと知り、作り直しました。


Plasmoの利点

  • ファイル保存で自動リロード
  • 開発体験が大幅に向上

細かい修正をすぐに確認できるため、かなり快適になりました。


GitHub


おわりに

TypeScriptの良い学習になりましたが、バグ修正などに時間がかかり、完成まで約1か月かかりました。

今後は、

  • 単語保存機能の追加
  • 辞書精度の改善

などを進めていきたいと考えています。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?