タブをページにまとめて同期できるChrome拡張を作りました。


普段、Chromeを使っているとタブがどんどん増えていき、最終的には訳が分からなくなるので、OneTabというChrome拡張機能を使って退避させていました。
ただ、このOneTab、1つだけ不満があって、ブラウザ間で保存したタブの同期ができず、個別管理になってしまうという点であり、「ないなら作るか」の精神で、そこを改善したアプリを自作しました。

はじめに

最初に書いたように、OneTabというタブを1ページにまとめてくれる拡張があって使っていました、
ただこの拡張が保存したタブの情報は、ブラウザ間の同期ができませんでした。
「Onetab 同期」で調べてみると、いろいろやり方を説明している記事は出てきます。
しかし、公式の機能にはないので説明されているやり方は、大体以下の2種類の方法に集約されます。

  • Onetabの使っているChromeのローカルストレージ領域をDropbox等で動悸させる
  • エクスポート・インポート機能で出力・取り込みする

前者は、端末が増えるたびに設定しなければならない & ネットワーク不調等でコンフリクトが起きたときの挙動が制御できない
後者は、毎回手動で出力・取り込みをしないといけない
という欠点があり、私の望んでいるものではありませんでした。

これをなんとか解消できないかといろいろ調べたのですが、Onetabではできそうになかったので、その対応として作ったのが、今回の「SyncTabClipper」です。

SyncTabClipperでできること

SyncTabClipperで現在できるのは、以下の機能です。

  • 現在のウィンドウで開いているタブをまとめる
  • 保存したリンクを個別で削除できる
  • 保存したデータをまとめて削除できる
  • 保存したデータを端末間で自動共有

元にしたOnetabでは他にも多くの機能がありますが、今回は最低限、タブをまとめる機能・同期する機能を持ったアプリとして作りました。

今後追加したい機能

今回は最低限の機能のみで出してますが、今後も改善は続ける予定です。
現状では、以下の機能を追加しようと考えています。

  • 追加したアイテムをブロックごとにまとめて開く・削除する(v0.0.5で実装)
  • 保存したリンクのバックアップ機能(v0.0.4で実装)

技術的なお話

この複数端末での同期機能ですが、Chrome Extension公式のstorage機能にアカウントに紐付いた領域に保存する機能があります。

この領域は、端末をまたいでもアカウントが同じであれば共通なので、そこにデータを保存すれば、自動的に端末間の共有が可能です。
ただし、このストレージは下記のように制限があり、あまり大容量のデータは保存できません。Onetabが同期機能を提供しないのもこの制限を嫌ってのことかもしれません。

  • QUOTA_BYTES(保存データ全体の最大容量): 102,400Byte
  • QUOTA_BYTES_PER_ITEM(1項目の最大容量): 8,192Byte
  • MAX_ITEMS(項目の最大数): 512
  • MAX_WRITE_OPERATIONS_PER_HOUR(1時間あたりの更新回数の上限): 1,800
  • MAX_WRITE_OPERATIONS_PER_MINUTE(1分あたりの更新回数の上限): 120

またRepositoryもgithubで公開していますので、気になる点があればIssueやPRお待ちしています。

終わりに

いままで自分用のChrome拡張を手元で作ることはありましたが、ちゃんと公開するのはこれが初めてでした。
前述のstorageの制限もあり、あまり大量のURLの保存は難しいですが、もしよければ使ってみてください。


タブをページにまとめて同期できるChrome拡張を作りました。” への2件のフィードバック

  1. こんにちは,onetabの同期をdropboxでするつもりが, store.json が見つからなくて困っていました.こちらのchrome拡張にちょっと期待して使ってみています.
    import exportが onetabと同じ md 形式もサポートしてもらえると移行が楽だなとおもいました.
    コメントだけですが,ご参考まで.

    1. コメントありがとうございます!
      あまりブログのコメントをチェックしておらず、返信が遅くなってすみません 🙇

      ご意見ありがとうございます、確かにそちらの方が出力されたもの自体の扱いもしやすいと思いますので、md形式の対応も考えてみます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください