

現代の情報社会において、特定のウェブサイトやオンラインショップの変更をリアルタイムで把握することは、ビジネス戦略や個人のリサーチにおいて極めて重要な要素となっています。例えば、限定品の在庫切れを逃さないため、あるいは気になる商品の価格変動を即座にキャッチするためには、手動でのチェックは非効率であり、自動化ツールの存在が不可欠です。しかし、既存のクラウド型監視サービスは月額料金の負担やプライバシー懸念から、長期運用に向かないケースも少なくありません。そこで注目されるのが、オープンソースで高機能な「ChangeDetection.io」をサーバー上で動作させるセルフホスト型の構築方法です。
本記事では、2026 年 4 月時点の最新バージョンである v0.47+ を基準に、ChangeDetection.io の完全なセルフホスト環境の構築手順から、高度な設定までを網羅的に解説します。単なる導入ガイドにとどまらず、Docker Compose を用いたデプロイ方法、JavaScript で動的に読み込まれるページの対応策としての Playwright Chromium Browser 統合、CSS セレクタや XPath を活用した精密なフィルタリング手法について詳細に触れます。また、Slack や Discord、Telegram といった主要チャットツールへの通知設定、価格追跡や在庫通知などの具体的な実運用事例、そして競合サービスとの比較まで、読者が即座に実践に移せるレベルの情報を提供します。
ウェブページの監視には、単にページが更新されたかどうかだけでなく、「どの部分が変更され、その変化が重要なのか」を見極める能力が必要です。本記事で解説する ChangeDetection.io は、テキスト差分表示機能や視覚的なフィルタリング機能を備えており、ノイズとなる広告やバナーを除外して重要な情報のみを検知できます。さらに、Apprise という仕組みを活用することで通知先を 80 以上も選択可能であり、自前のサーバーに Webhook を設定するなどの高度な自動化にも対応しています。本ガイドを通じて、あなた専用の監視インフラを構築し、デジタル空間における「目」を増やしていきましょう。
ChangeDetection.io は、ウェブページの変更を検知し、通知を送信するためのオープンソースの監視ツールです。このツールの特徴は、その軽量さと柔軟性にあり、ローカル環境からクラウドサーバーまで、あらゆる場所で動作させることができます。2026 年時点でバージョン 0.47 を超える最新リビジョンでは、従来の静的 HTML の解析に加え、JavaScript を実行できるヘッドレスブラウザの統合オプションが強化されており、現代の複雑なウェブサイトをより正確に監視することが可能になっています。
このツールの基本的な動作原理はシンプルですが、実装は巧妙です。ユーザーは監視対象の URL と、検出したい特定の情報(例えば商品価格や在庫ボタン)を定義します。システムはその間隔(5 分〜日次まで可変)で指定されたページへアクセスし、HTML の構造やテキスト内容を比較します。前回のレスポンスと現在のレスポンスを差分計算し、何らかの変化があった場合にのみユーザーに通知を送信する仕組みです。これにより、サーバーのリソースを浪費することなく、必要な情報のみを得ることができます。
セルフホスト型であるため、データの管理権限は完全に利用者にあります。監視対象のページから取得したデータやログ、差分履歴などはすべてあなたの所有するストレージ上に保存されます。これは、個人情報を扱う場合や機密性の高い価格データを扱うビジネスにおいて大きなメリットとなります。また、オープンソースコミュニティによる活発な開発が続いており、2026 年現在は Docker コンテナ化が標準的に行われているため、環境依存のトラブルが非常に少ない設計となっています。以下に、ChangeDetection.io の主な機能をまとめた表を示します。
| 機能項目 | 詳細説明 |
|---|---|
| 監視間隔 | 5 分ごとの短時間から 24 時間ごとの日次まで設定可能。サーバー負荷に応じて調整。 |
| 変更検知 | HTML 構造、テキストコンテンツ、JSON データなど多様な形式に対応。 |
| 通知機能 | Slack, Discord, Telegram, Email, Webhook など多彩なサービスへ対応。Apprise 経由で 80+ サービス利用可能。 |
| フィルタリング | CSS セレクタ、XPath、Visual Selector を用いて特定領域のみを監視対象に絞り込み。 |
| JavaScript 対応 | Playwright Chromium (Headless) モードにより、動的な DOM 変更を含むページも監視可能。 |
| 価格・在庫追跡 | 特定の HTML タグ内のテキスト抽出や数値比較を行い、変動アラートを発動。 |
このように、ChangeDetection.io は単なる「ping」ツールを超え、ウェブコンテンツの構造的変化を深く理解する能力を持っています。特に v0.47+ では、UI の改善や設定項目の整理が行われ、初心者が直感的に操作しやすいインターフェースへと進化しています。
近年では、SaaS 型のウェブ監視サービスが多数存在します。例えば Visualping や Distill Web Monitor のようなサービスは、初期費用がかからず手軽に登録できるのが特徴です。しかし、これらは「外部のサーバー」を利用するものであるため、データのプライバシーやコスト面で課題が残ります。特に、特定のニュースサイトや市場価格を頻繁に監視する場合、SaaS 型プランでは上限チェック数に達して有料化されるリスクがあります。一方、ChangeDetection.io をセルフホストすることで、これらの制約から解放されます。
セルフホストの最大の利点は「コストの固定化」です。Docker コンテナとして動作させるため、通常の VPS や NAS、あるいは自宅の Raspberry Pi などの低スペックな環境でも運用可能です。利用するサーバー自体のコストはかかりますが、監視回数の制限や通知先の数量に縛られません。つまり、100 のページを 5 分ごとに監視しようとも、2000 のページを監視しようととも、追加費用が発生しないのです。これは、大量のデータを扱うアフィリエイターや、複数店舗を管理する e コマース運営者にとって決定的なメリットとなります。
また、プライバシーとセキュリティの観点からもセルフホストは優れています。SaaS 型サービスの場合、監視対象の URL や取得したデータがプロバイダ側に送信され、ログとして保存される可能性があります。ChangeDetection.io を自分のサーバーに置くことで、取得したデータや差分履歴をすべて暗号化して管理できます。さらに、2FA(二要素認証)機能を有効化することで、不正アクセスからアカウントを守ることも可能です。2026 年現在、データ主権に関する法規制が強化される中で、自前でデータを管理するスタイルはセキュリティ対策の基準として高く評価されています。
ChangeDetection.io を構築するために必要な環境について詳しく解説します。最低限のハードウェア要件を満たしていない場合、監視タスクが実行されなかったり、システムが不安定になったりするリスクがあります。特に v0.47+ では Playwright モードを使用する場合、メモリ消費量が増加する傾向があるため、適切なリソース割り当てが求められます。
まず、必要となるのは Docker 環境です。Docker Engine のバージョンは 20 以上を推奨します。これは、コンテナイメージのセキュリティパッチや新機能に対応するためであり、古いバージョンではビルドに失敗したり、ネットワーク設定の不具合が発生したりする可能性があります。また、Docker Compose も同様に最新安定版(v2.x 以降)をインストールしておくことが必須です。これにより、複数のコンテナ(アプリ本体とデータベースなど)を管理しやすくなります。
リソース要件としては、CPU はコア数 1 以上で十分ですが、Playwright を使用して JavaScript レンダリングが必要なページを監視する場合は、メモリが 2GB 以上あることを強く推奨します。特に大量のページ(50 ページ以上)を同時監視する場合、コンテナごとに分離されたプロセスが実行されるため、メモリの圧迫に注意が必要です。ストレージについては、過去ログの保存場所として最低でも 10GB の空き容量を確保してください。監視履歴は時間経過とともに蓄積されますので、長期運用では定期的なバックアップまたはローテーション設定が重要になります。
| 項目 | 推奨仕様 | 最低要件 | 備考 |
|---|---|---|---|
| CPU | コア数 2 以上 | コア数 1 | Playwright モード時は負荷増大 |
| メモリ (RAM) | 4GB 以上 | 2GB | コンテナと OS のオーバーヘッド考慮 |
| ストレージ (HDD/SSD) | 50GB SSD | 10GB HDD | ログ蓄積による容量増加を想定 |
| OS | Linux (Ubuntu/Debian) | Windows/macOS | Docker 互換環境であれば可 |
また、外部との通信に問題がないことを確認しておく必要があります。ChangeDetection.io は、監視対象のウェブサイトに接続してデータを取得するため、アウトバウンド(外部への)通信が必要になります。ファイアウォール設定で特定の IP アドレスやポートがブロックされていないか事前に確認してください。さらに、監視先サイトから IP ブロックされないよう、プロキシ機能の使用を検討する場合も、そのためのネットワーク環境を整えておく必要があります。
ここからは具体的なインストール手順を解説します。ChangeDetection.io の公式イメージは Docker Hub で提供されており、Docker Compose を使用することで、一発で必要なコンテナ群を起動できます。この方法により、手動での依存関係設定や環境変数の管理が自動化され、再現性の高い環境構築が可能になります。
まず、サーバー上に監視用ディレクトリを作成し、その中に docker-compose.yml ファイルを配置します。以下は v0.47+ に対応した標準的な構成例です。このファイルには、ChangeDetection.io の本体コンテナと、データ保存用のボリューム設定が含まれています。
version: '3'
services:
changedetection.io:
image: ghcr.io/dgtlmoon/changedetection.io
container_name: cdio_monitor
restart: always
ports:
- "5000:5000" # ホストのポート 5000 をコンテナの 5000 にマッピング
volumes:
- ./datastore:/shared/datastore # 設定と履歴を保存するボリューム
environment:
- PUID=1000
- PGID=1000
- PLAYWRIGHT_HEADLESS_BROWSER=true # Playwright を使用する場合のフラグ
- API_KEY_SECRET_KEY=my_secure_secret_key_change_this_later # 初期設定用(変更推奨)
volumes:
datastore:
この docker-compose.yml ファイルを保存し、ターミナルからディレクトリへ移動して docker compose up -d を実行します。このコマンドで、コンテナが起動し、監視サービスの Web インターフェースにアクセスできるようになります。通常はブラウザで http://サーバーIP:5000 にアクセスして初期設定画面が表示されます。
重要なのは、環境変数によるカスタマイズです。PLAYWRIGHT_HEADLESS_BROWSER=true は、JavaScript レンダリングが必要なページに対応させるための重要なフラグです。また、API_KEY_SECRET_KEY には必ずランダムな文字列を指定し、デフォルトの値のままにしないようにしてください。セキュリティ上、初期設定後には本番用のキーへ変更することを強く推奨します。
もしプロキシを使用する場合や、特定のユーザー権限で実行したい場合は、このファイル内で environment 項目を追加することで対応可能です。例えば、SOCKS5 プロキシ経由で通信を行うためには、PROXY_URL という環境変数を指定するオプションがあります(詳細は後述のセキュリティセクションを参照)。
インストール完了後、コンテナの状態を確認するには docker compose ps コマンドを使用します。「Up」ステータスが表示されれば正常起動です。ただし、Playwright モードを使用している場合、初期化に数分かかることがあるため、最初の監視タスクが開始されるまで少し待機してください。ログの確認には docker compose logs -f changedetection.io が有効です。
インストール後、実際に監視対象を登録し、詳細な設定を行う手順について解説します。ChangeDetection.io の強みは、単なる URL 監視だけでなく、「特定の要素」のみを追跡できる点にあります。これにより、サイトのデザインが変更されても重要な情報が検知されないといったミスを防げます。
まず、監視を追加する画面で「URL」を入力し、次に「Watch Type(監視タイプ)」を選択します。通常は「Standard watch」を使用しますが、特定のデータ構造を持つサイトには「JSON Watch」や「XPath Watch」の使用が推奨されます。例えば、EC サイトの価格欄を監視する場合、その要素に class="price" という CSS クラスが付与されているなら、CSS セレクタで指定することで正確に抽出できます。
設定画面にある「Filter(フィルター)」フィールドには、監視したいテキストや HTML の一部を入力します。例えば、Amazon の商品ページなどで価格のみを検知したい場合、「.a-price .a-color-base」のような CSS セレクタを使用します。逆に、監視しない領域を除外する場合は「!」記号で開始して CSS クラスを指定することで、広告やバナーの表示変動をノイズとして除くことが可能です。
| フィールド | 役割 | 使用例 |
|---|---|---|
| URL | 監視対象のウェブサイトアドレス | https://www.example.com/product/12345 |
| Filter | 検出対象を絞り込む CSS/XPath 指定 | #price-block (ID) または .product-price (Class) |
| Exclude Filter | 除外する領域(ノイズ除去) | .advertisement, .sidebar-widget |
| Check interval | 監視間隔 | 3600 (秒単位での指定可能、デフォルトは分単位) |
また、監視間隔の設定も重要な要素です。デフォルトでは 5 分ごとにチェックされますが、負荷を軽減したい場合は 1 時間や日次に変更可能です。逆に、価格変動の激しい商品や在庫切れのリスクが高い場合は、30 秒や 1 分といった短時間設定が可能ですが、サーバー負荷と監視先サイトのアクセス制限に注意が必要です。
さらに、v0.47+ では「Visual Selector」機能が強化されています。これはブラウザ上からマウスでクリックして検知領域を指定する機能です。非エンジニアでも直感的に監視対象を設定できるため、CSS や XPath の知識がないユーザーにも非常に有用です。ただし、動的に変化するレイアウトの場合は、安定した ID ではなくクラス名やテキスト内容での指定の方が長期的な運用には向いています。
現代のウェブサイトは、静的 HTML のみで構成されていることは稀です。多くのページが JavaScript を使用してコンテンツを読み込み、ユーザーとのインタラクションによって表示が変わります。従来の監視ツールでは、JavaScript が実行される前にスクレイピングを行うため、実際に表示されているデータ(例えば非同期で読み込まれた価格)を検知できないという問題がありました。ChangeDetection.io では v0.47+ において Playwright Chromium Browser (Headless) モードが標準的にサポートされており、この課題を解決しています。
Playwright を使用することで、実際にブラウザが起動し、JavaScript が実行された後の DOM(ドキュメントオブジェクトモデル)の状態を取得します。これにより、「読み込みボタンを押した後に表示されるデータ」や「スクロールすると追加されるコンテンツ」の検知も可能になります。ただし、このモードはリソース消費が大きくなるため、設定する前に慎重な検討が必要です。
Playwright モードを有効にするには、前述の設定画面で Watch Type を「JSON Watch」または「Standard watch」に選択し、オプションとして Playwright ブラウザを使用するフラグを立てます。また、環境変数 PLAYWRIGHT_HEADLESS_BROWSER=true を設定することで、GUI 表示のないヘッドレスモードで動作させ、リソースを節約できます。
ただし注意点もあります。Playwright モードでは、サイトの反スクレイピング対策(CAPTCHA や IP ブロック)により検知が阻害される可能性があります。この場合、プロキシ機能を活用して IP 輪転を行う必要があります。また、JavaScript の実行に時間を要するサイトの場合、チェック間隔を短く設定しすぎるとタイムアウトエラーが発生することがあります。
DOM の扱いにおいて重要なのは「安定性」です。JavaScript で再レンダリングされる DOM ツリーは、クラス名や ID が動的に生成される場合があり、フィルタリングが困難になることがあります。この場合、テキスト内容によるマッチング(Text Filter)の方が頑健な場合があります。例えば、「在庫あり」という文字列が含まれていれば正常とみなす設定などです。
また、特定のフレーム(iframe)内にあるデータを監視する場合は、Playwright の DOM ノード選択機能を活用し、親フレームから子フレームへ遷移して要素を特定する必要があります。ChangeDetection.io の設定画面では、この階層構造を指定するためのオプションが用意されていますが、複雑なフレーム構成の場合は、CSS セレクタで iframe の ID を含むパスを指定するのが確実です。
監視結果を受け取る際、変更がないのに通知が来る「ノイズ」は非常にストレスとなります。ChangeDetection.io は強力なフィルタリング機能と差分表示機能を備えており、必要な変化のみを抽出できます。
まず、「Text diff(テキスト差分)」の仕組みについてです。システムは前回のチェック時と今回のチェック時の HTML 内容を比較し、変更があった部分のみをハイライトして通知します。これにより、ページ全体が更新されたのか、特定の価格や在庫数だけが更新されたのかを即座に判断できます。
フィルタリング機能では、「Filter」フィールドで監視対象のテキストを指定する他、「Exclude Filter(除外フィルター)」を使用することでノイズ除去が可能です。例えば、ニュースサイトでは本文は重要ですが、広告バナーや関連記事リンクは不要です。CSS クラス名 .ad-banner や .related-posts を「! .ad-banner」のように指定して除外リストに追加すれば、これらの変動による通知を防げます。
| フィルタリング機能 | 使用方法 | メリット |
|---|---|---|
| Text Filter | price: $100 のようにテキストを検索 | 特定キーワードの出現を即座に検知 |
| CSS Selector | .product-title::text のような指定 | 構造的な位置から正確に要素を抽出 |
| XPath | /html/body/div[2]/span/text() | 複雑な DOM ツリー構造への対応が可能 |
| Visual Selector | マウスクリックで領域選択 | ユーザーの直感的な操作で設定可能 |
また、差分表示には「Diff Highlight」機能もあります。これは通知メールや Webhook データにおいて、変更前と変更後のテキストを色付き(赤が削除、緑が追加)で表示する機能です。これにより、価格が $100 から $95 に下がったのか、$100 から $200 に上がったのかを一目で把握できます。
さらに高度な設定として、「JSON Path」フィルタリングがあります。API 経由でデータを取得する場合や、JSON 形式で返されるデータ構造を持つサイトには非常に有効です。$.data[0].price のように JSON パスを指定することで、複雑な階層構造から特定の値のみを抽出できます。
ノイズ除去のテクニックとして、定期的に変化する「日付表示」や「広告 ID」を除外する設定も重要です。例えば、ヘッダーに現在の日時が表示されている場合、毎日の更新で通知が来ます。これを防ぐには、日時表示の DOM 構造が固定されているかを確認し、該当要素を除外フィルターに追加するか、監視間隔を調整する必要があります。
ChangeDetection.io の真価が発揮されるのは、検知した情報をどこへ送るかにあります。ツールは「Apprise」というライブラリとの統合により、80 以上の通知サービスに対応しています。これにより、Slack や Discord といったチャットツールから、Telegram や Email まで、あらゆる手段で即座にアラートを発信できます。
まず、主要なチャットツールの設定方法について解説します。Slack を利用する場合、アプリ内の「Incoming Webhooks」機能から Webhook URL を発行し、ChangeDetection.io の通知設定欄に入力します。Discord も同様で、チャンネルの権限設定で Webhook を作成して URL をコピーし貼るだけで完了します。Telegram は公式ボットを作成し、トークンと Chat ID を取得して設定します。
| 通知先サービス | 必要な情報 | 特徴 |
|---|---|---|
| Slack | Webhook URL | チャンネル指定が可能、ビジネス用途に最適 |
| Discord | Webhook URL | 個人サーバーでの運用に適し、埋め込み表示が漂亮 |
| Telegram | Bot Token & Chat ID | モバイル通知が即時、暗号化通信対応 |
| Email (SMTP) | SMTP サーバー情報・認証情報 | 従来のメール形式、履歴管理が容易 |
| ntfy.sh | トピック名 | サーバー不要の Pub/Sub サービス、簡易設定可能 |
Apprise を活用することで、複数の通知先を同時に指定する「マルチ通知」も可能です。例えば、「重要な価格変動は Slack で通知し、在庫切れは Telegram と Email の両方で警告する」といった柔軟なルール設定が可能です。
Webhook 機能も充実しており、外部の自動化ツール(Zapier や Make、Home Assistant など)と連携できます。ChangeDetection.io は、検知が発生した際に HTTP POST リクエストを指定した URL に送信します。これにより、検知時に自動的に API を呼び出したり、データベースを更新したりする高度なワークフローを構築可能です。
通知の頻度制御も重要です。同じページで 1 分ごとに価格変動があった場合、毎回通知が来ると迷惑になります。ChangeDetection.io では「Notification Cooldown(通知クールダウン)」機能を有効にできます。これは、検知後一定時間(デフォルトは数分)経たないと再度通知しない機能であり、スパム防止に役立ちます。
また、通知メッセージのカスタマイズも可能です。テンプレート変数を使用して、監視対象の URL や変更前の値、変更後の値を自由に組み合わせることができます。これにより、「商品名:[title] が [old_price] から [new_price] になりました」といった詳細な通知文を作成できます。
サーバー上で運用する場合、セキュリティと接続安定性は重要な課題です。ChangeDetection.io は基本的な認証機能を備えていますが、さらに安全性を高めるための設定が可能です。また、監視先サイトからの IP ブロック回避のため、プロキシ機能も活用できます。
まず、2FA(二要素認証)の導入についてです。v0.47+ では管理画面から 2FA を有効化できるようになっています。これにより、パスワードだけ盗まれた場合でもログインを防ぐことができます。設定はアカウントのセキュリティセクションで行い、Authenticator アプリ(Google Authenticator や Authy など)を紐付ける手順に従います。
次に、外部からのアクセス制限です。ChangeDetection.io のポート(デフォルト 5000)を直接インターネットに公開するのはリスクがあります。Nginx や Caddy などのリバースプロキシを設定し、HTTPS 化を行うことが推奨されます。また、特定の IP アドレスのみからアクセス許可する設定や、API キーによる認証を必須にする設定も可能です。
セキュリティ強化の項目として以下の表にまとめます。
| セキュリティ対策 | 設定方法 | 効果 |
|---|---|---|
| 2FA 認証 | Web UI セキュリティセクションで有効化 | パスワード漏洩時の侵入防止 |
| リバースプロキシ | Nginx/Caddy による HTTPS 設定 | 通信の暗号化、SSL 証明書管理 |
| API キー管理 | 環境変数 API_KEY_SECRET_KEY の設定 | API 経由操作の認証強化 |
| IP 制限 | ファイアウォールまたはリバースプロキシ設定 | 不正アクセスのブロック |
さらに、プロキシ機能について解説します。監視先のウェブサイトが IP ブロックを行ってきた場合、ChangeDetection.io からのリクエストが拒絶され、検知ができなくなります。これを回避するために、外部のプロキシサーバーを経由させることができます。環境変数 PROXY_URL を使用して SOCKS5 や HTTP プロキシを指定可能です。
例えば、BrightData(旧 Luminati)や Smartproxy などのプロバイダを利用する場合、認証情報を含む URL で設定を行います。また、自宅のネットワークから監視を行う場合、ISP から IP が固定されていないことがあり、動的な IP アドレスによるブロック対策としても役立ちます。ただし、プロキシを使用すると通信速度が低下し、チェック間隔が長くなる可能性があるため、バランスを見ながら設定する必要があります。
理論的な知識だけでなく、実際にどのように運用するかを示す具体例を解説します。ここでは代表的な 4 つのユースケースについて、具体的な設定方法と留意点を紹介します。
1. Amazon 価格追跡
Amazon の商品ページは複雑な構造を持つため、CSS セレクタの指定が重要です。#priceblock_ourprice や .a-color-price といったクラス名をフィルタリングに使用します。また、在庫状況(「在庫あり」や「予約品」)も重要な情報です。これらを検知し、価格が下がった時や在庫が入った時に通知されるように設定します。注意点は Amazon の反スクレイピング対策で、チェック間隔を短すぎないことと、プロキシの使用検討です。
2. ブログ RSS 代替としての利用 ブログの更新を監視する際、RSS フィードを取得するのが一般的ですが、RSS を提供していないサイトもあります。ChangeDetection.io は HTML そのものを取得して変更を検知するため、RSS がなくても機能します。例えば、特定の投稿タイトルや「公開日」タグが追加されたことを検知し、新しい記事が出た時だけ通知を受け取る設定が可能です。
3. ニュースサイト監視
特定のトピックに関するニュースを素早くキャッチしたい場合、ニュースサイトのトップページを検索ワードでフィルタリングします。#news-title などの CSS セレクタを用いて、新しい記事のタイトルが追加されたことを検知し、Twitter や Slack に転送する Webhook を設定することで、ニュース速報のような運用も可能です。
4. 在庫通知(限定品など) 限定品の発売や補充を監視する場合、在庫ボタンが表示されるタイミングを検出します。CSS セレクタで「Add to Cart」ボタンの状態が「Available」に切り替わることを検知し、即座にユーザーに通知を送ります。ここでの重要ポイントは、チェック間隔を可能な限り短く設定することですが、サーバー負荷との兼ね合いで調整が必要です。
これらの事例は、ChangeDetection.io の柔軟性を示す一例です。フィルタリング機能を組み合わせることで、あらゆるウェブページの変更を追跡するシステムを構築可能です。
最後に、本記事のテーマである ChangeDetection.io と他ツールや SaaS サービスとの比較を行います。これにより、なぜ ChangeDetection.io が最適解となり得るかを明確にします。比較対象として、定番セルフホストツールの Distill Web Monitor、SaaS 型の Visualping、そして Wachete を選びました。
| 項目 | ChangeDetection.io (v0.47+) | Distill Web Monitor | Visualping (SaaS) | Wachete |
|---|---|---|---|---|
| 価格 | オープンソース(無料) | 無料〜有料 | 月額課金型 | オープンソース(一部機能制限) |
| セルフホスト | ◎ (Docker 標準) | ○ (要設定) | × (SaaS のみ) | △ (一部のみ) |
| JS 対応 | ◎ (Playwright 統合) | ○ (拡張機能依存) | ◎ (クラウド実行) | ○ (一部対応) |
| 通知数 | 無制限 | 制限あり | プランによる | 制限あり |
| フィルタリング | CSS, XPath, Visual | CSS, XPath | 画像比較中心 | 基本テキスト |
| 日本語対応 UI | ◎ | ○ | ◎ | △ |
ChangeDetection.io の最大の特徴は、Docker 標準でのセルフホスト性と、Playwright による JavaScript レンダリングの完全サポートです。Distill Web Monitor はブラウザ拡張機能として動作し、非常に強力ですが、サーバー上で常時稼働させるには複雑な設定が必要になります。また、Visualping などの SaaS サービスは手軽ですが、月々のコストが積み重なる点やデータ保存の制限があります。
特に v0.47+ では、通知先の多様性と Apprise の統合により、SaaS を凌駕する柔軟性を持っています。また、日本語 UI が整備されており、日本のユーザーにも使いやすい設計となっています。
競合比較において重要な点は、「自社の運用ニーズに合うか」です。大量のページを監視し、コストを抑えたい場合は ChangeDetection.io が最適です。逆に、手軽さ重視でサーバー管理が難しい場合は SaaS 型も選択肢となります。しかし、セキュリティとデータ主権を重視する現代では、ChangeDetection.io のようなセルフホストソリューションの需要は高まり続けています。
Q1. ChangeDetection.io を Docker で起動できません。
A. Docker Engine と Compose が最新バージョンか確認してください。また、./datastore ディレクトリに書き込み権限があるか確認し、ユーザー ID (PUID/PGID) の設定を調整してください。エラーログを docker compose logs で確認すると原因が特定できます。
Q2. JavaScript で動的に表示されるページの変更を検知できません。
A. Watch Type を「Standard watch」にし、Playwright ブラウザを使用する設定(環境変数 PLAYWRIGHT_HEADLESS_BROWSER=true)を確認してください。また、チェック間隔を十分に確保し、ページ読み込みが完了した後の DOM 状態を監視対象に含めてください。
Q3. 通知が頻繁に来すぎて迷惑です。 A. 「Notification Cooldown(通知クールダウン)」機能を使用して、検知後一定時間間は再通知しないように設定してください。また、除外フィルターで広告や日時表示などのノイズ除去を行い、重要な変更のみを検知するように調整してください。
Q4. API キーを設定する方法を教えてください。
A. 環境変数 API_KEY_SECRET_KEY にランダムな文字列を指定してコンテナ起動時に設定します。また、Web UI の「API Key」セクションから生成されたキーを使用して、外部システムとの連携やバックアップ時の認証に利用できます。
Q5. プロキシを設定して IP ブロックを回避したいです。
A. 環境変数 PROXY_URL にプロキシサーバーの URL(例:socks://user:pass@host:port)を指定してください。BrightData や Smartproxy などのサービスを利用する際、認証情報を含む形式で設定します。
Q6. Slack と Telegram の両方に通知したいです。 A. Apprise を使用して複数通知先を設定可能です。設定画面の「Notifications」セクションで、Slack および Telegram 用の Webhook またはトークンをそれぞれ追加し、アクティブな状態にチェックを入れます。
Q7. リバースプロキシ(Nginx)を通す場合の設定を教えてください。
A. Docker Compose の ports セクションを変更し、内部ポート 5000 を外部ポート(例:443 や 8080)にマッピングします。また、HTTPS 化にはリバースプロキシで SSL 証明書を設定し、X-Forwarded headers を適切に処理する必要があります。
Q8. 過去の監視履歴やログはどのくらいの期間保存されますか? A. デフォルトではディスク容量の許す限り保存されますが、長期運用ではデータサイズが大きくなります。Docker のボリューム設定でローテーションルールを適用するか、定期的なバックアップスクリプトを実行して管理することをお勧めします。
Q9. 2FA を有効にするにはどうすればいいですか? A. Web UI の「アカウント」セクションにある「Security」項目から二要素認証の設定画面へ移動し、QR コードをスキャンするかシークレットキーを入力してください。設定完了後、ログイン時にコードの入力が必要になります。
Q10. 無料で利用できる範囲はどれくらいですか? A. ChangeDetection.io はオープンソースで完全無料です。ただし、サーバーの維持費(VPS や電力)と、Playwright モード使用時のリソース消費コストは自己負担となります。通知先のサービス自体に月額料金がかかる場合は別途必要です。
本記事では、2026 年 4 月時点での最新バージョンである ChangeDetection.io v0.47+ を活用した、ウェブページ変更検知のセルフホスト環境構築ガイドを詳しく解説しました。以下の要点を押さえておくことで、安定かつ効率的な運用が可能になります。
ウェブページ監視は単なるツール導入ではなく、自社の情報収集インフラの一部として設計する必要があります。ChangeDetection.io のようなオープンソースツールを適切に運用することで、コストを抑えつつ高度な自動化を実現できます。本ガイドが、読者のデジタル生活やビジネス活動の効率化に貢献することを願っております。

PCパーツ・ガジェット専門
自作PCパーツやガジェットの最新情報を発信中。実測データに基づいた公平なランキングをお届けします。
Uptime Kuma を使った自鯖監視ツールの構築を解説。Docker導入、HTTP / TCP / Ping 監視、通知、ステータスページ、Gatus / Healthchecks との比較を紹介。
Webスクレイピング環境の構築方法をPython+Playwrightで解説。法的注意点・効率的なデータ収集テクニックも紹介。
Linkwarden を使ったセルフホストブックマーク管理を解説。Docker導入、自動アーカイブ、PDF / Screenshot保存、Raindrop.io との比較を詳しく紹介。
Woodpecker CI のセルフホスト構築を解説。Docker導入、Gitea / Forgejo 連携、パイプライン記述、Drone CI との違い、実運用Tipsを詳しく紹介。
GitHub Actionsのセルフホストランナーを自宅PCに構築する方法。コスト削減、高速化、GPUテストへの活用を解説。
Piped を使ったYouTube代替プロキシのセルフホスト構築を解説。Docker導入、SponsorBlock 統合、Invidious との比較、実運用Tipsを詳しく紹介。