メインコンテンツへスキップ
  1. Today I Learned (TIL)/

Finicky で異なるブラウザプロフィールで URL を開く方法

··3 分· ·
著者
Aakash Nand
Senior Data Engineer @ Kraken Technologies

コンサルティングファームで働いていた時、私はよく同じ問題に直面していました。特定の URL を特定の Chrome プロフィールで開きたかったのです。クライアントやプロジェクトごとに複数のプロフィールを持っていて、それぞれが独自の SSO セッションとクッキーを持っていました。適切なプロフィールで URL を開くことで、すべてがシームレスに機能していました。

そんな時、「このような問題を既に解決してくれるツールがあるのでは?」と考えるようになりました。そしてOpen In profileというツールを発見しました。それは使いやすく、無料で、まさに私が必要としていたものでした。Chrome プロフィールを追加して、異なる URL を適切なプロフィールにルーティングするルールを作成するだけです。このツールはサーバーにデータを送信せず、ローカル履歴のみを保存(クリア可能)すると謳っていました。私はこのツールをほぼ 2 年間使用していて満足していましたが、なぜ作成者はそれをオープンソース化しなかったのか、常に不思議に思っていました。おそらく将来的に収益化したいと思っていたのかもしれません。

Kraken で働いていることで本当に好きなことの一つは、興味ごとに様々なギルドがあることです。私たちは毎日学んだことをシェアするチャンネルを持っています。最近、同僚が同じことを実現するオープンソースツールをシェアしてくれました。Open In profile と全く同じ機能を持ちながら、オープンソースで、さらに多くのカスタマイズが可能です。そのツールが finicky です。

現在のところ、finicky は macOS でのみ利用可能です。私は chezmoi のドットファイル管理システムと統合させ、仕事用と個人用の両方のマシン向けの設定を含む dot_finicky.js.tmpl ファイルを作成しました。個人用マシンでは、大学院の勉強と大学に関連するリンクを特定の Chrome プロフィールで開き、その他すべてはデフォルトプロフィールで開くようにしています。

{{- if .work_computer }}

export default {
  defaultBrowser: "Google Chrome",
  handlers: [
    {
      match: (url) => {
        const keywords = ["work", "related", "keywords", "you", "want", "to", "open"];
        const urlString = url.href.toLowerCase();
        return keywords.some(keyword => urlString.includes(keyword));
      },
      browser: {
        name: "Google Chrome",
        profile: "Default"
      }
    }
  ]
}

{{  end -}}

{{- if .personal_computer }}

export default {
  defaultBrowser: "Google Chrome",
  handlers: [
    {
      match: (url) => {
        const keywords = ["personal", "project", "related","keywords", "you", "want", "to", "open"];
        const urlString = url.href.toLowerCase();
        return keywords.some(keyword => urlString.includes(keyword));
      },
      browser: {
        name: "Google Chrome",
        profile: "Profile 1"
      }
    },
    {
      match: (url) => {
        const keywords = ["github"];
        const urlString = url.href.toLowerCase();
        return keywords.some(keyword => urlString.includes(keyword));
      },
      browser: {
        name: "Google Chrome",
        profile: "Default"
      }
    }
  ]
}

{{  end -}}

Finicky はミニマルでシンプルなユーザーインターフェース付きで提供されています。ログを確認したり、設定が正しく読み込まれているかどうかをチェックできます。Finicky の使用を決めたら、それをデフォルトブラウザとして設定することを忘れないようにしてください。また、Finicky wikiには素晴らしい設定例がたくさんあるので、ぜひチェックしてみてください。