chrome multiple profiles generatorの中身と限界
chrome multiple profiles generator という言葉で探し当たるのは、無料の短いスクリプトから、月額のかかる商用ツールまで幅がある。説明文はどれも似ていて、プロファイルを一括で作れる、としか書かれていない。中で何が起きているのかが見えないと、選びようがない。
実際にやっていることは、ほぼ共通している。Chromeに起動オプションを1つ渡して、名前を変えながら繰り返しているだけになる。この仕組みを知っておくと、自分で書くべきか、買うべきか、そもそも数を増やすべきかの判断がつく。
一括作成ツールがやっていること
Chromeは、指定されたプロファイルが存在しないときに、その場で作る。存在しないフォルダ名を--profile-directoryで渡して起動すると、追加のダイアログも歓迎画面も出さずに、そのフォルダを作って中身を初期化する。
一括作成の正体はこれになる。名前の一覧をループで回し、名前ごとに1回起動し、フォルダができたら終了する。商用ツールが上に載せているのは、プロファイルごとのプロキシ割り当て、ユーザーエージェントの上書き、Cookieの読み込み、実行のスケジュール管理といった周辺の機能で、作成そのものは特別な処理ではない。
作られた直後のフォルダの中には、そのプロファイル専用のCookies、History、Login Data、Bookmarks、Preferences、Extensionsが並ぶ。ログイン状態も閲覧履歴も完全に独立した入れ物が、1回の起動でできあがる。
2つの起動オプションは別物になる
一括作成でつまずく場面のほとんどは、次の2つを取り違えたことが原因になる。
| オプション | 分かれるもの | 共通のまま残るもの |
|---|---|---|
--profile-directory |
Cookie、履歴、パスワード、ブックマーク、拡張機能、ログイン状態 | 1本のブラウザのプロセス、プロファイル一覧、プロファイル選択画面、更新の状態 |
--user-data-dir |
上のすべてに加えて、プロファイル一覧そのものと排他ロック、ブラウザの実行単位 | インストールされたアプリ本体だけ |
前者は、Chromeが本来想定している単位になる。この方法で作ったプロファイルは選択画面に並び、右上のアイコンから切り替えられ、ダイアログで作ったものと区別がつかない。
後者は、Chromeから見ると別のインストールを指す。ロックファイルも更新の状態も別々になり、プロファイル選択画面で横に並ぶこともない。自動テストの道具がこちらを既定にしているのは、実行のたびに人が使っている環境を汚さないためになる。人が手で切り替えて使うプロファイルを、この方法で20個作る理由はほとんどない。
作られた瞬間に書き込まれているもの
フォルダができるだけでは、そのプロファイルは画面に出てこない。Chromeはユーザーデータの階層の一番上にあるLocal Stateというファイルに、プロファイルの一覧を持っている。ここに項目が追加されて、はじめて選択画面に並ぶ。
項目にはフォルダ名が見出しとして入り、その下に表示名、アイコンの種類、テーマの色、最後に使った時刻が並ぶ。一覧の並び順も、最後に使ったプロファイルも、このファイルが覚えている。
この作りから、よくある2つの症状が説明できる。フォルダは残っているのに選択画面に出てこないなら、一覧の項目が失われている。逆に、選択画面に並んでいるのに開こうとするとエラーになるなら、項目だけが残ってフォルダが無い。手でフォルダを消したときに起きるのが後者になる。
一括作成のスクリプトを書くときも、この一覧を意識しておきたい。作ったフォルダの数と、一覧に並んだ項目の数が一致しているかを最後に確かめれば、取りこぼしはその場で分かる。
macOSではDockから直接開けるようにしておく
プロファイルを増やすと、右上のアイコンから選ぶ回数も同じだけ増える。macOSでは、この手間を先に減らしておける。
Chromeには、特定のプロファイルを指定して起動する手段がある。起動オプションでフォルダ名を渡す形になるので、プロファイルごとに起動用の小さなアプリやスクリプトを用意して、それをDockに置く。クリック1回で目的のプロファイルが開き、選択画面を通らずに済む。
作成のスクリプトを書くのであれば、この起動用の入れ物も同じループの中で作ってしまうのが効率的になる。プロファイルだけ30個あって開く手段が1つしかない状態は、作った本人にしか扱えない。
ただし、これで解決するのは入口だけになる。開いたあとにどのウィンドウがどのプロファイルのものかを見分ける手立ては別に要る。プロファイルごとにテーマの色を変えておくと、ウィンドウの上端の色で判別できるようになり、取り違えがはっきり減る。
名前が2つあることが混乱の元になる
Chromeはプロファイルに2つの名前を持たせている。1つはフォルダ名で、作成時に決まり、--profile-directoryに渡すのはこちらになる。もう1つは表示名で、選択画面やアイコンのメニューに出る。この2つは一致しない。
表示名は、ユーザーデータの階層の一番上にあるLocal Stateというファイルの中に書かれている。ここが厄介で、Chromeは終了時にこのファイルを丸ごと書き直す。ブラウザが動いている間にスクリプトから書き換えると、終了時の書き込みで上書きされて消える。名前を一括で付け直したはずなのに元に戻っている、という報告のほとんどはこれになる。
フォルダ名の番号にも落とし穴がある。番号は作った順に振られ、プロファイルを削除しても欠番のままになる。既存の最大値に1を足すやり方だと、いずれ既存のフォルダとぶつかる。作る前に既存のフォルダ名を読んでから決めれば、この種の失敗はまとめて避けられる。
30個作ったあとに効いてくるもの
作った直後のプロファイルは数メガバイトしかなく、いくつ作っても軽く見える。負担は少し遅れてやってくる。
ディスクは目に見える方になる。プロファイルはキャッシュとファビコンとサイトの保存領域で膨らみ、毎日使っているものは500メガバイトを超えることも珍しくない。作った数だけ掛け算になるため、ユーザーデータの階層がMacの中で最も大きいフォルダになることがある。
体感として効いてくるのはメモリになる。開いているプロファイルはそれぞれが独自の通信処理と拡張機能の常駐処理を抱える。拡張機能はプロファイルごとに複製されて動くため、同じものを15個のプロファイルに入れていれば、それらを同時に開いた分だけ二重三重に読み込まれる。
見落とされるのが、探す時間になる。項目が30個並んだ選択画面は、もう案内板として機能しない。目的のプロファイルを探す時間が切り替えそのものより長くなり、結局いくつも開きっぱなしにする。そこでメモリの問題が戻ってくる。
作ったプロファイルは、どれもログインしていない状態から始まる
一括作成でよく期待外れになるのが、ここになる。フォルダは一瞬でできるが、その中身は真っさらで、どのGoogleアカウントにもログインしていない。ブックマークも拡張機能も入っていない。
つまり、作成の自動化で短くなるのはダイアログを操作する時間だけになる。各プロファイルを実際に使える状態にするには、アカウントにログインし、必要なサービスに入り直し、拡張機能を入れる作業が別に必要になる。この部分は人が通るしかない。
同期を使えば拡張機能とブックマークは戻せるが、Cookieは同期の対象外のため、サービスへのログインだけは必ず手作業になる。二要素認証が入っているサービスなら、その回数も掛け算になる。
一括作成を検討する段階で、作ったあとの初期設定に何分かかるのかを1つ分だけ実測しておくと判断が早い。1つに10分かかるなら、20個で200分になる。作成の自動化が短縮するのは、そのうちの数分でしかない。
共用のパソコンでは、分けても守られない
一括作成の動機が「見られたくないものを分ける」ことなら、期待している効果は得られない。Chromeのヘルプは、この点をはっきり書いている。
デバイスは信頼できるユーザーとだけ共用してください。デバイスを使用するユーザーは、そのデバイスに設定されている他のどの Chrome プロファイルにも切り替えることができます。 出典: support.google.com
プロファイルは、同じMacを使う人に対する鍵にはならない。切り替えにパスワードは要らず、一覧はそのまま見える。人ごとに分けたいのであれば、Chromeのプロファイルではなく、macOS側のユーザーアカウントを分ける必要がある。
自分で書くなら、必要な確認は4つになる
短いスクリプトで足りるが、単純なループでは足りない。安定して動かすには次の確認が要る。
- 作業の前にChromeを完全に終了する。動いたまま作ると、プロファイル一覧の書き込みが競合して一部が消える
- 既存のフォルダ名を読んでから、使われていない名前を選ぶ。番号を推測しない
- 1つ作るごとに、フォルダができるのを待ってから次に進む。同時に起動すると取りこぼす
- 起動時に初回セットアップの画面を抑えるオプションを渡す。渡さないと、作った数だけ歓迎タブが開く
もう1つ、作ったプロファイルはどのGoogleアカウントにもログインしていない状態で始まる。同期に関わる設定は、結局プロファイルごとに人が入る必要がある。ここを肩代わりしてくれるツールは無い。
使い捨てにするなら、片付け方も一緒に決める
一括で作れる仕組みを用意すると、作る側だけが自動になり、消す側が手作業のまま残りがちになる。半年後にプロファイルが70個あって、どれが生きているのか誰も分からない、という状態はここから生まれる。
避け方は単純で、作るときに用途と期限を記録しておくことになる。フォルダ名に案件の識別子と作成した年月を入れておけば、一覧を見るだけで古いものが分かる。表示名は人が読むためのものなので、フォルダ名の側に機械が読む情報を寄せておくと扱いやすい。
消すときは、ブラウザのプロファイル管理画面から消すのが基本になる。フォルダを直接ゴミ箱に入れると一覧の項目だけが残り、次の起動でエラーの原因になる。数が多くて手作業が現実的でない場合は、Chromeを完全に終了させたうえでフォルダと一覧の項目を対にして削除する。片方だけを消さないことが唯一の条件になる。
作る仕組みと消す仕組みを同じ日に用意しておけば、後片付けのために別の調べ物をしなくて済む。
数を増やす前に、分ける単位を見直す
一括作成が正しく効く場面はある。検証用の多数のアカウント、サポートが顧客の状態を再現する用途、制作会社が案件ごとに使い捨ての入れ物を用意する場合。プロファイルが使い捨てで、機械が動かし、人が手で行き来しないなら、スクリプトで十分になる。
一方で、同じサービスの2つのアカウントを同じ窓で開けないという理由でプロファイルを増やしている場合、状況は違う。プロファイルは使い捨てではなく、人が一日中行き来する。この場合の一括作成は、最初の10分を短くして、その後の毎日に手間を足すだけになる。
必要なのはブラウザの複製ではなく、アプリ単位の区切りになる。アプリ集約ブラウザがアプリごとに独立したワークスペースを持つのは、この置き換えのためになる。何を単位に分けられるのかはワークスペースに整理されている。同じ考え方を月額のサービスとして提供している製品との違いはWaveboxとの比較にまとまっており、どのサービスが登録済みで使えるかは使えるアプリで確認できる。
判断の分かれ目は1つに絞れる。作ったプロファイルを、人が毎日手で切り替えるかどうか。切り替えるのであれば、増やす速度を上げても事態は良くならない。
よくある質問
Chromeに複数プロファイルを一括作成する公式の機能はありますか?
ヘルプに書かれているのは、右上のアイコンから1つずつ追加する手順だけになる。一括作成の画面は用意されていない。ツールが使っているのは、存在しないプロファイルを指定して起動すると、そのプロファイルが作られるという挙動になる。
`--profile-directory`と`--user-data-dir`はどう使い分けますか?
人が手で切り替えるプロファイルを作るなら前者を使う。同じブラウザの中の別の身分として扱われ、選択画面にも並ぶ。機械が動かす検証用の環境なら後者を使う。別のインストールとして扱われるため、普段使っている環境に触れない。
プロファイルはいくつまで作れますか?
上限は公開されていない。実際には数十個あっても動作する。先に限界が来るのは、同時に開いたときのメモリと、選択画面から目的の1つを探す時間になる。数が増えるほど、切り替えより探す方に時間がかかるようになる。
作ったプロファイルの表示名をスクリプトで変えられますか?
表示名はユーザーデータの階層の一番上にあるLocal Stateに入っている。Chromeは終了時にこのファイルを書き直すため、起動中に書き換えても消える。完全に終了させてから編集し、そのあとで起動する。フォルダ名の方は作成時のまま変わらない。