Scribble at 2024-01-16 09:45:53 Last modified: unmodified

添付画像

Google Keep を使っていて、いや更に言えばクラウド・サービスを使っていて困るのが、複数のデバイスでクライアント・アプリケーションを使っていると、それぞれのデバイスで保存したデータがなかなか同期されないということだ。昨日、寝る前に iPhone で保存したデータが、起床してデスクトップ・マシンで Google Keep にアクセスしても同期できていない。したがって、いつも儀式のようにデータを保存した後は必ず更新処理をするようになった。iPhone では下にスワイプし、デスクトップ・マシンでは右上のクラウド・アイコン(雲のような形のアイコン)をクリックする。

これはつまり自動でデータを同期しない仕様ということなのだが、これでどういうリスクを避けたり、どういうメリットがユーザにあるというのだろうか。僕らは「クラウド・サービス」というものに、寧ろデータを保存したら即座にクラウド側へストアされて、他のデバイスからアクセスしてもただちにデータが同期できていることを期待すると思うのだが、そういう期待をするのは間違っているのだろうか。でも、もし手動あるいは相当な時間を待たないと勝手には同期されないというのであれば、ディフォールトでは同期しないという仕様に何らかの理由があるはずだ。

たとえば、或るデバイスのクライアントで間違ったデータを作成したり、不幸な場合はデータがランサムウェアやウイルスなどによって改変されたり破壊されてしまったと想定したときに、その改変されたり破壊されたデータがクラウド側へ即座には反映されないほうがよいという判断はありえる。実際、僕らは情報セキュリティの実務家として、データのバックアップについてのルールとか社内規程とかを作って運用する立場にあるので、データのバックアップという脈絡で言えば、データを頻繁に同期しすぎるといけないということを知っている。なぜなら、データが改変されたり破壊されたときに、データを復元したり復旧させるための「改変履歴(バックアップのバックアップ)」には、世代という限度があるからだ。これは、もちろん運用しているストレージの容量によって限度は異なるにしても、確実に言えるのは、データを復元するための世代数にはいずれにせよ限度があるということだ。たとえば、10世代分のデータを保存するバックアップのシステムにおいて、データをデバイスから1分おきに違う内容で同期していると(同じ内容ならデータのハッシュ値や更新のタイムスタンプが同じなので、新しい世代として記録しないことが多い)、簡単な話だが10分前までのデータしか復元できないということになる。

余談になるが、マネジメントをやっていて(いやマネジメントに限らず同僚どうしでも言えることだが)困るのが、ここまで説明した時点で、それがどういうことになるのかを想像したり推論しない人が非常に多いという実感がある。おおよそ仕事ができないサラリーマンを見分ける一つの簡単な指標になると思うのだが、相手に話していることが何を意味しているのかを考えずに聞いている人というのは、はっきり言って聞く気がない。そういう人の特徴として、他にも会議中なのにメモをとろうとしないとか(東大生並の記憶力があるなら別だが)、自分が分からないことを質問しないとか、重要だと感じたことを復唱しないとか、幾つかある。しかし、それらは僕らが外見で判断できるからいい。困るのが、この手の外見では分からないことだ。よって、敢えてこちらから確認して表へ引き出すために、話したことから何かを考えていれば答えられるはずの質問を投げたりするという、或るていどは研修のようなことを日常業務でやる羽目になる。もちろん、「人間、一生勉強だ」とは誰でも言えるが、それを自分でやるのか、それとも僕らのようなマネージャに促されて初めてやるのかで、当人にとっての意義は全く違うと思う。職人の世界でも言えることだが、いつまでも「先生」を見ながら教えてもらうようでは、半人前であろう。

ということで、10分前までのデータしか復元できないということだと、1時間前にランサムウェアに感染したら、全ての改変履歴が暗号化されたデータで埋まってしまい、まともな内容の暗号化される前のデータは改変履歴に残っていないということになってしまう。仮に10,000世代まで履歴を保存しますなんていうクラウド・サービスがあったとしても、やはり1分おきに履歴を更新するなら、10,000分なんて1週間分にすらならないわけで、履歴が汚染されたデータで埋まってしまうというリスクは避けられない可能性がある。現実の実務では、その組織で扱っていたり改変しているデータの量にもよるが、おおよそ1日に1回ていどの頻度で改変履歴を保存することが多い。クラウド・ストレージのサービスだと、改変履歴の世代数というよりも日数で「30日前のバージョンまで保存している」といった仕様になっているわけだが、自社のファイル・サーバで同じことをしようとすると、場合によっては膨大な容量のストレージが必要となるので、そういう仕様の決め方はそれぞれの組織で実態を調べて決めたらいい。

ただ、ここまで書いてきて言うのも変だが、Google Keep がそういう理由でなかなかデータを同期しないのかというと、そういうわけでもないような気はする。実際、調べてみると「Google Keep が同期しないときの対処法」といったページがたくさんあるし、Google のサポート・サイトでも一つの話題になっているため、これは多くのユーザにとっては既知の、そして頻繁に起きている問題なのだろう。やはり、保存したデータが即座に複数のデバイスで同期、つまり共有できないことは「不具合」なのだ。ただ、色々な対処法が(相変わらず大量のコタツ記事では、デタラメに思いつきとして書かれていたりもするが)提案されているけれど、ひとまず手動で同期処理すれば、いまのところ僕の環境では即座に他のデバイスでも反映されるので、僕はこの儀式のような操作を続けようと思う。ユーザ、つまりヒトの方がシステムに最適化するというのも癪に障る話ではあるけれど、恐らくこのようなパフォーマンス、つまりは Google が費やすコストにかかわる話は、なんだかんだ言っても解決しない可能性が高いからだ。さきほど「同じ内容ならデータのハッシュ値や更新のタイムスタンプが同じなので、新しい世代として記録しないことが多い」と書いたわけだが、それはつまり最低でもハッシュ値を比較するために一定のペイロードを通信しているということなので、データを更新しないとしても Google は大量のデータを通信することになる。そのコストは、わずかなハッシュ値のペイロードだとしても、世界中のユーザが使っている Google Keep のデータとしては莫大な総量であり、データを同期するタイミングを1分縮めるだけでも、その通信コストは、はっきり言ってそのへんの中小企業の年間売上を遥かに超える金額となりえるからだ。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook