「配れる形」にするには、3つ削る必要があった|おはようカノジョ #85
はじめに
「おはようカノジョ」は、毎朝7:30に彼女がいってらっしゃいを言ってくれるXアカウント。
自分用のnoteダッシュボードがある。記事ごとのPV、スキ率η、フォロワー推移。GitHub ActionsでCSVを毎日蓄積して、GitHub Pagesで表示する仕組みだ。
このままでは、自分以外は誰も使えない。
GitHubのリポジトリをフォークして、Cookie設定を手動でやって、GitHub Actionsを動かして……。技術者でも面倒なセットアップを、noteクリエイターに渡せるわけがない。
Chrome拡張にしよう。そう決めた瞬間から、「何を足すか」ではなく「何を削るか」の判断が始まった。
最初の分岐:データをどこに置くか
先行プロダクトがある。note boosterというChrome拡張は、取得したデータを外部サーバーに送る設計を採用していた。サーバー側で蓄積・分析して、Webアプリとして表示する。機能は豊富になるが、ユーザーのnoteデータが外部に出る。
選択肢は2つあった。
A. ブラウザの中で完結させる。外部にデータを送らない。
B. 外部サーバーを使う。機能は広がるが、データが外に出る。
Aを選んだ。
理由は差別化。すでにBの設計で動いているプロダクトがあるなら、同じ土俵で戦う意味がない。「data stays in your browser」という一文が、そのまま製品のコンセプトになる。
ただし、Aを選んだ瞬間に制約が生まれた。
Chrome拡張のローカルストレージには約10MBの容量制限がある。
2つ目の分岐:10MBの中に何を残すか
最初の設計では、毎日の記事スナップショットを全部保存する予定だった。「3月1日時点で各記事が何PVだったか」を、日数分蓄積していく。
計算してみた。80記事なら1日16KB、1年で6MB。余裕がある。
でもこれは自分の記事数での計算だった。
配布先のユーザーが300記事持っていたら?
500記事だったら?
1年で容量を食い尽くす。
これ、人に渡せないな。
ここで「本当に毎日の記事別データが必要か?」と立ち止まった。
ダッシュボードのパネルを1つずつ確認した。KPI帯、PVランキング、スキ率ランキング、日次推移チャート。どれも使うのは「最新日の記事データ」と「毎日の合計値(summary)」だけだった。過去日の記事別データは、Phase 1のどのパネルでも使わない。
保存するものを変えた。記事スナップショットは最新日のみ保持して、毎回上書きする。過去日はsummary(合計PV、合計スキ、フォロワー数の6項目)だけ残す。
summaryは1日あたり約100バイト。3年分でも数百KB。容量問題が消えた。
「過去の記事別データが欲しくなったら?」という問いには、エクスポート/インポート機能で答える。JSONで書き出して、ユーザーが自分のPCに持てばいい。外部サーバーも不要。コンセプトとも矛盾しない。これはPhase 2で。
3つ目の分岐:自動で取るか、手動で取るか
既存のダッシュボードはGitHub Actionsで毎日自動取得している。Chrome拡張でも同じことをしたかった。
でもChrome拡張のManifest V3には制約がある。バックグラウンド処理を担うService Workerは、約30秒で勝手に止まる。自動取得のタイマー(chrome.alarms)はインストール時刻を基準に24時間ごとに動くから、「毎日3時に取得」みたいな固定時刻にならない。
そして何より、「ユーザーが知らないうちにバックグラウンドでAPIを叩く」のは、第三者に配る製品としてグレーだった。
自動取得をやめた。手動ボタン1つでワンクリック取得にした。
これでchrome.alarmsの権限も不要になった。ユーザーに求める権限が「storage」と「note.comへのアクセス」だけになる。権限が少ないほど、インストールの心理的ハードルが下がる。
削ることで見えた形
振り返ると、3つの判断はどれも「削る」方向だった。
外部サーバーを削った。過去日のスナップショットを削った。自動取得を削った。
削るたびに、設計がシンプルになった。シンプルになるたびに、壊れにくくなった。そして壊れにくいものは、人に渡せる。
「配れる形にする」とは、機能を足すことではなかった。制約を受け入れて、削ることだった。
おわりに
まだ実装は始まっていない。設計だけで1日が終わった。でも、何を作るかではなく、何を作らないかが決まった日は、進んだ日だった。
次は、これを本当に「配れる形」にする番だ。
関連記事
まひるの一言

👉「おはようカノジョ」は @ohayo_kanojo で毎朝7:30に投稿しています
#生成AI #AIイラスト #プログラミング
#個人開発 #開発日記 #記録 #実体験
#朝活 #AI活用
#Chrome拡張
