Tatsu still writes something... Fourth season

これからも私はなにかをしてなにかを書く

Firefoxの新しいプロファイル機能なにあれ?

Firefoxの新しいプロファイル機能への移行方法がお粗末な事ありゃしない

自分の環境では昨日

forest.watch.impress.co.jp

等で出た新しいFirefoxのプロファイル機能が有効になったのだが、いろいろな所でお粗末な事ありゃしない。

いつもの設定されたブラウザはどこ行った?

はじめ、いつものようにFirefoxを起動すると新しいプロファイル機能のプロファイル選択画面が出てきた。

今までのプロファイルの選択と新しいプロファイル作成を選べて、今までのプロファイルと新しいプロファイルの作成が選択できるようだが、今までのプロファイルの選択を押しても何もできない。

仕方がないので新しいプロファイルをとりあえず作って起動し、一旦終了して今までのプロファイルを選択しようとしたがなぜか選択できない。

これで、事実上のデータロストである。あまり詳しくない人はここで詰まるというだろう。

「ヘルプ」 - 「他のトラブルシューティング情報」で表示できる新しく作ったプロファイルに今までのプロファイルフォルダのファイルを上書き保存することでデータ移行自体はできるのだが、コマンドラインから新しいプロファイル機能のプロファイルを選択することはできない。古いプロファイル機能のプロファイルが選択されるだけである。

今までのブックマークを蓄積してきたスタンドアローンの旧来プロファイルとAndroidLinuxFirefoxと同期するための旧来プロファイルを使い分けてきた自分にとってはランチャーのボタン登録でのプロファイル選択ができないので新しいプロファイルを能動的に使うにはプロファイル選択画面を一度経る必要があるという一手間がかかるので非効率的なことこの上ない。

ChromeなどBlinkベースのブラウザでは金太郎飴のように同じコマンドラインでプロファイルをコマンドラインから使い分けてランチャーなどで使い分けられることを考えるとこの実装はお粗末である。

更に、今までの実行ファイルfirefox.exeを-profilemanagerオプション付きで起動してプロファイルを作り、ランチャーなどで起動する際は-P プロファイル名でプロファイルを切り替えることができていた上、新しいプロファイル機能でできることは今までのプロファイル機能と変わらないときた物である。

これなら、従来のプロファイルマネージャー機能のGUIを現代風に変更して普段から呼び出せるようにするだけで良かったんじゃね?

強硬手段

いつもの設定のFirefoxが使えないと困るので強硬手段を執ることにした。

過去の都合でプロファイルを通常とは別の所に作っていたので、

C:\Users(ユーザー名)\Appdata\Roaming\Mozilla\Firefox 配下の

  • Profiles フォルダ
  • profiles.ini

を消してプロファイルのないインストール直後の状態を作り、一旦初期プロファイルを作った後今まで使っていたプロファイルの情報を亡き者としてFirefoxを起動し、終了した後今まで使っていたプロファイルの情報を書き写すということでとりあえず使えるようになった。

この後、段階的ロールアウトでプロファイルメニューが出てきたが、新規プロファイル作成を押しても何も起きないという状態。

実害はないが、なにそれ?状態である。この後の仕組みの解析結果の構想を見るに、どうにも作り込みが甘い状態で出した感がありありである。

画像のダウンロードなどもできる強力なページ情報機能、カジュアルに大量のブックマークをため込めるブックマークメニュー、ブックマークツールバー、その他のブックマーク、モバイルのブックマークと一時的に専門ページをブックマークするのにも使えてブックマークマネージャーもなれべ替えなど強力なブックマーク機能、サイトが用意している場合用意したスタイルシートを選択できるテーマ機能のようなalternative style sheetの選択機能といった情報を読むための機能があるので情報を読むためのブラウザとして優れている上に危険性のあるWeb標準に提案された機能を実装しないでWebの安全を陰で支えるといった安全性とプライバシーに配慮した設計方針は他にはないので、頑張って欲しかったという所である。

さて、これからが技術者のお楽しみの時間である。実際には生活用品なので急いでやる必要があったのだが。

仕組み

最近は金太郎飴のようなBlinkベースのブラウザとブックマークに飽きたのと、スマホ同期とのコンフリクトがブラックリストで解決できないことから飽きたのと、Meiryo UIも大っきらい!!やMulSyncの方がそれぞれの理由で優先度が高くなったので手をつけていなかったブックマーク変換ソフトBookSyncで各ブラウザのブックマーク位置を検出するルーチンを作っていた自分としては生活の必需品Firefox関連ということもあり、手を出す時間がないけど仕組みは知らないと困るということでどんな仕組みか調べてみた。

この新しいプロファイルマネージャーはどうも旧来のプロファイルマネージャーを使ってないことを前提としているようで新しいプロファイルが有効になるとprofile.ini情報に

StoreID=(ランダムな一意の英数字文字列)

というエントリが追加される。

合わせて新設された Profile Groups フォルダにStoreID=(ランダムな一意の英数字文字列)の (ランダムな一意の英数字文字列).sqlite というファイルが作成され、そこにプロファイルの情報が作成されるという仕組みっぽい。

プロファイルの内容はprofilesテーブルに格納され、各列はおそらくこういう内容であると推測する。

列名 内容
id プロファイルを一意に識別するid
path (多分今までのプロファイルマネージャーのPathキーと同じプロファイルを構成するファイルの格納位置
name プロファイル名
avatar 多分ここにBase64形式でエンコードされたアバターが入るのだろう
themeId 内蔵テーマのID
themeFg テーマの前景色?
themeBg テーマの前景色?

これが旧来のプロファイルごとにプロファイル情報SQLiteファイルから構成されるので今までのプロファイル機能を使っていた人には頭がぐちゃぐちゃである。