cc-bridge Handler
この PC を cc-bridge.elc-gateway.com から操作できるようにする常駐アプリです。インストールしてペアリングすれば、 画面の取得・入力操作・ファイルのやり取りができるようになります。
ダウンロード
ソースからビルドする場合は
リポジトリの
clients/pc/packaging/ を参照してください。
インストールと設定
- DMG を開き、cc-bridge Handler を アプリケーション フォルダにドラッグします。
- アプリケーションフォルダから起動します。ダブルクリックでそのまま開きます。 Developer ID 署名と Apple の公証を通しているため警告は出ません。 DMG の中から直接起動しないでください — macOS が別の場所で実行するため、権限の許可が定着しません。
- メニューバー(画面右上)に橋のマークが出れば起動しています。 Dock にはアイコンが出ません。ウインドウも出ないのが正常です。
- 初回はセットアップ画面が自動で開きます。開かないときはメニューバーのアイコン → セットアップガイド…。
1. 接続先を入力する
セットアップ画面の 接続先 に https://cc-bridge.elc-gateway.com を入力して 保存 します。
初期状態では接続先は空なので、必ず入力してください。
接続先を変えると以前のペアリングは無効になります。
2. ブリッジとつなぐ(ペアリング)
- セットアップ画面の ペアリングする を押します。
- 8 桁の接続コードが表示され、ブラウザで承認ページが開きます。
- 管理コンソールにサインインします。
管理者はメール+パスワード、利用者は配布された
ccu_…トークンです。 - 表示されたコードを 承認 します。数秒でアプリが「接続中」になります。 利用者トークンで承認すると、その PC はその利用者のものになります。
3. 必要な権限を許可する
セットアップ画面に必要な権限が一覧で出ます。各行の 設定を開く から許可してください。
- 画面収録(必須)— スクリーンショット 未許可でもエラーにならず、壁紙だけの画像が返るので必ず確認してください。
- アクセシビリティ(必須)— マウス・キーボード・ウインドウ操作
- フルディスクアクセス(推奨)— デスクトップ・書類・ダウンロード内のファイル
- 自動化(推奨)— 他アプリのウインドウ操作。初回利用時に macOS が確認します
- 通知(任意)— 接続状態のお知らせ
許可したらアプリを完全に終了して起動し直してください。 メニューバー常駐のため、ウインドウを閉じるだけでは終了せず、許可が反映されません。
- setup.exe を実行します。管理者権限は不要です。 ユーザー単位インストールなので UAC は出ません。
- 署名前のため SmartScreen の警告が出ます。詳細情報 → 実行 を選んでください。
- 「Windows へのサインイン時に起動する」にチェックを入れると常駐します。
- 起動すると通知領域にアイコンが出て、セットアップ画面が開きます。 アイコンが隠れている場合は通知領域の ∧ を開いてください。
ブリッジとのつなぎ方は macOS と同じです。ペアリングする → 表示されたコードを管理コンソールで承認、で完了します。
Windows での権限について
Windows には macOS のような許可ダイアログがありません。 これは権限が弱いという意味ではなく、起動した時点で以下がすべて可能という意味です。 許可を求められない分、macOS より初期状態で強い権限を持ちます。
- サインイン中のユーザーとしてのコマンド実行(PowerShell / cmd)
- そのユーザーが読み書きできるすべてのファイル
- 画面全体の取得(許可設定なし)
- キーボード・マウス操作の送出
- 逆 SSH トンネル(この PC から外向きに接続。受信ポートは開きません)
実際の制限は次のとおりです。アプリは管理者権限では動きません(ユーザー単位インストール)。
そのため他ユーザーのファイルには触れず、管理者として実行中のアプリの画面操作もできません。
通信は外向きの WSS のみでファイアウォールの受信許可は不要です。
ペアリング情報は %APPDATA%\cc-pc-handler\handler.json に保存されます。
ソースからビルドする
git clone https://github.com/gameagelayer/cc-bridge.git
cd cc-bridge\clients\pc\packaging\windows
powershell -ExecutionPolicy Bypass -File .\build.ps1Python 3.10 以上と Git が必要です。
winget install -e --id JRSoftware.InnoSetup を入れておくと
setup.exe も同時に作られます。
ブラウザ拡張(任意)
Chrome を操作対象に加えると、ページの読み取り・クリック・タブ操作ができます。 PC クライアントとは独立していて、どちらか一方だけでも使えます。
- ZIP をダウンロードして、任意のフォルダーに展開します。 削除すると拡張が無効になるので、残しておける場所に置いてください。
- Chrome で
chrome://extensionsを開き、右上の デベロッパーモード を ON にします。 - パッケージ化されていない拡張機能を読み込む を押し、展開したフォルダーを選びます。
- 拡張のアイコンから ペアリング を実行し、表示されたコードを この画面 で承認します。
拡張 ID は固定してあるため、フォルダーを移動しても再ペアリングは不要です。
うまくいかないとき
項目を開くと手順が出ます。コマンドは右上の「コピー」から取れます。
画面収録を許可しても、何度も聞かれる(macOS)
アプリを入れ替えたときに起きます。古い版の許可記録が新しい版と衝突していて、 許可しても反映されません。アプリを完全に終了してから、記録を消してやり直してください。
tccutil reset ScreenCapture com.gameagelayer.ccbridge.handlerそのあとアプリを起動し、出てきたダイアログで許可し、 もう一度終了して起動し直します。許可の反映には再起動が必要です。
アプリのコピーが複数あると、片方に許可してももう片方には効きません。
/Applications 以外のコピーは削除してください。
起動しても何も起こらない(macOS)
このアプリはメニューバー常駐型で、Dock アイコンもウインドウも出ません。 設定が済んでいれば、起動しても画面上は何も起こらないのが正常です。 画面右上に橋のマークがあれば動いています。
マークが見当たらないときは、起動しているか確かめてください。
pgrep -fl "cc-bridge Handler" || echo "起動していない"プロセスが見つかるのにマークが無い場合は、メニューバーの項目が多すぎて macOS が隠しています(ノッチ付きの Mac で起きます)。他のアイコンを減らしてください。
起動していない場合は、直接起動すると普段は隠れる起動時のエラーが表示されます。
"/Applications/cc-bridge Handler.app/Contents/MacOS/cc-bridge Handler"何も出ずに止まったままなら正常に起動しています(Ctrl+C で終了)。
起動直後に落ちる/セグメンテーション違反(macOS)
まず、この Mac の構成を控えてください。アプリは Apple Silicon 専用です。
uname -m; sw_vers; sysctl -n machdep.cpu.brand_stringアプリ側の対応アーキテクチャと突き合わせます。uname -m が
x86_64 なのにアプリが arm64 だけなら、それが原因です。
file "/Applications/cc-bridge Handler.app/Contents/MacOS/cc-bridge Handler"lipo ではなく file を使います。
lipo は Xcode のコマンドラインツールが要るので、入っていない Mac では
インストールを促すダイアログが出るだけで結果が得られません。
クラッシュレポートから原因を抜き出す
落ちた理由だけを取り出します。これが最も手がかりになります。
f=$(ls -t ~/Library/Logs/DiagnosticReports/*cc-bridge*.ips | head -1); tr "," "
" < "$f" | grep -E '"(exception|termination|asi|signal|type|subtype)"|EXC_|SIG|dyld|Symbol|Library' | head -30落ちた場所(どのライブラリの中で止まったか)も見ます。
f=$(ls -t ~/Library/Logs/DiagnosticReports/*cc-bridge*.ips | head -1); tr "{" "
" < "$f" | grep -E "imageIndex|symbol|CFBundleIdentifier" | head -20レポート全体が要るときは
f=$(ls -t ~/Library/Logs/DiagnosticReports/*cc-bridge*.ips | head -1); head -c 4000 "$f"
で先頭を取れます。ファイル名に空白が入るので、変数に入れて引用符で囲むのが確実です。
アプリ自身のログにも記録が残っていることがあります。 空なら、Python が動き出す前に落ちています。
tail -40 ~/.config/cc-pc-handler/app.log出力をメモで送ってください。原因を特定します。
なお DYLD_PRINT_LIBRARIES は使えません — 署名済みアプリでは
macOS が DYLD_* を無視するため、何も出ません。
「ペアリング」「サインイン」を押しても何も起きない
失敗の理由が通知でしか出ないため、通知が未許可だと画面上は無反応に見えます。 まずアプリのログを見てください。
tail -40 ~/.config/cc-pc-handler/app.log次に、この PC からブリッジに届いているかを確かめます。
200 が返れば通信は問題ありません。
curl -s -o /dev/null -w "%{http_code}\n" "https://cc-bridge.elc-gateway.com/client/eula"接続先が正しく入力されているか確認します。空欄や別のブリッジのままだと、
このブリッジにはペアリングできません。上の https://cc-bridge.elc-gateway.com になっているか見てください。
cat ~/.config/cc-pc-handler/handler.json出力をメモで送ってください。 なお承認は別の PC からでもできます。手元のブラウザで 承認ページ を開き、アプリに出ている 8 桁を入力してください。
アクセシビリティが「許可済み」にならない(macOS)
まずアプリを完全に終了して起動し直してください。許可の反映には プロセスの再起動が必要で、メニューバー常駐のためウインドウを閉じるだけでは終了しません。
それでも変わらない場合、システム設定 → プライバシーとセキュリティ → アクセシビリティ に cc-bridge Handler が複数並んでいないか見てください。 アプリを入れ替えると古い項目が残り、そちらに許可が付いたままになります。 すべて削除(−)してからアプリを再起動すると、登録し直されます。
アプリから見えている状態はこれで確認できます。
tail -5 ~/.config/cc-pc-handler/app.log; echo "---"; ls -d /Applications/"cc-bridge Handler.app"自動化と通知は「判定しません」と出ます。これは異常ではありません。 自動化は状態を調べるだけで確認画面が出て操作が止まってしまうため、 通知は状態取得に必要な仕組みを同梱していないため、どちらも意図的に調べていません。 自動化は初回の実利用時に macOS が確認します。
スクリーンショットが壁紙だけになる(macOS)
画面収録が未許可です。システム設定 → プライバシーとセキュリティ → 画面収録で許可し、 アプリを再起動してください。エラーにならず成功したように見えるのが厄介な点です。
操作したいアプリにキー入力が入らない(Windows)
相手のアプリが管理者として実行中の場合、同じ権限がないと操作できません(OS の仕様)。 このアプリはユーザー単位インストールで管理者権限を持たないため、 管理者として動いているアプリは操作対象外になります。
「認証が失効しました」と出る
ブリッジ側でペアリングが解除されています。セットアップ画面からもう一度ペアリングしてください。
ログを見たい
メニューの ログを表示 から開けます。ファイルの場所は次のとおりです。
- macOS —
~/.config/cc-pc-handler/app.log - Windows —
%APPDATA%\cc-pc-handler\app.log
メモを送る
詰まったところ、直してほしいところ、エラーの全文などを送れます。 匿名で、名前もメールアドレスも要りません。送った内容がこの画面に表示されることはありません。
お使いのブラウザと OS の情報だけ、原因を切り分けるために一緒に送られます。 返信はできないので、やり取りが必要なときは管理者に直接ご連絡ください。
リリースノート
- 権限を与える前の Mac で起動直後に落ちていたのを修正しました。アクセシビリティの確認に渡していた内部データが不正で、macOS 側で異常終了していました。許可済みの機体では起きないため、配布して初めて表面化していました。
- 「サインイン」「ペアリング」を押しても何も起きなかったのを修正しました。ダイアログを表示するスレッドが誤っており、macOS が黙って無視していました。
- サインインの入力を、メールアドレスとパスワードの 2 つの欄に分けました。パスワードは伏せ字になります。利用許諾もスクロールできる表示になりました。
- 同じダイアログが繰り返し出ることがあったのを修正しました。ペアリングの待機画面をなくし、接続コードはセットアップ画面に表示するようにしています。
- 失敗の理由を必ずログとセットアップ画面に出すようにしました。これまでは通知だけで、通知が未許可だと何も分からない状態でした。
- 「自動化」「通知」は判定していない項目です。「判定しません」と明示するようにしました(許可されていない、という意味ではありません)。
- スクリーンショットを ScreenCaptureKit に移行しました。macOS 15 で非推奨になった方式をやめたことで、画面収録の再確認を求められる頻度が下がります。
- Developer ID 署名と Apple の公証に対応しました。ダウンロードしてそのまま開けます。
- セットアップ画面が通信中に固まることがあったのを修正し、ブリッジへの問い合わせ回数も減らしました。
- macOS 版アプリ(メニューバー常駐)と DMG インストーラーを追加
- Windows 版アプリ(通知領域常駐)とインストーラーを追加。Windows 11 で動作確認済み(exec / ファイル / スクリーンショット / 画面情報)
- 初回起動時のセットアップガイド:接続先・ペアリング・必要な権限を1画面で確認でき、各権限の設定画面を直接開けます
- 必要な権限(画面収録・アクセシビリティ・フルディスクアクセス・自動化・通知)の許可状況を自動判定し、2秒ごとに反映
- 接続先(ブリッジ URL)をアプリから変更できるようになりました
- ログイン時の自動起動に対応(macOS は LaunchAgent、Windows はスタートアップ)
- アプリを再度起動するとセットアップ画面が開くようになりました
- Windows 版のトレイアプリとインストーラー(Inno Setup)の作成手順を同梱
- アプリ版は配布サイズを抑えるため OpenCV を同梱していません。desktop.locateImage の厳密一致は動作しますが、あいまい一致(confidence 指定)は CLI 版をご利用ください
- Windows PC が Mac として表示されていた問題を修正(handlerType を実際のプラットフォームから決定)
- 日本語 Windows でビルドが cp932 エラーになる問題を修正
- Windows でキー入力が反映されない問題を修正(間隔なしで送ると OS 側に取りこぼされるため、既定で 15ms の間隔を入れる)
- Chrome 拡張を配布サイトから入手できるようにし、クライアント導入時に案内を表示するようにしました