目次

AutoGate

AutoGate

概要

出勤時などに、登録しておいた業務サイトへのログインをまとめて自動化するChrome拡張機能です。
グループ(親)の下にサイト(子)をぶら下げて登録し、ポップアップから「まとめて実行」を押すだけでログインまで済ませます。
ID/PASSは平文保存せず、サイトごとに「制限あり(実行のたびにマスターパスワードが必要)」「制限なし(無言で自動実行)」を選べます。

画面イメージ

ポップアップ(実行画面)

拡張機能アイコンをクリックすると出る画面。グループ単位・サイト単位で実行できます。

設定画面

左でグループ・サイトの登録/編集、右で親子構成(マクロ一覧)を確認できます。
セレクタはCSSセレクタの取得を参考に取得します。


主な機能

🔑 2段階のセキュリティレベル

- 制限あり: 実行のたびにマスターパスワードの入力が必須。マスターパスワードはどこにも保存されず、その場でPBKDF2により鍵を導出します。
- 制限なし: ポップアップから無言で自動実行(端末内に保存した専用の鍵で復号)。機密性が低いサイト向け。
- 保護レベルはグループ単位で既定値を設定し、サイトごとに個別上書きも可能(継承/個別あり/個別なしの3択)。
- マスターパスワードの変更にも対応。変更すると、制限ありサイトのID/PASSは自動的に新しいパスワードで再暗号化されるため、サイトの再登録は不要です。

🗂 グループ/サイトの階層管理

- グループ(親)の下にサイト(子)をぶら下げるツリー構造。
- グループ・サイトそれぞれに▲▼ボタンがあり、表示順を並び替え可能。
- サイトは「移動」ボタンで、後から別のグループへ付け替え可能。

⚙️ 4つのログイン方式

- credentials型: ID(またはメールアドレス)とPASSを自動入力し、送信ボタンをクリック。パスワード欄が無いサイト(メールアドレスのみで続ける形式)にも対応。
- two-step型: 2段階に分かれたログイン(Googleアカウント等)向け。1段階目(メールアドレス等)を入力して次へをクリック→ページ遷移を待ってから、2段階目(パスワード等)を入力して次へをクリックする。
- sso-click型: 「Googleでログイン」等のボタンをクリックするだけ(既にそのサービスにログイン済みの前提)。
- manual型: タブを開くだけ。人の操作が必須なサイト向け。
- サイトごとに「実行遅延(秒)」を設定可能。表示が遅いSPA(React等)のサイトでも、待ってからフォーム入力できます(two-step型は1段階目・2段階目それぞれに待機秒数を設定可能)。

💾 バックアップ(エクスポート/インポート)

- 全グループ・全サイト・暗号化済みID/PASSを、パスワード保護された1つの文字列にまとめてエクスポート可能。
- 拡張機能の読み込み場所(フォルダ)を変えるなどでデータが引き継げなくなった場合も、インポートで復元できます。


基本操作

初回セットアップ

1. 拡張機能アイコン →「設定画面を開く」
2. マスターパスワードを設定(8文字以上。どこにも保存されないため、忘れると制限ありサイトの情報は復元できません)
3. 「グループを追加」で分類(例: 業務ツール類)を作成
4. 「サイトを追加」でログイン先を登録

サイトの登録

- ログインページを開き、F12で開発者ツールを起動
- ID欄・PASS欄・送信ボタンを右クリック →「検証」→ Elementsパネルで右クリック →「Copy → Copy selector」
- 複雑なセレクタが取れてしまった場合は、Consoleタブで対象要素を選択し $0.outerHTML を実行して属性を確認し、iddata-testidなど安定した属性を優先して自分で組み立てるとよい
- ログイン方式(credentials/two-step/sso-click/manual)を選び、制限あり/なしを設定して保存

マクロの実行

- ポップアップでグループの「まとめて実行」、またはサイト単体の「実行」を押す
- 制限ありサイトが含まれる場合のみ、マスターパスワードの入力を求められる(1回の実行内では親子まとめて1回だけ)
- 制限なしのみの場合は何も聞かれず実行される

設定画面を開くとき

- 改ざん防止のため、設定画面を開くたびに毎回マスターパスワードの入力が必要(実行時とは別の確認)

マスターパスワードを変更したいとき

- 設定画面の「マスターパスワードの変更」から、現在のパスワードと新しいパスワードを入力する
- 制限ありサイトはすべて自動的に新しいパスワードで再暗号化されるため、サイトの再登録は不要


トラブルシューティング

Q. 実行してもフォームに何も入力されない

- サイトがSPA(React等)の場合、タブの読み込み完了直後はまだフォームが描画されていないことがあります。サイトの「実行遅延(秒)」を増やしてみてください。
- Googleアカウントのように、ID入力→ボタン→画面遷移→PASS入力→ボタン、という2段階に分かれたログインはtwo-step型で対応できます。

Q. 「⚠ 再保存が必要」というバッジが出る

- サイトのID/PASSは、保存した瞬間の制限あり/なし設定に応じた鍵で暗号化されています。保存後にグループやサイト個別の設定を変更すると、暗号化に使った鍵と現在の設定がズレてこの警告が出ます。
- 該当サイトの「編集」を開き、ログインID・パスワードを再入力して保存すれば解消します(値は同じでも構いません)。

Q. 実行時に `OperationError` が出て失敗する

- 上記の「再保存が必要」を放置した場合に起きる復号エラーです。対処は同上です。

Q. シークレットモードでポップアップ/設定が正しく開かない

- chrome://extensions の詳細画面で「シークレットモードでの実行を許可する」をONにしてください。

Q. 拡張機能を入れ直したら、登録したサイトやマスターパスワードが消えた

- 読み込み元のフォルダを移動・再作成すると、Chromeからは別の拡張機能として扱われ、データが引き継がれません。事前にエクスポートしておいたバックアップ文字列があれば、インポートで復元できます。


セキュリティ設計メモ

- 制限ありサイトの鍵は、マスターパスワードから都度その場でPBKDF2導出(保存しない)。
- 制限なしサイトの鍵は、端末内に保存した専用鍵(平文よりは安全だが、端末や拡張機能へアクセスできる者からは自動的に復号できる点は理解の上で利用)。
- 各サイトへのアクセス権限は登録時に個別リクエストしており、無関係なサイトへの権限は持たない。
- マスターパスワード変更時は、制限ありサイトのみ自動で再暗号化(制限なしサイトの端末鍵は無関係)。
- 2段階認証(TOTP等)があるサイトは自動化の対象外。

開発情報

- 開発: 個人利用ツール
- バージョン: 0.5.0
- 対応環境: Google Chrome(Manifest V3)
- 権限: storage, scripting, tabs, 登録サイトごとのホスト権限(任意リクエスト)
- 生成AI: Claude

更新履歴

- v0.5.0: two-step型(2段階ログイン、Google等)を追加
- v0.4.0: マスターパスワードの変更機能を追加(制限ありサイトを自動で再暗号化)
- v0.3.1: シークレットモード対応(incognito: split)、右ペインのレイアウト崩れ修正、サイトの並び替え機能追加
- v0.3.0: 設定画面を毎回マスターパスワードで保護
- v0.2.0: 実行遅延(秒)設定、サイト編集・グループ編集・移動機能を追加
- v0.1.0: 初回リリース(グループ/サイトの親子構造、暗号化、3種のログイン方式)