見出し画像

「配れる形」にするには、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拡張

いいなと思ったら応援しよう!