cmsr-icon

以前紹介した Chrome 用拡張機能の Customizer を更新しました!
以前の紹介はこの記事の最後のほうに書いてます

ダウンロード

今回、新しいスクリプトを追加しようとしたのですが、必要な権限が足りてませんでした
スクリプトの追加だけじゃなくて拡張機能本体の更新が必要になったので、この機会に機能追加やバグ修正をすることにしました

追加機能

エクスポート・インポート

使う人に直接関係する追加機能はエクスポート・インポート機能の追加です
この拡張機能はストアを通してない野良拡張なので自動でアップデートできません

開発者モードでローカルのフォルダを読み込んでるならファイルを上書きするだけです
しかし、 crx ファイルをロードしていた場合は新しいバージョンをインストールして古いバージョンをアンインストールすることになります
こうなるとスクリプトや設定などのデータが引き継げないです

その対策のために拡張機能データのエクスポートとインポート機能をつけました

cmsr-exin

エクスポート

Plain を選択すると .cmsr ファイルでエクスポートします
中身は JSON 形式のテキストファイルです
読んだり書き換えたりできます

Compressed を選択すると .cmzr ファイルでエクスポートします
中身は JSON を暗号化したものです
エクスポートするときにパスワードの入力が必要です
ここで設定したパスワードを忘れるとどうやっても復元できないので忘れないようにしてください

インポート

.cmsr ファイルか .cmzr を選択するとインポートできます

Merge にチェックをつけると今の設定とインポートする設定をマージします
今の設定があるものはそのままで、存在しないスクリプトだけインポートします
チェックしない場合は今のスクリプトや設定を全部消してインポートするファイルに置き換えます

スクリプトストレージ

これはスクリプトを作る人向けの機能です
これまでは、スクリプトが独自にデータを保存したい場合は好きに localStorage などを操作できました
それだと今後の機能追加や別スクリプトとの競合もありえます

それを解決するためにスクリプトごとのストレージ空間を作ることにしました
中身は localStorage にプレフィックスがついただけです
拡張機能権限で動くスクリプトで parameter.storage にアクセスすると storage オブジェクトを参照できます

使い方
storage.save(name, value)
storage.load(name)
storage.delete(name)

name は文字列で value は JSON 化できる値です

追加スクリプト

追加したスクリプトの紹介です
Provided のタブで見たり取り込んだりできます

エクスポート

エクスポート・インポート機能を作って満足していたら重大なことに気づきました!

『新しいバージョンでエクスポートできても、今のバージョンからの引き継ぎができない』のですよね・・・

というわけで、今のバージョンでも使えるようにスクリプトとしてのエクスポート機能も用意しました
こっちは簡易版で暗号化とかはありません
フォーマットは .cmsr 形式のみで互換性があります

最初からエクスポート・インポート両方をスクリプトとして作ればよかった・・・

セッションスイッチ

最後になりましたが、これがメイン機能です
ただし<<ベータ版>>です

ネットしてるとアカウントを切り替えたいことって多くないですか?
仕事用とプライベート用、みたいな分け方ならブラウザのプロファイル(ユーザ)切り替えが使えます
複数のサイトをまとめて切り替えたいならいいのですが、個別に切り替えたいときには向いていません

例えば、ライブドアのアカウントはずっと一つのにログインしてたいけど、 Twitter だけ切り替えたいとか
Yahoo は 3 つを切り替えるけど、 Google は 2 つを切り替える、とか

これはそういうことをするための拡張機能です

やってることは Cookie の管理です
スクリプトを実行するとアプリケーションページが開きます

sesw-ex1

上のフォームに URL を入れて OK を押すと、下に Cookie のリストが表示されます
画像は、このブログの Cookie を取得した例です

Save を押すと、この Cookie のグループをセッションとして保存します
最初は Save も Save as も一緒で、名前を入力して保存します
保存したら更に下にセッションのリストが並びます

sesw-ex2

保存すると、そのセッションが選択状態になります
セッションリストでは、現在選択中のセッションが青色で表示されます
また、画面右上にそのセッションの名前が表示されます
選択中のセッションがある場合、 Save ボタンを押すとこのセッションが上書きされます
Save ボタンを押さない限り、ブラウザの Cookie が更新されても自動で保存したセッションの Cookie を変更しません

別の名前で新しくセッションを作成するには、 Save as ボタンです

別のセッションに切り替えたい場合は、そのセッションの Clear and load ボタンを押します
現在のブラウザの Cookie をクリアしてから、切り替え先のセッションの Cookie をセットします
Save and load ボタンの場合は、現在のセッションに Cookie を保存してから切り替えます
Save ボタンを押す手間を省けます

ちょっとした便利機能で、左上の「≡」マークがあります
マウスを乗せると保存済みセッションがある URL のリストが表示されます
クリックするとその URL を自動で入力します

注意点

Cookie のみの切り替えなので、それ以外の仕組みを使ってるサイトの場合は思い通りに動きません
ほとんどのサイトでログインは Cookie を使うと思いますが、 Web Storage とかにもデータを入れていてログイン成功時に更新している場合、そこで整合性が取れなくなります

とりあえず使ってみてそれっぽく動いてるとは思うのですが、ログインのような大切な部分に関わるところなのでベータ版としてます
なにか問題が起きても私は責任は取れませんので、ご理解の上使ってください
なにかあると言っても、 Cookie が消えたとしても再ログインすればいいだけなので、アカウント間違って誤爆とかでしょうか

拡張機能データをエクスポートする場合は、 Cookie の中身も含まれるので、取り扱いには注意してください
誰かに盗まれるとアカウントの不正ログインができます

信頼できないスクリプトを入れると localStorage にアクセスして取り出せてしまいます……が、スクリプト動かせるのなら直接ブラウザの Cookie を読み取れるので、このスクリプトを使うかどうかに関わらず信頼できないスクリプトを登録するのは危険です