Np-Urのデータ分析教室

オーブンソースデータなどWeb上から入手できるデータを用いて、RとPython両方使って分析した結果を書いていきます

「あと5分だけ...」が止められないあなたへ。特定サイトの閲覧時間を制限するChrome拡張機能を作りました

SNS閲覧中に制限時間になった様子

今回、特定のウェブサイトの閲覧時間を制限する(1日5分など)Chrome拡張機能を作りました。

chromewebstore.google.com

使い方は簡単で、Chromeにインストールして、制限したいサイト(XやYouTubeなど)と1日の上限時間を設定するだけ。上限を超えると自動でブロック画面が表示されます。

経緯や詳しい使い方など書いているので、同じ悩みを持つ方(たぶん、エンジニア全員だと思う)はぜひ読んで、使ってみてください!ソースコードも公開しています。

発端:やる気はあるのに、なぜか進まない夜

「なんか新しい技術のインプットしたいな」
「なんだったら、ZennかQiitaに投稿しちゃおうかな」

そんな意識の高さから、平日の夜にパソコンを開く。

「よし、やるぞ!...まず情報収集だ。Xで関連ツイートを見ておこう」
「お、この人の記事よさそう」
「へー、こんなライブラリあるんだ」
「...ん? この炎上なに?」
「…この漫画面白そう」

気づいたら30分経っている。

「いやいや、こんなことしている場合じゃない」

気を取り直して作業を開始する。集中するためにYouTubeで作業用BGMをかけよう。

おすすめに出てきたShortsが気になる。1本だけ...

気づいたら30分経っている。

やっと作業に取りかかる。Claude Codeに指示を出す。返答待ちの時間にちょっとだけXを...気づいたら30分経っている。

SNSを見過ぎて、気づいたら時間が経って困った様子

意志の力? では解決しない謎の引力

やる気はある。モチベーションもある。

なのに、なぜか手が動かない。謎の引力に吸い込まれていく。これは、恐らく多くの人が経験しているはず。

相手は、天才たちが作ったアルゴリズムと操作性。
人類はショート動画とSNSのアルゴリズムに意思の力だけで勝てるようには設計されていない。

特に最近はAIツールも増えて、返答待ちという「隙間時間」が増えている。
それこそXでは、「その隙間時間を使ってマルチタスク!」なんてキラキラした投稿も見かけるけど、実際はそんなにうまくいくはずない。

じゃあどうするか。

テクノロジーにはテクノロジーで対抗するしかない

新しい機能を作っているイメージ

解決策:自分で制限をかける拡張機能を作る

そこで、根本の原因から対策を取ることにしました!

SNSやYouTubeのスマホアプリについては、強硬手段ですがアンインストールすれば解決します。私もそこは対策済みで、それだけでだいぶ「ついスマホを触ってしまう」時間が減りました。
しかし、問題はPCでの閲覧です。ブラウザがあれば、簡単にアクセスできてしまいます。

閲覧をブロックする系の拡張機能は既にあるので試そうかと思ったのですが、指定したサイトを完全にブロックするタイプばかりでした。また、Chrome拡張をあまりよく分からずインストールするのはちょっと怖いので、安心安全に自作することに決めました。

私が欲しかったのは完全ブロックではなく、「ちょっとは見たい。でもダラダラ見続けるのは止めたい」という微妙なニーズに応えるものです。

理由はいくつかありますが、例えば以下のようなものがあります。

  • Xには技術情報も流れてくるので、完全に見ないわけにはいかない
  • YouTubeで調べ物をすることもある
  • 「見ちゃダメ」と言われると逆に見たくなる(カリギュラ効果)

必要なのは「禁止」ではなく「制限」です。この微妙なニーズに応える拡張機能が見つからなかったので、自分で作ることにしました。
イメージは、「ゲームは1日30分まで!」と親に言われていた子供時代のような感じです。

「Just 5 Minutes」の概要

作成したのは「Just 5 Minutes」というChrome拡張機能です。

chromewebstore.google.com

名前の由来は「5分だけ見よう」という自分への言い訳を、本当に5分で終わらせるというコンセプトからきています。

主な機能

  1. 対象サイトの登録: YouTube ShortsやXなど、制限したいサイトをドメイン単位で登録できます
    • ドメインに対して、前方一致や正規表現でのURLパスを指定します
  2. 閲覧上限の設定: 1日あたりの閲覧可能時間を分単位で設定できます(デフォルトは5分)
  3. 自動ブロック: 上限を超えるとブロック画面にリダイレクトされます
  4. 日次リセット: 毎日0時に使用時間がリセットされます

完全ブロックではなく「1日◯分まではOK」という設計にしたことで、必要な情報収集は可能にしつつ、ダラダラ見続けることを防止できます。

使い方

まず、Chromeウェブストアから「Just 5 Minutes」をインストールします。

次に、拡張機能のオプションページで、制限したいドメインと1日あたりの閲覧上限時間を設定します。

Just 5 Minutes の設定画面
Just 5 Minutes の設定画面

まず、ドメインを設定して、その後その中でどのページを制限したいかを決めます。ページの指定は、前方一致と正規表現が使えます。 デフォルトでは、Xドメイン全体と、YouTubeドメインの /shorts/ というパスに対して、制限をかける設定が入っています。

設定が完了したら、あとは普段通りにブラウザを使うだけです。設定したドメインの閲覧時間が上限に達すると、自動的にブロック画面にリダイレクトされます。

Just 5 Minutes のブロックページ
Just 5 Minutes のブロックページ

どのくらい使用しているかや、残り時間は拡張機能使用中にアイコンをクリックすると確認できます。また、アイコンから設定ページにもアクセス可能です。

Just 5 Minutes のポップアップ
Just 5 Minutes のポップアップ

制限の回避について

「解除ボタン」や「今日だけ延長」といった機能は実装していません。
どうしても必要な場合は拡張機能を一時的に無効化したりシークレットモードで開けば回避できるので、それで対応してください。

技術的な実装について

技術面の解説については、もし本ブログを読んで、作り方に興味がある人がいそうだったら、別途詳しく書く予定です。

Claude Codeと一緒に要件固めてからの実装は一瞬でした。皆さんもすぐ、同じようなものを作れると思います。

ソースコード

プログラムはすべてGitHubで公開しています。

github.com

何か改善点や追加機能のアイデアがあれば、ぜひプルリクエストやイシューを送ってください!

使用効果

最後に、私自身がこの拡張機能を使い始めてからの効果について共有します。

導入前は、本記事の冒頭で書いたように、作業を始めようとしても脱線し、気づけば数十分経過していることがありました。

導入後は、惰性で眺め続けることがなくなりました。「〇分しかない」と意識することで、本当に必要なアクションだけをする、という行動が自然とできるようになりました。

まとめ

「意志の力で我慢する」のではなく「仕組みで制限する」というアプローチで、時間浪費の問題に対処しました。

同じく時間泥棒サイトに悩んでいる方、ぜひ使ってみてください。あるいは、自分なりにカスタマイズしてもっと厳しい機能や面白い機能を追加してみてください!


この記事を書いている間も、Xのタブを開こうとして3回ブロックされました。ちゃんと動いてます。