Chromeプロファイルのショートカットをデスクトップに置く(Mac編)

検索して最初に出てくる手順は「プロファイルのメニューを開いて、デスクトップショートカットを作成する項目を押す」と書かれている。Macでその項目を探しても見つからない。設定が無効になっているわけでも、バージョンが古いわけでもない。その手順はWindows版のもので、Windowsのデスクトップがショートカットのファイルを置く場所として作られているために存在している機能だからだ。

やりたいこと自体はmacOSでも実現できる。方法は3つあり、それぞれ手間と使い勝手が違う。この記事では、フォルダ名の正しい調べ方、3つの作り方の選び方、そして作ったあとで必ず起きる不具合の直し方まで扱う。

macOSでは「デスクトップに置ける物」が違う

Windowsのショートカットは、プログラムの場所と引数を一緒に持てる小さなファイルだ。デスクトップはそのファイルを並べるフォルダなので、Chromeが直接書き出せる。だからメニューに項目がある。

macOSのデスクトップも ~/Desktop というフォルダだが、そこに置いてダブルクリックできる物の種類が違う。エイリアスはファイルやアプリを指すだけで、引数を持てない。ここが決定的で、特定のプロファイルを開く操作は引数を渡すこと以外の何物でもない。.command という拡張子のファイルは、Finderからダブルクリックすると実行されるシェルスクリプトになる。アプリケーションバンドルは本物のアプリなので、中で何でもできる。

引数を運べるのは後ろの2つだけだ。この時点で選択肢は絞られる。デスクトップにChromeのエイリアスを置いても、開くのは前回開いていたプロファイルになる。読者が避けたい動きそのものになってしまう。

すべての方法が共通して使うのは、プロファイルのフォルダ名を指定する起動オプションだ。macOSでの作り方は、どれもこのオプションの包み紙にあたる。

起動コマンドと、必要なフォルダ名

使うオプションは --profile-directory で、渡すのは画面に出ている表示名ではなく、ディスク上のフォルダ名になる。macOSの open コマンドと組み合わせると次の形になる。

open -na "Google Chrome" --args --profile-directory="Profile 3"

-n は既存の窓を前に出すのではなく新しいインスタンスを起動する指定、-a はアプリ名の指定にあたる。-g を足すとフォーカスを奪わずに起動するので、裏で動かすスクリプトでは役に立つ。クリックして使うランチャーには向かない。

つまずくのはフォルダ名の特定だ。Chromeのプロファイルは ~/Library/Application Support/Google/Chrome の下に Default Profile 1 Profile 2 という名前のフォルダとして保存され、表示名は Local State という別のファイルに記録されている。番号は作った順に振られ、プロファイルを削除しても詰め直されない。メニューに4つしか出ていないMacでも、フォルダの番号が9まで飛んでいることがある。メニューの並び順から推測して作ったランチャーが、違うアカウントを開いてしまう原因はここにある。

対応関係は、そのファイルに直接聞くのが確実だ。

python3 -c "import json,os; d=json.load(open(os.path.expanduser('~/Library/Application Support/Google/Chrome/Local State'))); [print(k,'->',v.get('name'),v.get('user_name','')) for k,v in d['profile']['info_cache'].items()]"

プロファイルごとに、フォルダ名・表示名・ログイン中のアドレスが1行ずつ出る。使うのは左端のフォルダ名で、メニューに出ているラベルではない。

3つの作り方と、それぞれの代償

作り方 デスクトップに置かれる物 代償
.command ファイル ターミナルのアイコンが付いたテキストファイル 実行のたびにターミナルの窓が開く
スクリプトから作るアプリ 本物のアプリ。アイコンも変えられる 作成に2分かかる
Chromeのエイリアス Chromeのアイコン プロファイルを渡せないので機能しない

.command の方法は、作るのが一番速く、使い心地が一番よくない。open のコマンドを書いたテキストファイルを .command という拡張子でデスクトップに保存し、ターミナルで chmod +x を実行して実行権限を付ける。ダブルクリックすればプロファイルは開くが、同時にターミナルの窓も開いて残る。ターミナルの環境設定で、コマンド終了時に窓を閉じる設定にすれば大部分は解消するが、一瞬ターミナルが出ること自体は変わらない。

アプリにする方法は、普通のアプリと同じ挙動になる。macOSに最初から入っているスクリプトエディタを開き、シェルコマンドを実行する1行を書いて、ファイルフォーマットをアプリケーションにして保存する。できたアプリはアプリケーションフォルダに置き、デスクトップにはそのエイリアスを置く。デスクトップに本体を置くと、うっかりドラッグしたときに実体ごと動いてしまうためだ。

do shell script "open -na 'Google Chrome' --args --profile-directory='Profile 3'"

アイコンを変えるには、好きな画像をコピーして、保存したアプリを選び、情報を見るウィンドウを開いて、左上のアイコンを選んで貼り付ける。見分けやすいアイコンは、思っている以上に効く。この仕組みを作る理由そのものが、朝いちばんに違うアカウントを開かないことにあるからだ。

デスクトップが最適とは限らない

デスクトップに置くのは悪くない選択だが、最良ではない場面が多い。作業中のMacのデスクトップは、1日の大半をウィンドウに覆われている。デスクトップのアイコンに手を伸ばすには、まず全部どかす必要がある。

アプリケーションフォルダに保存したアプリは検索の対象になるので、Spotlightに名前の頭を数文字打つだけで起動できる。このとき効くのが名前の付け方だ。Chromeではなくアカウントの側で名前を付ける。「取引先メール」という名前のアプリは数キーで呼び出せるが、「Chrome Profile 3」という名前だと番号を覚えている必要がある。

同じアプリはDockにドラッグして常設の場所を作れるし、同時にデスクトップにエイリアスを置いておくこともできる。アプリを1つ作って、その入口を複数の場所に置くほうが、置き場所ごとに別のランチャーを保守するより手数が少ない。

Chromeがすでに起動しているときの動き

正しく作ったつもりなのに違う窓が出る、という報告の多くはここが原因になっている。-n を付けずに open を実行すると、macOSは起動中のChromeを見つけて前面に出すだけで、プロファイルの引数は無視される。引数が効くのはアプリを起動する瞬間だけで、すでに起動しているアプリには渡らないためだ。結果として、直前まで表示していた窓、つまりたいてい間違ったアカウントの窓が出てくる。

-n を付けると新しいインスタンスとして起動されるので、引数が読まれる。Chromeはもともと1つのプロセスから複数のプロファイルの窓を扱う作りになっているため、ブラウザが二重に起動するのではなく、指定したプロファイルの窓が増える形になる。1日中Chromeを開いたままでもランチャーが機能するのは、この挙動のおかげだ。

1つだけ、使う前に手元で確かめておきたい動きがある。すでに窓が開いているプロファイルに対してランチャーを実行したとき、必ず新しい窓が増えるとは限らない。Chromiumは同じユーザーデータディレクトリに対して1つのプロセスしか持たず、起動要求を動作中の側へ渡す設計になっているためだ。新しい窓が開くのか、既存の窓が前に出てくるのかは数秒で確認できる。どちらになるかで、この仕組みが起動用の道具なのか切り替え用の道具なのかが変わる。

作ったあとで壊れる3つの場面

放っておくと必ず起きることが3つある。原因が分かっていれば、どれも1分かからずに直せる。

Chromeの更新では壊れない。これは最初に言っておく価値がある。コマンドが指しているのはバージョンではなくアプリの名前で、プロファイルのフォルダは更新をまたいで残る。今日作ったランチャーは、1年分の自動更新のあとでも動く。

壊れるのはプロファイルを削除して作り直したときだ。新しいフォルダ名が割り当てられるため、古いランチャーは存在しないフォルダを指すことになる。Chromeはエラーを出さず、その場所に空のプロファイルを作る。ログアウトした新品の窓が開いたら、原因はほぼこれになる。もう1つ、フォルダ名はそのままで、そのプロファイルからログアウトして別のアカウントでログインし直した場合も同じ結果になる。こちらは見た目に異常が無いぶん、気づくのが遅れる。

3つ目はMacの買い替えだ。新しいMacではプロファイルのフォルダが設定した順に作り直されるので、前のMacの Profile 3 が新しいMacでも同じ番号である可能性は低い。ランチャーはそのまま移行され、そして違うアカウントを指す。移行作業の一部として対応表を取り直し、各スクリプトを書き換えておくと、1週間後に混乱せずに済む。

ショートカットでは直らないこと

起動の問題は解決するが、残る問題が3つある。ランチャーを4つ作る前に知っておきたい範囲だ。

Chromeはあくまで1つのアプリのままだ。どのプロファイルの窓も同じプロセスに属し、Dockのアイコンは1つにまとまり、アプリの切り替え画面にはプロファイルをいくつ開いていてもChromeが1つだけ出る。通知も、どのプロファイル由来なのか分からない形でChromeから届く。個人用と取引先2社を並行して使う人にとって、この曖昧さは毎日発生する負担になり、ランチャーはそこに何もしない。

プロファイルは分離であって、施錠ではない点も変わらない。Google公式のヘルプは次のように書いている。

デバイスを使用するユーザーは、そのデバイスに設定されている他のどの Chrome プロファイルにも切り替えることができます。 出典: support.google.com

デスクトップのショートカットは、そのMacを使う本人にとっての利便性であって、他人に対する境界にはならない。共有の端末で席を離れるときの前提としては使えない。

ランチャーを増やすのをやめる境目

包み紙を増やし続けることが割に合わなくなる地点がある。目安は3つ目のプロファイル、あるいは同じサービスの2つのアカウントを順番にではなく同時に表示したくなった時点だ。プロファイルの窓はサービスごとに1アカウントしか表示できないため、同時に見るには窓を行き来することになる。

ここから先は、起動の方法ではなく、分ける単位そのものを見直す話になる。Webアプリをまとめるブラウザは、アプリごとに独立したワークスペースを与える設計を取る。2つ目のGmailや2つ目のSlackが、1つ目の後ろではなく隣に並ぶ形になる。その並べ方はワークスペースのページで説明されていて、どのサービスがそのまま入るかは使えるアプリの一覧で確認できる。月額課金の製品と比べたい場合はWaveboxとの比較に、無料のオープンソース製品と比べたい場合はFerdiumとの比較に、それぞれ対応表がある。

作業の順番としては、スクリプトを書く前に Local State から実際のフォルダ名を読むところから始める。推測で作ったランチャーは、動いているように見えて静かに違うアカウントを開く。まず1つ作って意図したプロファイルが開くことを確かめ、それから残りを複製する。数が3つを超えたら、4つ目のランチャーを作る前に分け方そのものを見直す段階に来ている。

よくある質問

Mac版のChromeにデスクトップショートカットの作成項目が無いのはなぜですか?

その項目はWindows版の機能だからです。Windowsのデスクトップは、プログラムと引数をまとめて持てるショートカットファイルを置く場所として作られています。macOSには、デスクトップに置けてなおかつアプリへプロファイル名を渡せる同等のファイル形式が無いため、小さなスクリプトかアプリとして自分で用意することになります。

プロファイルのフォルダ名はどこで確認できますか?

~/Library/Application Support/Google/Chrome の下にある DefaultProfile N というフォルダ名が実体で、表示名は同じ階層の Local State というファイルに別途記録されています。このファイルを読むと両者の対応が分かります。番号は作成順で、プロファイルを削除しても詰め直されません。

ショートカットを押すとログアウトした窓が開きます。原因は何ですか?

コマンドに書いたフォルダ名が、現存するプロファイルと一致しなくなっている場合がほとんどです。多くはプロファイルを削除して作り直し、新しい番号が割り当てられたことが原因です。Chromeはエラーを出さずにその場所へ空のプロファイルを作ります。対応表を取り直して引数を書き換えれば直ります。

ショートカットで特定のサイトを特定のプロファイルで開けますか?

開けます。同じコマンドのプロファイル指定の後ろにURLを足せば、そのプロファイルでそのページが開きます。1つのWebアプリを1つのアカウントで開く専用のランチャーとして使えます。ただし開くのは通常のChromeの窓なので、あとから他のタブを足すことはできてしまいます。

記事一覧へ戻る