こんにちは、Hojoです。夏休みも終わり今週から復帰です! 今夏はアイスランドへ。温泉に入ってのんびりしたりハイキングをしてきました! Takaakiはもうすぐ2回目の夏休み、彼はアイスランドへマラソンをしに行くようですよ。
前置きはさておき、突然ですがみなさん問題です。 Vivaldiのユーザー数はどのように数えられているかご存知でしょうか?
前回のVivaldiのビジネスモデルを解説した回、とても好評でした。今回も一歩踏み込んで、ユーザーの数え方について見てみましょう!
次回の2.7へのリリースに向け、本件に関してお伝えしたいこともあります😊
* * *
ユーザーカウンティングはしばらく注目を浴びていないものの、裏方の私たちとしては常日頃から考えてきたものです。これまで何度か取り上げられた問題の一つは、個々のユーザーを区別するためにユニークIDを使用していることが、トラッキングの一種としてプライバシーの侵害にあたると捉えられる場合があることでした。
ユニークIDのみでは有用なトラッキングを行うには十分ではないとはいえ、中には懸念する人がいることも十分理解できます。プライバシーの侵害が一般的に見られるようになった今や、どんな識別子も恐ろしいものです。
だからこそ、ユニークIDを使用しないユーザーカウンティングの方法があるかもしれないということに数ヶ月前関心を持った時、それを実装できたらと強く思うようになりました。それに、今後公開予定のAndroid版にてもユーザーカウンティングは必要になるので、ユーザーカウンティングをもっとクロスプラットフォームな方法で再構築し、リクエストからユニークIDを取り除いていく方向に進みつつ大幅な変更を加えることは、タイミング的に絶好のチャンスだと感じました。
ただし、ユーザーカウンティングのソリューションを変更することは、軽視されるべきではないのは明らか。詳細は下部にて述べますが、tl;dr(要約)を必要とする場合は、以下をご覧ください:
- 次期Vivaldi 2.7より、ユーザーカウンティングのためのエンドポイントに対し、新たなリクエストが作られます。このリクエストは、現行のものとそれほど変わらず、ユニークID付きですが、今後のユニークIDなし型の実装のため使用されるパラメーターが追加されます。
- 数バージョン更新後、旧来のユーザーカウンティングリクエストは除去されます。
- さらにその後、ユニークIDはその新しいリクエストからも除去されます。同じ端末で複数のVivaldiがインストールされている場合のカウンティングを行いやすくするため、ローカル環境ではユニークIDを作成し続けますが、その端末でのみ使用されるものになります。
新しいリクエストの生成に使用されるコードは丸ごとC++で書かれ、ソースリリースに伴って公開されるため、コードの中身が私たちの述べている内容と一致していることは、みなさんもご確認いただけます。
「なんでこんな時間のかかる、回りくどいやり方をするんだろう」と思われた方 – これにはちゃんとした大切な理由があるのです。
ユーザー数のカウントは正確に
私たちは、新しく取り入れようと思っているコードが意図通りに動き、古いコードと同じ数を報告していることを確実にしたいと考えています。そのため、サーバーが以前のようにユニークIDによってカウントし続けられるよう、まずは新しい実装が以前のものと全く同じ動作をするようにする必要があります。新しいユーザーカウンティングのコードが、前のものと同じ数を報告することを確認して初めて、古い方のコードを廃止することができるのです。
その後、シスアドの同僚Claudiaが、ユニークIDなしでカウントできるようサーバーをセットアップするタスクを担ってくれます。ユニークIDの有無に関係なく同じ結果を得るためには、Vivaldiとサーバー側両方でのコードの変更に多少時間を要するかも知れません。全てうまく行った後、ユニークIDをリクエストから完全に取り除きます。それほどコード変更を要しないことを願いますが、全てを確実にしていく必要があります。
ユーザーカウンティングに必要な条件
基本的な考え方は非常に簡単です。1日に1回サーバーにリクエストを送信するようにVivaldiを設定し、24時間内におけるリクエストの数をカウントすることで、その日にVivaldiを使用していたユーザーの数がわかります。この種の情報は、ユーザー数に対するイベントの直接的な影響を確認したい場合にも便利ですが、特定の週または特定の月にVivaldiを使用している人の数を知る目的において、より有効に働きます。このような数値は、週末や休日に使用量が低下してもユーザー数の実態を掴みやすくしてくれます。毎週または毎月の数値を取得する際にも、考え方は同じです。毎週または毎月ごとに多少異なるリクエストを送信し、同じ期間にそれらのリクエストの数をカウントするだけです。
ユニークIDから得られる情報のうち、複製したい情報がもう少しあります。まずは、いつ新しいユーザーを取得しているかを把握することです。 Vivaldiが初めて起動されているかの情報をローカルで簡単に検出できるので、それをリクエストとともに送信します。
次に、Vivaldiを使用している期間を知ることも私たちにとってはとても有益な情報です。ユーザーが長期的に使用したいと思えるブラウザー作りを目指しているので、常日頃からVivaldiを使用してくれている人々が十分にいることを知ることも非常に重要です。そのため、各リクエストにインストールした週を追加します。
最後に、Vivaldiが(何らかの理由で)レポートできなかった日数を送信します。これにより、リピーターユーザーをより正確に把握できるようになります。
上記すべてに加え、Vivaldiが実行されているコンピューターのCPUアーキテクチャと画面解像度、ユーザーエージェントを取得しています。この情報はユーザーカウントとの直接の関係はありませんが、Vivaldiを使用しているマシンの種類を知ることができます。
これらはすべて、他のプライバシーに重きを置いている企業がユーザーのカウントにおいて行っていることと一致しています。上記が私たちが知っておく必要のある情報であれば、十分簡単ですが、ユニークIDは処理をより簡単にします。
同じコンピューターに複数のVivaldiをインストールしている場合のカウンティング
Vivaldiには、同じシステム上でブラウザーの複数のインスタンスを実行するためのいくつかのオプションと、あるマシンから別のマシンにVivaldiを設定を完全に移す方法があります。たとえば、Windowsインストーラのスタンドアロンオプションがこれを可能にしています。これらの機能は、後述の2つの状況を許すことを意味するため、ユーザーのカウントをより複雑にしてしまいます。
1つ目の状況は、あるユーザーが主にテストの目的で別々のプロファイルを使用し、コンピューターにVivaldiを複数回インストールする場合に発生します。このような場合、私たちは1ユーザーとしてカウントしたいので、たとえ異なるインストールがあっても、同じユーザーによるものであることをVivaldiが認識できるようにする必要があります。そうすれば、インストールごとに1日1回のリクエストではなく、ユーザーごとに合計1日1回のリクエストを送信できるようになります。
2つ目の状況は、同じコンピューター上の同じOSアカウントで、複数のユーザーが(独自のポータブルドライブを使用して)独自のスタンドアロンVivaldiインストールを使用する場合に発生します。このような場合、各インストールは、システム上の他のインストールを干渉することなく、それが別の人によって使用されていることを認識し、独自に報告する必要があります。
これらのケースを区別できるようにするため、これまでのソリューションは、LocalStateファイルの一部としてユニークIDのコピーを1つ、OSユーザープロファイル内にコピーを1つを保持することでした。コピーの1つが欠落している場合、他の使用可能なコピーを使用して再度セットアップされます。 両方のコピーが存在し一致しない場合、別のシステムに移動されたスタンドアロンインストールを実行していると想定できます(2番目のシナリオ)。それ以外のすべてのケースは、1番目のシナリオを想定します。
これらの2つの状況を区別するより良い方法を見つけていないため、送信を停止した後もユニークIDを生成および保存し続けます。これらは、Vivaldiがシステム上の他のインストールと連携して、一度だけカウントされるようにする必要があるかどうかを知る目的のみに使用されます。
「そこまでしなくても、大まかなユーザー数をカウントするので良いのでは?」と思われるかも知れませんが、そういうわけにも行かず…
正確なユーザー数が重要
より多くのユーザーがいることで、Vivaldiを優れたブラウザーにするための機能を実行できるようになります。これは主に、Christianによる最近のブログ投稿で言及されたパートナーシップに帰着します。是非読んでみてください。
多くのユーザーがいると伝えられると、このようなパートナーシップを構築したり、パートナーと良い取引をしたりすることができるようになります。 私たちが提携しているパートナー達にとって、より多くのユーザーがいるということは、彼らがより多くの人々にリーチできることを意味し、さらには、Vivaldiとの契約をより興味深いものにします。
ユーザー数は収益を生み出す目的で活用するパートナーシップに加えて、より技術的なパートナーシップにも影響します。 数バージョン前に実装したRazer Chromaサポートのような特定のOS機能、または特定のハードウェアをサポートする機能を実装する際、テクニカルサポートが私たちを通してより多くの人々に届くことがわかっている場合、提携会社からの適切なテクニカルサポートを受ける可能性も高くなるのです。
ただし、実際のユーザー数に関係なく、正確性を確保するためにできる限りのことを行っていることを示すことができなければ、真剣に受け止められることはできません。信頼できるカウンティングソリューションによってバックアップされていない場合、高い数値は意味を成しません。
これが私たちがこのユーザーカウンティングを慎重に実装した理由です。正確な数字に対する必要性と、ユーザーに関する厳密な最小限の情報のみを保持するという2つの要件のバランスを取る必要があったのです。
このユニークIDに基づくカウントから、単純なリクエストのカウントに基づくカウントへの変更により、Vivaldiはあらゆる形のトラッキングを回避するために可能なすべてのことを行なっていると、ユーザーのみなさんはさらに自信が持てることでしょう。
いかがでしたか?このびっくりするくらい複雑なトピック、質問や不明点があれば、是非コメントを残してくださいね。できる限りお答えします。
* * *
Vivaldi Hojo
画像元 – Crissy Jarvis (Unsplash)より。
原文 – How we count our users – Julien Picalausa