Apple が提供している「iCloud ブックマーク」という、Google Chrome 向けの拡張機能を、ご存知でしょうか。
Mac や iPhone / iPad の Safari ブックマークと、Chrome のブックマークを同期してくれる、大変に便利な機能です。
つまり、Safari で編集したブックマークは自動的に Chrome のブックマークに反映されますし、その逆もまた然り。
より正確には、手持ちの Windows 機に iCloud for Windows というアプリケーションをインストールする必要もあるのですが、ともあれ、モバイルでは iPhone、家では Mac と Windows を使ってまーす、みたいな人種にとって、大変に重宝する機能であることは想像に難くないでしょう。
こんな記事を書いているくらいですから、もちろん私も常用してます。
まず間違いなく便利ではあるのですが......
いやー、えーとですねー......
まぁ、細かいことは下の本文で述べるとして、ここでは簡単に説明しますが、つまるところ「iCloud for Windows」の対象ではないプラットフォームで Chrome を起動すると、なんと「iCloud ブックマーク」拡張機能は、自分自身を Chrome から削除してしまうのです。
追記:(2015/08/16)
最新の「iCloud ブックマーク」拡張機能は、対象外のプラットフォームであっても、自分自身を Chrome から勝手にアンインストールしなくなったようです。
ファイルのタイムスタンプを見ると、どうやら 2015/05 の中旬には対応されていたようですね。確認が遅れて申し訳ありません。
これにて、この記事もお役御免となった訳ですが、将来的に再発しないとも限りませんし、いちおう情報として残しておきます。
読み込み中です。少々お待ち下さい
え? 意味が分からないですって?
え? お前が何をほざいておるのか、さっぱり意味が分からない、ですって?
さもありなん。私も意味分かんないですもん。
じゃなくて、えっと、この現象って物凄い説明し辛いのでどう言ったものか――それじゃ、さらに平たく言うとですね、例えば Mac と Windows 機を両方持ってるとするじゃないですか?
で、Windows の方に「iCloud for Windows」をインストールして、同じマシンで Chrome にも「iCloud ブックマーク」拡張機能を追加し、Safari - Chrome 間でブックマークの同期が問題無く開始されたとします。
ところがですね、その後に Mac で Chrome を無造作に起ち上げると、Mac は「iCloud for Windows(iCloud ブックマーク拡張機能)」から見て対象のプラットフォームじゃありませんから、「iCloud ブックマーク」拡張機能は自分自身を Chrome から削除してしまうんですよ、これが。
何が問題なのか
するってぇと、どうなりますか。
Chrome をお使いの方は良く分かると思うんですけど、そんなことされちゃったらですね、Chrome 自体の強力な同期機能により、同一アカウントでログインしている全てのデスクトップ版 Chrome から、「iCloud ブックマーク」拡張機能は即時に自動的に削除されてしまうのです。
要するに、Windows の Chrome からも消えちゃいます。せっかく追加したのにねぇ。
そして、拡張機能が削除されたということは、当然ながら Safari - Chrome 間におけるブックマーク同期も停止します。
だって、削除された拡張機能で同期してたんですもん、そりゃそうですよね。
いやいやいやいや
......ん?
いやいやいやいや。
......ッはぁ!?。
いやいやいやいや。
はじめてこの現象に出くわした時の私は、まさしくこんな感じでした。
だって、これじゃ Mac で Chrome を使えないじゃん!!
え、なにこれ、どういうこと?
Mac で Safari をデフォルトで使うのはやぶさかじゃないですけど、確認作業やなんかで Chrome を使いたい場合だってある訳ですよ。
ところがどっこい、何気なく Mac で気楽に Chrome を起ち上げたが最期、iCloud ブックマーク拡張機能は削除され、結果的に Safari と Chrome の間でブックマークの同期がされなくなってしまうという寸法です(Chrome にログインして拡張機能を同期している場合)。
はぁ? なんじゃあ、こりゃあッ!?
自分が何かとんでもない勘違いをしているだけだろうかと思い悩む私を尻目に、Apple 様はさらなる残酷な現実を突きつけます。
冒頭で「iCloud for Windows の対象ではないプラットフォームで Chrome を起動すると」などと持って回った書き方をしましたが、それは理由があってのことなのです。
そう、もうお分かりいただけたと思いますが、事は Mac だけでは済まされません。
なんと、動作対象環境である Windows 7/8/8.1「以外」のプラットフォームで Chrome を起動すると、例外なく「iCloud ブックマーク」拡張機能は自分自身を削除してしまうのです。
Mac や Linux はもちろんのこと、同じ Windows でも XP や Vista、そして絶賛テクニカルプレビュー中の Windows 10 ですらお目こぼしをしてもらえまえせん(まぁ、10 は正式にリリースされたら、すぐ対象になると思いますけど→なりました。あと、ここではサーバーは無視しています)。
つまり、「iCloud for Windows」&「iCloud ブックマーク」を利用して Safari と Chrome の間でブックマークを同期したければ、Google Chrome は実質的に Windows 7/8/8.1 でしか利用できなくなってしまうのです!
こ れ は ヒ ド い。
「こいつ、さっきから何言ってんの?」という、この現象と縁のない方は幸いです。当記事をご覧いただく必要はございません。お目汚し、失礼致しました。
「そうそう!なんか Chrome から iCloud ブックマークが勝手に削除されちゃうんだよね! チョームカツク! Mac と Windows でブックマークを同期したいから使ってんのに、『Mac をお使いの場合、Safari のブックマークは、お使いの全てのデバイスで――同期されます』じゃねーよ! お前トコは、とっくの昔に Windows への Safari の提供を止めちゃっただろ! いい加減にしろ! なんだこれマジ頭オ○シイんじゃねーの!?」という貴方は、以下で一緒に対策していきましょう。
少々不格好ですが、なんとかなりますから。
でも、「頭オカ○イ」は言い過ぎだと思いますよ(ニッコリなすりつけ)
どのような現象か
上で書いたように、「iCloud for Windows」の対象ではないプラットフォームで Chrome を起動すると、「iCloud ブックマーク」拡張機能は自身を削除してしまいます。
あまりにも無慈悲。
Chrome ウェブストアに移動して、その場でインストールし直したところで無駄なあがきです。同じメッセージが表示された後、またすぐに削除されてしまいます。
無限ループって、怖くね?
なぜ発生するのか
Apple の言い分としては、「対象外だから」ということなのでしょう。
それは確かに正論ではあるのですが、通常 Chrome は拡張機能を同期して使うものですから、ユーザーに断りもなく勝手に自分自身を削除してしまうような、こんな仕様は困ります。
まるで、「Mac では Safari 以外使うな」と強要されているようで、気分的にも面白くありません。
というか、Mac であれ Windows であれ、パソコンでは Web ブラウザは Chrome で統一し、モバイルでは iPhone の Safari を使って両者のブックマークを同期したい、という要求に応えられませんよね、これ。
実装的には問題なく可能であるにも関わらず、です。
対策を考える
唯々諾々と現象を受け入れてしまうと、iCloud ブックマーク拡張機能を利用しようとする限り、Mac や Linux、Windows XP などで実質的に Google Chrome を起動できなくなってしまいます。
Apple が仕様を変更してくれる可能性なんて、どうせほとんど皆無ですから、「iCloud ブックマークで同期しつつ、Windows 7/8 以外でも Chrome が使えないと困る」という、私と志を同じくする人は、どうにかして抜け道を見つけ出すしかありません。
ということで、予め発見しておいた抜け道が、こちらになります(3分間のアレ的に)。
UA で判断してるよ!
ハードディスクのとある場所に存在する、何の変哲もないごく平凡なテキストファイル(あいまい)をちょろっと開きますと、どうやら iCloud ブックマーク拡張機能は、自身が動作している環境(OS)を JavaScript の window.navigator.appVersion で判別していることが分かります。
いわゆる、Web ブラウザのユーザーエージェント(以下、UA)ってヤツですね。
ちなみに、あなたがいま利用している Web ブラウザの window.navigator.appVersion の内容は、以下になります。
ついでに、あなたの Chrome で iCloud ブックマーク拡張機能が使えるか調べてみましょう。
※2015/03/15時点における判別です。iCloud ブックマーク拡張機能のアップデートにより、将来的に結果が変わる可能性があることは、ご承知おきください。
また、Chrome 以外でご覧になっている場合、「利用できます」と表示されても意味はありません。
UA をちょろまかそう
Web ブラウザの UA で削除するかどうかを判断しているのであれば、話は簡単です。
要するに、これを誤魔化してあげれば良いだけです。
表現は悪いですが、通りのよい言葉で言えば「偽装」です。
Chrome で UA の偽装といえば、まず真っ先に User-Agent Switcher for Chrome を思い浮かべる方も多いかと思いますが、あれは基本的に HTTP リクエストを置き換えるものと考えた方が良いでしょう。
JavaScript のオブジェクトにも反映できるようなことが書かれた設定項目もあるのですが、上手く動かない環境も多いみたいですし、よしんば動作したところで、この拡張機能を日常的に利用されている方ならば分かると思うのですが、プログラムの起動直後は UA の書き換えが間に合わない場合がありますので(これは当たり前の挙動です)、今回の目的に利用するには適していません(iCloud ブックマーク拡張機能は、Chrome の起動時に削除される為)。
そこで、どうするのかと言えば、例によって Chrome の起動オプションで指定してあげれば良いのです。
我々にとって都合の良いことに、Chrome は --user-agent というオプションで UA 文字列を丸ごと指定できるようになっています。
ここではサンプルとして、iCloud ブックマーク拡張機能が確実に利用でき、かつ現時点で最新の環境である Windows 8.1 の Chrome の window.navigator.appVersion と同じ文字列を指定することにしましょう。
つまり、Windows 8.1 上で動いている Chrome であるかのようなフリをする訳ですね。
例えばコンソールからであれば、こんなイメージで Chrome を起動します(UA の先頭に Mozilla/ を追加しています)。
chrome --user-agent="Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36"
※2015/03/15時点で有効。可能であれば、UA は常に最新のものに置き換えてください。
Widnows XP の場合
Windows の場合は、ショートカットで起動オプションを指定すれば良いだけなので、対応は非常に簡単です。
ここでは XP を例にとって説明していますが、Vista でも Windows 10 TP でも、どれでもやることは基本的に同じです。
例えば、32 bit 版の Windows であれば、リンク先の指定は以下のようになるでしょう(環境によって、パスは異なる場合があります。また、64 bit 版 Windows の場合、Program Files の後に (x86) とつける必要があるかも知れません)。
"C:\Program Files\Google\Chrome\Application\chrome.exe" --user-agent="Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36"
こんな風に編集したショートカットから Chrome を起動すれば、XP 上で動いていても、iCloud ブックマーク拡張機能は削除されないことを確認しています。
注意点として、以降は自分で編集したショートカットのみを使うようにしてください。
exe を直接起動したり、編集していないショートカットから起動すると元の木阿弥で、当然ながら iCloud ブックマーク拡張機能は削除されてしまいますので、十分に注意しましょう。
OS 起動時に Chrome が自動実行される場合
XP 等、iCoud ブックマーク対象外の Windows 起動時に、Chrome が --user-agent オプション無しで自動的に実行されて iCloud ブックマーク拡張機能が強制的に削除されてしまう場合は、スタートアップ設定も修正する必要があります。
具体的には、スタートメニューの「ファイル名を指定して実行...」から「msconfig」と入力して「システム構成ユーティリティ」を呼び出し、「スタートアップ」タブに「chrome」が存在するか確認します。
見つかった場合は自動実行される設定になっていますので、「場所」が指し示すレジストリの値に、上で設定したように --user-agent オプションを追加すればおっけーです。
レジストリの修正は、スタートメニューの「ファイル名を指定して実行...」から「regedit」と入力して「レジストリエディタ」を呼び出し、「システム構成ユーティリティ」で確認したレジストリキー(通常は「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run」)を開き、「GoogleChromeAutoLaunch_なんたらかんたら」をダブルクリックして、「値のデータ」の末尾に --user-agent オプションを追加します。
が、レジストリを弄りたくない人は、そこまで無理をせずに、タスクトレイの Chrome アイコンを右クリックして「Google Chrome のバックグラウンドでの実行を許可する」をオフにしてください。
そうすれば、OS 起動時に Chrome が自動実行されなくなります(が、当然のことながら、「Google Now」に代表される Chrome のバックグラウンドアプリは実行されなくなりますので、ご注意ください)。
Mac の場合
うへぇ、いままであんまり気にしてませんでしたけど、Mac の Dock って起動オプションを指定できないんですねぇ。
仕方がないので、別の方法を考えるとしましょう。
やり方はいくつかあると思いますが、ここでは Automator を利用する方法を見ていきます。
「シェルスクリプトを実行」にスクリプトを記述して、例えば「ChromeWin8.1」のような名前をつけて、Command+S 等で保存します。
正常に動作すればスクリプトの中身はなんでも構いませんが、いちおう例示しておきます(環境によって、パスは異なる場合があります)。
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-agent="Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36"
※パス中のスペースのエスケープは円マークではなくバックスラッシュ。
これだけでも十分なのですが、そのままだとアイコンが Automator のままですので、これを変更したい場合は、まず「アプリケーション」内の(本物の)Chrome を右クリックして「情報を見る」を選択し、アイコン部分を選択して Command+C 等でコピーします。
続いて、先ほど保存した「ChromeWin8.1」の情報を表示し、アイコン部分を選択して Command+V 等でペーストします。
以上のように、Automator でオプションを指定して Chrome を起動した場合は、Mac 上で動いていても iCloud ブックマーク拡張機能が削除されないことを確認しています。
但し、これを Dock に登録するのは避けた方が良いかも知れません。
何故なら、起動すると本物の Chrome のアイコンが Dock 上に現れて、分かり難いというか不格好だからです。
ですので、普段ランチャーを利用している方は、そちらに登録した方が良いでしょう。
め、めんどくさい......ていうか Mac って、別に言うほど使い易くないですよね。
まぁ、Mac はトラックパッドの操作感の良さが、全てをチャラにしてくれますけど。新しい MacBook 相当の感圧機能に対応したら、トラックパッドを買い直さなきゃですねぇ......金喰い虫だなぁ。
Linux の場合
Linux を常用している方は、Linuxer の誇りを胸に、自分でなんとかすればいいと思います。
デスクトップマネージャ毎にとか、書いてられませんし。
まぁ、シェルを使う場合は、上の Mac とほとんど同じですよ。お尻に & とか付けとけばいいんじゃないですか(適当)
問題点
- ここで作ったショートカット(シェル)以外から、うっかり Chrome を起動してしまうと、たちどころに iCloud ブックマーク拡張機能が消え失せますので、十分に注意しましょう。
- 起動オプションで指定した UA は、当然のことながら自動更新されません。時間が経つにつれて徐々に時代遅れになっていきますので、可能であれば定期的にショートカットの UA を更新しましょう。
- そのように処置したので当たり前ですが、今後は Mac 上で Chrome を動かしたとしても、接続したほぼ全てのサイトに「Windows 8.1 で動いている Chrome である」と認識されることになります。これによって、動作しなくなる Web アプリケーション等も出てくるかも知れません(まぁ、ほとんどの場合は問題無いと思いますけど)。
- この記事の内容は、2015 年 3 月時点で有効であり、今後、Apple が iCloud ブックマーク拡張機能の仕様を変更した場合、意図した通りに動作しなくなる可能性は十分にあります。というか、この方法では、いずれ動かなくなるでしょう。その時は、また別の対策が必要になるかも知れません。
- これら以外にも、私が予期していないなんらかの問題が発生する可能性はあります。が、現時点ではどうしようもないので、自己責任で逞しく生きてください。いまのところは、特に問題無さそうです。なぁに、何か起こったら、私も一蓮托生ですよ、わっはっは。
※この記事の内容は、あなたが抱えている問題を必ず解決することを保証するものではありません。また、当記事の内容によって生じたいかなる損害に対しても、執筆者は責任を負いません。予めご了承ください。
おまけ:Firefox の場合
Firefox の場合、Sync を有効にしていても、対象でないプラットフォームでは iCloud ブックマーク拡張機能はインストールされないようです。
ご覧のように、iCloud ブックマークは対象外の Mac にはインストールされず、両者に対応している User Agent Switcher は自動的に同期インストールされます。
え、なにこの子、賢い。
Firefox に出戻りしようかしらん、とか一瞬考えちゃいますね。
おわりに
いやー、それにしても、iCloud ブックマークのこの仕様は、ちょっとヒドいですよね。
まー、私が何か物凄い勘違いをしていて、もっと良い回避方法が他にあったり、そもそも本来こんなことは問題にならない筈だったら、大変申し訳ないんですけれども(とはいえ、Chrome の同期から拡張機能を外す、みたいな、機能を制限する方向での対応は論外です)。
もしくは、Firefox のように、対象外のプラットフォームでは拡張機能は同期インストールされなくなるような対応を Chrome 側が行うことより、この問題自体が遠からず解消するのかも知れませんが。
でも、2015 年の 3 月時点のこの実装だと、どう考えても Windows 7 や 8.1 以外で Chrome を起動したら、iCloud ブックマーク拡張機能は Chrome から削除されちゃうと思うんだよなー。
まぁ、私の勘違いだったら、それはそれでいいんですけど、どなたかのお役に立つかも知れないので、いちおう記事としてまとめてみました。
ちなみに、iCloud ブックマーク拡張機能には、これ以外にも同期によってブックマークが滅茶苦茶になってしまったり、そもそも有効にできない等、使っていて色々と問題があったりするのですが、前者については以前に書いたこちらの記事、後者についてはこちらの記事等を参照してください。
ていうか、iCloud ブックマーク拡張機能について、こんなに何度も記事にしてる人間は珍しいんじゃなかろうか(笑)
いや、だって、ネットにも情報が少ないんですもん。皆さん、あんまり使ってらっしゃらないんでしょうか。私は、コレが無いとホント困る、というくらい使い倒しておるのですが。