5.3 KiB
sidebar_position, _i18n_hash
| sidebar_position | _i18n_hash |
|---|---|
| 1 | 1eae5f5894f7cbf4de993993feab86a5 |
紹介
背景
コンテンツクリエーターとして、私たちはしばしば記事をさまざまなサードパーティのプラットフォームで公開します。しかし、コンテンツに真剣な人々にとって、出版は始まりに過ぎません。私たちは時間をかけて記事の読者数を継続的に監視する必要があります。残念ながら、データ収集能力は各プラットフォームが提供するものに限られており、プラットフォーム自体の機能に大きく依存しています。さらに、同じコンテンツを異なるプラットフォームで配布すると、読者数や訪問者データが完全に分断されてしまいます。
開発者として多くのソフトウェアアプリケーションを作成しますが、リリースするとコントロールを失うことがよくあります。たとえば、コマンドラインプログラムをリリースした後、ユーザーがそれとどのようにやりとりしているのか、またはどれだけのユーザーが私のアプリケーションを使用しているかを知る方法がありません。同様に、オープンソースアプリケーションを開発する場合、過去にはGitHubのスター数を通じてのみ関心を測ることができ、実際の利用状況についてはわからないという状況でした。
したがって、個人のプライバシーやその他の制約を尊重しながら、最小限の情報を収集する簡単なソリューションが必要です。このソリューションがテレメトリーです。
テレメトリー
コンピューティングの分野では、テレメトリーは一般的な技術であり、コンテンツクリエーターの基本的な分析ニーズを満たしながらプライバシーの懸念に対処するために、最小限かつ匿名での情報報告を伴います。
たとえば、ReactのNext.jsフレームワークはテレメトリーを使用して情報を収集しています:API Reference: Next.js CLI | Next.js (nextjs.org)
あるいは、1ピクセルサイズの透明な空白画像を記事に埋め込むことで、制御できないウェブサイト上で訪問者データを収集することが可能です。現代のブラウザとほとんどのウェブサイトでは、セキュリティ上のリスクのためにカスタムスクリプトの挿入をブロックしますが、画像はそれに比べると非常に無害に見えます。ほとんどすべてのウェブサイトが第三者の画像のロードを許可しているため、テレメトリーは実現可能です。
画像を通じてどのような情報を収集できるか?
驚くことに、単一の画像リクエストを受け取ることで、予想以上の情報を収集できます。
ネットワークリクエストを分析することで、ユーザーのIPアドレス、訪問時間、参照元、デバイスタイプなどの情報を取得できます。これにより、ピークの読者時間やトレンド、地域別の分布、異なるプラットフォームにおける詳細なトラフィックパターンを分析することができます。この情報は特にマーケティングやプロモーション活動にとって非常に価値があります。
テレメトリーをどのように実装するか?
テレメトリーはインターネットリクエストを受信するエンドポイントを持つ基本的な技術です。そのシンプルさから専用のツールは少ないですが、その需要は明確です。
テレメトリーソリューションを開発するのは簡単です。プロジェクトを作成してルートを設定し、リクエストボディから情報を収集し、空白画像を返すだけです。
以下はNode.jsを使用した例です:
router.get(
'/telemetry.gif',
async (req, res) => {
const ip = req.ip;
const referer = req.header['referer'];
const userAgent = req.headers['user-agent'];
// データベースに保存
const blankGifBuffer = Buffer.from(
'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
'base64'
);
res.header('Content-Type', 'image/gif').send(blankGifBuffer);
}
);
自分でソリューションを開発したくない場合は、Tianjiをお勧めします。このオープンソースプロジェクトは「ウェブサイト分析」、「稼働時間監視」、および「サーバーステータス」を提供し、最近テレメトリ機能も追加され、コンテンツクリエーターがより良いデータ収集を行えるように支援します。特にオープンソースであることは、自分のデータをコントロールでき、複数のプラットフォームからのトラフィックを一箇所に集約し、異なる場所で同じ情報を確認しなければならないという分断を回避できるという利点があります。
GitHub: https://github.com/msgbyte/tianji
公式ウェブサイト: https://tianji.dev/