← 制作記一覧へ

ツールの記録を保存する場所に困って、Cloudflare KV を使ってみた話

公開: 2026-05-19 · #31 / 最終更新: 2026-07-13 Cloudflare個人開発非エンジニア

📌 記事の取り扱いについて(公開当時の内容を含みます — タップで詳細)

本記事は公開当時の体験・気づきをまとめたものです。現在のツール数・プラン数・対象年齢・記事数・仕様とは異なる場合があります。最新の内容は各ツールページをご確認ください。ツールや外部サービスの仕様・料金は変更されることがあるため、利用前には各公式情報も併せてご確認ください。記載に誤りを見つけられた場合はお問い合わせフォームよりご連絡いただけると助かります。

ツール工房でいくつかツールを作っていると、何度も同じ問題にぶつかりました。

それは、「ちょっとしたデータをどこに保存するか」 です。

たとえば、

  • ○×トラッカーなら、毎日の記録を保存したい
  • 更新リマインダーなら、自動で動く仕組みが受け取った内容や途中の状態を覚えておきたい
  • 問い合わせフォームなら、送られてきた内容を後から見られるようにしたい
  • 連続でアクセスしてくる怪しい相手は、「最近何回来たか」を覚えておいて弾きたい

最初は、こういう保存の仕組みを作るのは難しそうだと思っていました。

でも、Cloudflare KV というものを使ってみると、個人で作る小さなツールならかなり便利に使えることが分かりました。

ツールを作ると「ちょっと保存したい」が出てくる

普通のホームページは、表示するだけなら保存の仕組みは要りません。

でも、ちょっと動きのあるツールを作ろうとすると、すぐに 「保存したいもの」 が出てきます。

「今日の記録」「前回の状態」「送られてきた内容」など、毎回ゼロからではなく、前回までの内容をどこかに残しておきたい、という場面です。

Cloudflare KV はネット上の小さなメモ帳みたいなもの

Cloudflare KV は、ものすごく簡単に言うと 「ネット上に置ける小さなメモ帳」 のようなものです。

紙のメモ帳と違うのは、

  • 自分が用意した裏側の仕組み(Worker など)を通して、ネット越しに読み書きできる
  • メモには名札(タイトル)を付けて整理できる
  • 名札を指定すれば、いつでも同じメモを引き出せる
  • 保存するときに「賞味期限」を付けられる(一定時間が経つと自動で消える。この賞味期限は最低60秒から指定できます)

というところです。誰でもブラウザから直接覗ける公開メモ帳ではなく、自分が用意した裏側の仕組みや管理画面を通して読み書きする、というイメージが近そうです。

最後の「賞味期限」は、あとで出てくる 連続アクセスの数を数える話 で効いてきます。

使い方1:○×トラッカーの記録保存

最初に KV を使ったのが、○×トラッカー(習慣記録ツール)でした。

このツールでは、「その日に何を記録したか」を保存しておく場所として KV を使いました。

たとえば、今日の記録を保存しておけば、あとから1か月分の記録を読み出して、カレンダーのように表示できます。毎日の記録は、書き込む回数が少なくて、読み出す回数の方が多い使い方です。KV はもともと、こういう「読み出しが多くて、書き込みは少なめ」の用途に向いているらしく、無料枠でも問題なく動いています。

使い方2:更新リマインダーで「データの鮮度」を確認する

毎週土曜に、公開中のホテルデータが古くなっていないかを知らせるリマインダーも作ってあります。

このリマインダーは自動で動いていて、公開データに記録されている「いつ作られたか」の情報を読み取り、今から何日前のデータか を計算して、その結果をメールで知らせてくれます。「そろそろ更新した方がよさそう」と自分で気づけるようにするための仕組みです。

自動で動く仕組みは、人が横についているわけではないので、受け取った内容や途中の状態を、どこかに残しておきたい場面がよく出てきます。そういう 「自動の仕組みが小さなメモを残しておく場所」 としても、KV は都合が良いです(次の使い方3・4がその例です)。

使い方3:フォームの送信内容を残す

ツール工房の管理画面では、お問い合わせ・リクエストフォームから送られてきた内容も KV に保存しています。

送信された日時に短い識別番号を組み合わせたものを名札にして、内容を1件ずつ保存しておく形です(本文のほか、スパム対策のために送信元の情報も一緒に残しています)。こうしておくと、後から新しい順の一覧で読み返せます。

ただし、フォームの内容には名前や連絡先など、人によっては個人情報が含まれることもあるので、管理画面にはパスワードを掛けて自分しか見られないようにしています。いまは特に期限を付けずに保存し、削除の依頼があれば消す、という運用にしていますが、本来は古くなったメモを定期的に消す・保存しておく期間を決めておく、といった配慮もした方がよいと思っています。

使い方4:怪しい連続アクセスを弾くカウンター

お問い合わせ・リクエストフォームには、短い時間に同じ相手が何度も送信してくるような使われ方に備えて、簡単な抑止の仕組みを入れておきたいと思いました。放っておくと、こちらが使っている外部サービスの公式データを取りに行く入口(API)の無料枠を、無駄に消費してしまうかもしれないからです。

ここでも KV を使いました。仕組みはシンプルです。

  1. アクセスが来たら、IP アドレスなどを手がかりに「最近何回来たか」を KV から読む
  2. 一定回数を超えていたら、「ちょっと多すぎますよ」と弾く
  3. そうでなければ通して、回数を1つ増やして KV に書き戻す
  4. このメモは 1分ごとに新しい名札に切り替えて数える(時間を1分単位で区切り、その区切りを名札に含めているので、次の1分に入ると自動的にゼロから数え直しになります)。古くなった名札には120秒ほどの賞味期限を付けておき、使い終わったあと自動で消えるようにしています

IP アドレスは、アクセス元をざっくり見分ける手がかりになります。ただし、同じ IP を複数人で共有している場合や、同じ人でも IP が変わる場合があるため、個人を正確に特定するものではありません。いまの簡易的な実装では、IP アドレスを短い賞味期限付きの名札にそのまま使っています。元の値を直接残さない形(ハッシュ化など)にする方法もありますが、単純に変換するだけで十分とは限らないので、必要に応じて公式の資料を確認しておくと安心です。

「賞味期限付きで保存できる」という KV の性質のおかげで、期限切れのメモを自分で消し回る必要がない のが助かりました。

これで、一定回数を超えた連続送信にはエラーを返せるようになりました。ただ、これはあくまで 個人ツールの簡易的な抑止 という位置づけです。KV は「読んで → 増やして → 書き戻す」を厳密に守るような使い方には向いていないらしく、本格的な不正アクセス対策には Cloudflare の専用機能(Rate Limiting)を、ぴったり N 回できっちり数えたい用途には、後で出てくる「状態をきっちり管理する仕組み」(Durable Objects)など、別の仕組みを検討した方がよさそうです。利用条件や料金はプランによって変わるため、使う前に公式情報を確認するのがよさそうだなと思っています。

無料枠でも個人ツールならかなり使えた

KV には無料で使える枠があります。

  • 1日に読み出せる回数:10万回
  • 1日に書き込める回数:1,000回
  • 1日に削除できる回数:1,000回
  • 名札(キー)一覧の取得:1日 1,000回
  • 保存できる量:1GB

個人で作っている小さなツールであれば、無料枠でもかなり使えます。

なお、無料枠は1日ごとにリセットされますが、Cloudflare 公式では 00:00 UTC(日本時間で午前9時)基準でリセット と説明されています。日本時間の0時で切り替わるわけではないので、細かく見るときは少し注意が必要です。

ただし、書き込み回数が多くなる使い方では上限に注意が必要です。無料枠を超えると、その種類の操作はエラーになる仕組みらしく、たとえばアクセスのたびにカウンターを書き込むような使い方だと、1日1,000回の書き込み上限に近づきやすくなります。書き込みの頻度を落としたり、1回の書き込みにまとめたりといった工夫がいる場面です。

ただし、何でも保存できるわけではなかった

KV はとても便利ですが、何でもできるわけではありません。たとえば、

  • 「○○の条件にあてはまるものだけ」のような、細かい絞り込み検索は苦手
  • 「読んで → 計算して → 書く」を、絶対に正しい順番で実行する、というような厳密な処理も苦手
  • 大量のデータを書き換えるような使い方も向いていない

書き込んだ内容は、同じ地域からのアクセスではすぐ見えることもありますが、それが保証されているわけではありません。別の地域から読みに行く場合は、反映まで最大で60秒以上かかることもあります。先ほどの連続アクセスを弾くカウンターも、この性質のせいで 「ぴったりN回で止まる」というほど厳密ではありません。アクセスが一気に集中すれば、もっと余分に通ってしまうこともあり得ます。個人ツールの規模ではほぼ気になりませんでしたが、厳密に数えたい用途には向かない、と理解しておいたほうがよさそうです。

「メモ帳のように軽く使う」分にはとても便利、というのが正直な感想です。

次は D1 や R2 も使ってみたい

KV だけでは少し足りないかな、という用途も出てきました。

たとえば、子連れで行ける場所のデータが何千件もあって、その中から条件を絞って検索する、というような使い方です。そういうときは、Cloudflare の別のサービスを使うようです。

  • 条件を絞った検索や集計、一覧表示をしたいなら D1
  • 複数のアクセスが同じ状態を同時に更新するような、チャットや共同編集、厳密なカウンターなど「状態の調整」が必要なら Durable Objects
  • 画像や大きなファイルを保存したいなら R2

という感じで使い分けるようです。ツール工房ではまだ D1 も R2 も使っていませんが、子連れスポットの検索などは、いずれ D1 に移行するかもしれません。

まとめ

「ちょっとしたデータを保存したい」と思ったときに、Cloudflare KV はとても助かりました。

ネット上の小さなメモ帳のように、名札を付けて内容を残しておけて、いつでも読み出せる。賞味期限を付けておけば、自動で消えていく。

個人で作るツールには、これくらいの軽さがちょうど良かったです。「保存する場所をどうするか」は、プログラミングが詳しくない自分にとって最初は難しそうに見えましたが、KV のような仕組みを知ったことで、ツール作りの幅が一気に広がりました。


この記事は、2026年5月時点で Cloudflare KV を使ってみた個人開発の体験談です。Cloudflare の仕様・料金・無料枠は変更される可能性があるため、実際に使う前には公式ドキュメント(料金・無料枠KV の仕組み)をご確認ください。


← 他の制作記を見るトップお問い合わせ