Workers KV の運用・設計で気をつけていること
📌 記事の取り扱いについて(公開当時の内容を含みます — タップで詳細)
本記事は公開当時の体験・気づきをまとめたものです。現在のツール数・プラン数・対象年齢・記事数・仕様とは異なる場合があります。最新の内容は各ツールページをご確認ください。ツールや外部サービスの仕様・料金は変更されることがあるため、利用前には各公式情報も併せてご確認ください。記載に誤りを見つけられた場合はお問い合わせフォームよりご連絡いただけると助かります。
ツール工房.ai のいくつかのツールでは、Cloudflare Workers KV(キーと値を紐付けて保存できる、ネット上の小さなメモ帳のような仕組み)を使っています。「KV とは何か」「何に使っているか」という入門の話は別の制作記に書いたので、そちらに譲ります。
この記事では、どこに使っているかではなく、どう運用・設計しているかに絞ります。使ってみて「次からはこうしよう」と決まってきたことを、地味だけど効くものから順にまとめました。入門編よりは少し運用寄りの話です。
キーの設計を最初に固める
KV を使うとき、いちばん気をつけているのがキー(保存場所の名前)の設計です。値そのものよりも、キーをどう付けるかで後の運用の楽さが大きく変わる、というのが使ってみての実感です。
私のサイトで実際に使っているのは、用途を表す言葉を先頭に付けるという素朴な形です。たとえば、フォームから届いた依頼は req: で始まる名前、記事に付けた段落メモは note: で始まる名前、というふうに分けています。段落メモのほうは、そのあとに記事の名前を挟んで、さらに細かい番号を足す、という三段構えにしています。
この付け方の何が嬉しいかというと、前方一致(名前の先頭が同じものをまとめて探すこと)で絞り込みやすいことです。KV は「名前の先頭が〇〇で始まるキーを探す」という取り出し方ができるので、
note:で始まるキー → 段落メモ全体note:のあとに記事名を足したもの → その記事のメモだけ
というふうに、欲しい範囲をキーの名前の途中までで絞り込めます。日付や番号を桁を固定した形にしておくのも地味に効いていて、キー名で見たときに順番に扱いやすくなります。
逆に、キー設計を雑にしてベタッと繋いでしまうと、あとから一部だけ抜き出したいときに、どこまでが何なのか分かりにくくなります。KV は条件で中身を検索するのは苦手なので、検索の代わりにキーの命名で絞り込む、というのが設計の勘どころだと思っています。
ただ、全部がこの形というわけではありません。○×トラッカーだけは tracker という一つの保存場所にまとめていて、その中に記録がぜんぶ入っています。ツールの性格によって、細かく分けるか一つにまとめるかは変わる、というのが正直なところです。
私が決めている、ささやかなルールはこのあたりです。
- 区切り文字(
:)を統一して、用途・対象・番号の順を崩さない - 日付や番号は桁を揃える(
5ではなく05)ので、並べたときに順番になる - 「この接頭辞で始まるキーをまとめて扱う」が安全にできる単位で区切る
最初に少しだけ設計に手間をかけておくと、あとから集計や掃除をしたくなったときに、新しいコードをほとんど書かずに済みます。
中身を確認できる画面を用意する
KV のもう一つの弱点は、保存したデータが外から目で見えにくいことです。普通のファイルのように一覧で開いて眺める、という感覚では扱いにくいです。
Cloudflare の公式管理画面でも中身は見られるのですが、確認したくなるたびにそこまで行くのは面倒です。
そこで、自分用の管理画面にフォームから届いた依頼を確認する画面を作りました。合言葉(パスワード)が合わないと中身を返さない作りにしてあって、req: で始まるキーだけを新しい順に読み出し、件数と本文を並べる、という単純なものです。
この画面が見るのはフォーム投稿ぶんだけで、KV に入っている全部のキーを一覧できるわけではありません。「あれ、ちゃんと届いてる?」という不安が湧いたときにその場で確認できれば十分だったので、そこまでにしています。
キー設計をきちんとやっておくと、こういう画面を作るのが楽になる、というつながりもあります。用途ごとに先頭を分けておいたおかげで、「req: で始まるものだけ」と一行で指定できました。
消すときの用心
KV は気軽に書き込める分、気軽に上書きや削除もできてしまいます。しかも消えた直後は画面の見た目が変わらないこともあって、しばらく気づかない、というのがこわいところです。
正直に書くと、いま私が使っている削除の仕組みは、確認を挟みません。管理画面の削除は押した時点で消えますし、手元から段落メモをまとめて消すスクリプトも、対象を並べて見せることなくその場で全部消します。作ったときは「自分しか使わないから」と思っていたのですが、あとから見ると、いちばん取り返しのつかない操作にいちばん手当てがない状態でした。
なので、いまは消す側を厳しくするのではなく、控えを取る側で守る形にしています。手元に置いてある .command ファイルをダブルクリックすると、フォームの依頼ぶんと○×トラッカーのデータを、日付をつけた JSON ファイルとして手元に保存してくれます。KV の中にコピーを増やすのではなく、外に出して残しておく形です。
「消す前に一度見せる」という仕組みを入れるほうが本筋なのは分かっているので、ここは宿題として残っています。
なお、結果整合(書き込んだ直後に別の場所で読むと、しばらく古い値が返ることがある)や無料枠の上限、D1 などとの使い分けについては、入門の記事のほうで触れています。運用していて「KV だけだと足りないかも」と感じる場面の話も含めて、こちらをどうぞ。
まとめ
Workers KV は軽くて扱いやすい仕組みですが、使ううちに「設計と運用でちょっと気をつけるだけで、ずいぶん楽になる」ことが分かってきました。私がいま大事にしているのは、
- キーの名前を用途で分ける(前方一致で絞りやすい形に)
- 必要なぶんだけ確認できる画面を持つ(全部を見ようとしない)
- 消す仕組みが甘いぶん、控えを外に取っておく
の三つです。どれも派手さはありませんが、地味なところを丁寧にやっておくと、KV はかなり頼れる相棒になってくれます。
この記事は、2026年時点で Cloudflare Workers KV を運用してみた個人開発の体験談です。Cloudflare の仕様・料金・無料枠は変更される可能性があるため、実際に使う前には公式ドキュメントをご確認ください。
← 他の制作記を見る | トップ | お問い合わせ