cosense-grass プライバシーポリシー

このサービスについて

cosense-grass は、Cosense (旧 Scrapbox) での活動量を可視化するツールです。 Cosense の公式サービスではありません。 運営元の株式会社 Helpfeel とは関係のない、個人のプロジェクトです。 ソースコードと設計は GitHub で公開しています。

保存するもの

項目形目的
利用者の識別子Google アカウントの sub をサーバ固有の秘密で HMAC した値誰の記録かを区別する
デバイスの公開鍵公開鍵そのもの記録の送信元が本人か検証する
デバイス登録用の使い捨ての符号符号そのものではなく、そのハッシュサインインしたデバイスの鍵を登録する
プロジェクトの識別子上記の識別子でソルトしたハッシュプロジェクトごとに集計する
日ごとの活動量分単位のビットマップと、1 日あたりの集計値 (書いた分数と読んだ分数、時間帯 (0〜9 時・9〜13 時・13〜18 時・18〜24 時) ごとの書いた分数と読んだ分数、書いた分のうち新しく作ったページと他の人が作ったページに書いた分数、編集したページ数、新しく作ったページ数、作ったリンクの件数)草と活動の概観、カードの図を描く

保存しないもの

Google ユーザーデータの取り扱い

Google でのサインインは、複数の端末 (PC やブラウザ) の記録を、同じ 1 人の利用者の草にまとめるために使います。 サインインは最初の 1 回と、端末を追加するときだけ必要です。以降の記録の送信は各端末の鍵による署名で認証します。

Google API から受け取った情報の利用は、Limited Use の要件を含む Google API Services User Data Policy に従います。

Cookie

認証の途中で、なりすましを防ぐための短命な Cookie を 1 つ使います (__Host-grass-auth、有効期間 10 分)。 中身は乱数と発行時刻だけで、利用者の識別子は含みません。サインインから戻った時点で、成功しても失敗しても削除します。

サインインに成功したときは、管理のページ (/account) を使うための Cookie を 30 分だけ発行します (__Host-grass-session)。中身は利用者の識別子と発行時刻で、署名しています。 JavaScript からは読めず (HttpOnly)、ほかのサイトからの遷移では送られません (SameSite=Lax)。 管理のページ (端末の一覧と失効・共有 URL・データの削除) でだけ使い、活動の記録には使いません。 追跡目的の Cookie は使いません。

ログ

サーバのログには集計値だけを記録します。利用者の識別子はログに出しません。 記録するのは、書き込み量の概算、認証の失敗率、エラー率などの統計です。

保持期間

データ保持
分単位のビットマップ90 日
日ごとの集計値削除しません
デバイスの公開鍵失効させるか、データを削除するまで
デバイス登録用の符号のハッシュ使うまで (最長 5 分。使われなければその後の定期処理で削除)

日ごとの集計値は、数年後に振り返れるように無期限で保持します。 不要になったら管理のページ (/account) からいつでも削除できます。

分単位のビットマップは、同じ記録が重複して届いたときに正しくまとめるための作業データです。 90 日で削除しますが、日ごとの集計値が残るのでグラフは変わりません。

共有される範囲

活動量のグラフは、利用者が共有 URL を誰かに渡したときと、下の「プロフィールページへの書き込み」で貼った図を誰かが見たときだけ他人が見られます。 共有 URL は利用者の識別子から一方向に導出され、第三者が推測や計算で求めることはできません。

共有 URL の図には、日ごとの活動量 (と、書いたのと読んだのどちらが多いかの色) と、期間全体の活動の割合 (新しく作る・育てる・他の人のページに関わる・読む) が表れます。割合は期間全体のものだけで、日ごとの割合は表れません。

どの共有 URL からも、URL を少し変えるだけで同じ図を別の形で開けます。 期間は直近 26 週・直近 1 年・過去の各年から選べます。 1 日の表し方は 1 マスか、朝 (9〜13 時)・昼 (13〜18 時)・夜 (18 時〜翌 9 時) の 3 マスから選べ、3 マスの形では どの時間帯に活動しているかが分かります。

日ごとの数値の URL (JSON) は、草の URL とは別にあります。 管理のページに合算の分を、Cosense で開く草のダイアログに合算とプロジェクト別の分を表示します。 この URL を渡した相手には、日ごとの書いた分数・読んだ分数・編集したページ数・新しく作ったページ数、 新しく作ったページと他の人が作ったページに書いた分数、作ったリンクの件数、 朝 (9〜13 時)・昼 (13〜18 時)・夜 (18 時〜翌 9 時) ごとの書いた分数と読んだ分数が見えます。草の URL からこの URL を作ることはできないので、草を見せた相手に数値まで見せるかは別に選べます。 この URL も、利用者の識別子から一方向に導出され、第三者が推測や計算で求めることはできません。 検索エンジンには載せないよう指示しています。

プロジェクト別の共有 URL には、プロジェクト名が含まれます。 どの草がどのプロジェクトのものか 分かるようにするため、画像にも名前を描きます。サーバはこの名前を保存せず、画像を描くときに 受け取って使うだけです。名前を見せたくないときは、URL の末尾の ?l=... を削って渡してください (名前のない草が表示されます)。全プロジェクトを合算した共有 URL にはプロジェクト名が含まれません。

共有 URL には、Cosense のユーザー名も含まれます (合算とプロジェクト別の両方)。誰の草か 分かるようにするため、画像にユーザー名を描きます。プロジェクト名と同じく、サーバはこの名前を 保存せず、画像を描くときに受け取って使うだけです。見せたくないときは、URL から u=... を 削ってください。

非公開プロジェクトの共有 URL には、アイコンの Gyazo の画像 ID (i=...) が含まれることがあります。 非公開プロジェクトのアイコンはサーバが Cosense から取得できないため、 UserScript が、ログイン中のブラウザで自分のユーザー名のページの画像から ID を取り出して URL に添えます (画像が Gyazo にあるときだけ)。サーバはこの ID も保存せず、 画像を描くときに受け取って使うだけです。Gyazo の画像は URL を知っていれば誰でも開けるので、共有 URL を受け取った人は、図に描かれた小さなアイコンのほかに、 元の大きさのアイコン画像も開けます。 見せたくないときは、URL から i=... を削ってください (図は、アイコンのない形で描かれます)。

プロフィールページへの書き込み

UserScript は、導入したプロジェクトの自分のユーザー名のページ (プロフィールページ) に、そのプロジェクトのカードの図の行を自動で書き込みます。 書き込みはお使いのブラウザから、ログイン中の Cosense のアカウントで行い、サーバを経由しません。

第三者への提供

しません。広告も解析サービスも使いません。

インフラストラクチャとして Cloudflare (Workers と D1) を使い、認証に Google の OpenID Connect を 使います。それ以外にデータが渡ることはありません。

ただし、図にアイコンを描くときは、サーバが共有 URL のプロジェクト名とユーザー名で Cosense にアイコンを問い合わせ、 アイコンの画像を置いている先 (Gyazo など) から画像を取得します。共有 URL に Gyazo の画像 ID (i=) があるときは、その ID で Gyazo から直接取得します。

データの削除

サーバのデータは、管理のページ (https://grass.soui.dev/account) からすべて削除できます。 Google でサインインすると、登録した端末の一覧・共有 URL・削除の操作ができます。 削除すると、日ごとの集計値・ビットマップ・共有 URL・登録した端末の鍵がすべて消え、 共有 URL の草も日ごとの数値も見られなくなります。端末ごとの失効も同じ画面からできます。

お使いのブラウザに残る記録は、Cosense のページメニュー「cosense-grass」→「設定」から消せます。 ブラウザの中にしかないので、サーバからは消せません。同じ画面から、その端末の登録だけを外すこともできます。

数値の正確性について

記録される活動量は利用者のブラウザからの自己申告で、サーバに検証する手段がありません。 評価や比較の根拠に使えるものではありません。

免責

これは無償で提供される個人のプロジェクトです。可用性やデータの保全を保証しません。 サーバの無料枠の上限に達した日は記録が受け付けられず、翌日に再送されます。

連絡先

GitHub の Issue から 連絡してください。

変更

内容を変更した場合は、GitHub のリポジトリの履歴に残ります。 重要な変更があるときはリポジトリで告知します。


cosense-grass · 管理 · プライバシー · GitHub