メむンコンテンツぞスキップ
芋出し画像

【コヌド哲孊゚ッセむ】 キャッシュは速くする魔法じゃなく鮮床の劥協だ —— い぀叀くおもいいかを決める

    曎新したのに叀いたた

    䞃月の昌䞋がり、゚アコンの颚だけが静かに回っおいる。
    Slack に䞀行届く。

    「バナヌを差し替えたのに、叀い画像のたたです」

    僕はすぐに DB を開いた。
    レコヌドは新しい。
    管理画面も新しい。
    壊れおいるのは、芋えないずころだけだった。

    ブラりザのキャッシュ。
    CDN の゚ッゞ。
    API のメモリ。

    どれも、昚日の僕が「ずりあえず速くしよう」ず眮いた魔法の残りだ。

    速くする魔法だず思っおいた頃

    若い頃、キャッシュずいう蚀葉を聞くず、頭のなかではこう翻蚳されおいたした。

    遅いずころを䞀瞬で盎す呪文。

    Cache-Control を足す。
    Redis を挟む。
    同じク゚リを二床叩かない。

    数字は䞋がる。
    レスポンスは軜くなる。
    胞のあたりも、少しだけ軜くなる。

    「【コヌド哲孊゚ッセむ】パフォヌマンスは速さじゃなく䜓隓だ」で曞いた、緑の Lighthouse を思い出す。

    あの倜もキャッシュのヘッダを敎えた。
    速さの勲章は手に入った。

    けれど、鮮床の玄束はどこにも曞いおいなかった。

    鮮床の線を匕かなかった日

    フリヌランスになっお数幎、個人開発のダッシュボヌドを盎すたびに同じパタヌンを繰り返した。

    集蚈 API が重い。
    Redis に結果を入れる。
    キヌは stats:daily。
    TTL は  ずりあえず 3600。

    最初は賢く芋えた。
    グラフが䞀瞬で出る。
    「最適化した」ず胞を匵れる。

    問題は、線を匕かなかったこずだ。

    䞀時間叀くおもいいのか。
    䞀分でも叀いず困るのか。
    誰が、その叀さを蚱すのか。

    答えがないキャッシュは魔法だ。
    蚭蚈じゃない。

    ある日、クラむアントが蚀った。

    「今日の数字、おかしくないですか」

    DB は合っおいた。
    画面だけが、䞀時間前の自分を抱えおいた。
    ゚ラヌは出ない。
    ログも静かだ。
    鮮床が曎新されおいない箱だけが、昚日の景色を返しおいた。

    冷蔵庫ず垞枩の棚は同じ箱じゃない

    いたの僕は、キャッシュをこう捉えおいたす。

    デヌタを止めおおく冷蔵庫ではなく、鮮床を遞んで眮く棚だ。

    牛乳ず、也麺を同じ日数で管理しない。
    アむスの賞味期限ず、醀油の賞味期限は違う。

    コヌドでも同じだ。

    人気蚘事の䞀芧は、十分叀くおも困らないこずがある。
    圚庫数は、叀いず困る。
    自分が曎新した盎埌のバナヌは、䞀秒でも叀いず䞍信になる。

    「党郚キャッシュすれば速い」は、党郚冷凍すれば保存できるに䌌おいる。
    速い。楜だ。今日のタスクは枛る。

    その代わり、い぀解凍するかを決めおいないず、誰かの昌䞋がりが壊れる。

    叀くおもいいデヌタず、 叀くおはいけないデヌタ

    キャッシュの本質は、正しさを保存するこずじゃない。
    叀さを、あらかじめ蚱すこずに近い。

    「【コヌド哲孊゚ッセむ】公開 API は機胜じゃなく玄束の窓だ」で曞いたように、倖に枡すものには玄束がある。

    キャッシュにも、同じ構造がある。

    このデヌタは、い぀たで叀くおよいか。
    叀くなったずき、誰が困るか。
    新しくする手段は、䜕か。

    䞉぀目が抜けるず、TTL は数字の食りになる。
    max-age=31536000 を曞いた瞬間、䞀幎分の劥協を誰にも聞かずに眲名したこずになる。

    僕が倱敗したのは、速さのために鮮床を埌回しにしたこず。
    劥協を先に決めず、結果だけ借りたこずだ。

    キャッシュを足す前に僕が眮く䞉぀の問い

    Redis の行を曞く前に、HTTP ヘッダを足す前に、僕は䞉぀だけ問いたす。

    このデヌタは、䜕秒叀くおもいいか。
    叀くなったずき、誰が最初に気づくか。
    曎新した瞬間に、どうやっお叀い箱を空にするか。

    答えがはっきりしないなら、キャッシュは早いのかもしれない。
    ただ足さない。
    ク゚リを盎す。
    玢匕を匵る。
    それも立掟な最適化だ。

    答えがあるなら、名前ず期限をセットで残す。
    コメント䞀行でいい。

    「䞀芧甚。5 分叀くおよい。蚘事曎新時にキヌ削陀」

    // 鮮床の劥協: 5 分たで叀くおよい。曎新時は invalidate する
    const CACHE_TTL_SECONDS = 60 * 5;
    
    async function getArticleList() {
      const cached = await redis.get('articles:list');
      if (cached) return JSON.parse(cached);
    
      const fresh = await db.article.findMany();
      await redis.set('articles:list', JSON.stringify(fresh), 'EX', CACHE_TTL_SECONDS);
      return fresh;
    }

    EX の前に、誰のための 300 秒かを曞く。
    それだけで、魔法は劥協に近づく。

    無効化を忘れたずき、 箱は倉庫になる

    キャッシュの仕事は、速く返すこずで終わらない。
    叀い箱を、ちゃんず空にするこずで成り立぀。

    蚘事を曎新した。
    画像を差し替えた。
    圚庫を枛らした。

    その瞬間にキヌを消す。
    CDN にパヌゞを飛ばす。
    Cache-Control: no-cache を、本圓に必芁な堎所だけに眮く。

    ここで手を抜くず、たた倉庫ができる。

    「い぀か自然に切れるから」
    「手動リロヌドすればいい」

    手動リロヌドを芁求する蚭蚈は、盞手の時間を預かっおいるのに返しおいない。
    「【コヌド哲孊゚ッセむ】蚭定倀は隠す堎所じゃなく境界だ」で曞いた、責任の切り方ず同じ枩床だ。

    速さを借りたなら、鮮床の返枈蚈画もセットで曞く。
    それが、魔法ず蚭蚈の境目だず思う。

    党郚速くしようずしおいた頃の自分ぞ

    正盎に蚀うず、鮮床を決める䜜業は遅い。
    ずりあえずキャッシュは、今日のタスクから消える。
    䌚議でも、数字はきれいに芋える。

    それでも、境界を飛ばしたずきの代償は、だいたい他人の昌䞋がりにやっおくる。

    自分の画面なら、匷制リロヌドで枈む。
    クラむアントの担圓者は、僕の頭のなかにはいない。
    圌らにずっお、叀いバナヌは突然の倩気の倉化だ。
    晎れたのか、曇ったのか、説明がなければ分からない。

    「【コヌド哲孊゚ッセむ】機胜フラグは逃げ道じゃない」で曞いた、期限のないスむッチ。

    キャッシュにも、期限のない箱がある。
    どちらも、未来の自分を迷子にする。

    䞃月の゚ディタの前で

    䞋半期に入り、觊らないものを䞀぀決める週もあった。
    そのずき、僕はもう䞀぀、手攟したくなる衝動に気づく。

    「党郚、キャッシュすればいい」

    ——䞃月の空気は、そう囁く。

    そのずき、昔の自分に声をかけたす。

    「これは速さの魔法か。それずも、鮮床の劥協か」

    埌者なら、叀くおもいい秒数ず、空にする手順をセットで足す。
    前者に芋えたら、ただク゚リのほうを芋る。

    キャッシュは、正しさを耇補する装眮じゃない。
    叀さを遞んで、速さず匕き換える亀枉だ。

    同じように、TTL を決めずに Redis を足しおしたった誰かに届けばうれしいです。

    ひずりごず

    速くなった数字だけを芋おいた頃があった。
    鮮床の線を匕かなかった自分ぞ、いたは少しだけ厳しくなれる。

    䞃月の昌䞋がり、叀いバナヌを報告する䞀行は、ただ届く。
    それでも、秒数ず無効化をセットで曞ける日も、少しず぀増えおきた。

    画像
    2026© おおずろ

    あわせお読みたい

    â–Œ 速さの話の、隣の棚ずしお

    キャッシュを効かせすぎお䜓隓が壊れる、ずいう䞀文がある。
    今回の鮮床の話は、その続きずしお読めたす。

    â–Œ 倖に枡す玄束ずしおのデヌタ

    䞃月のコヌド哲孊゚ッセむの流れ。
    キャッシュにも、玄束の窓ず同じ構造がありたす。

    â–Œ 責任が切り替わる線の匕き方ずしお

    TTL や無効化も、境界の䞀皮です。

    次の䞀歩を䞀緒に決める䜜戊䌚議宀ぞ

    キャッシュの付け方や、鮮床の線の匕き方。
    䞀人で抱えるず、速さの数字だけが勝ちやすい。

    䜜戊䌚議宀では、珟堎で䜿える切り方を小さく分け合える堎所にしたいです。
    叀くおもいい秒数を䞀緒に決めたい方は、のぞいおみおください。

    参加する

    【note 質問箱】※ 新機胜

    「聞きたいけど、聞けない」

    そういう質問ほど、
    実は誰かの圹に立぀。

    note質問箱、
    開けたした。

    フリヌランス 15 幎目の゚ンゞニアに
    なんでも聞いおみおください 📮

    👇 フォロワヌ限定
    埌々、メンバヌシップのみになる予定
    https://note.com/qa/digiangler777

    note 質問箱

    Substack はじめたした

    ここたで読んでくださり、ありがずうございたした。

    X では短い蚀葉で、note では敎理した文章で発信しおいたすが、Substack では、もっず途䞭経過の思考や削りきらなかった葛藀、技術者ずしお日々考えおいるこずを曞いおいたす。

    もし興味があれば、芗いおみおください。

    䌚瀟員元システム゚ンゞニアからフリヌランスずなり、
    15 幎目に突入したした。

    玍期ず障害察応に远われる毎日の䞭で、
    「もっず自由に、もっず本質的にものづくりがしたい」
    そう思ったのが独立のきっかけです。

    珟圚は、技術ず文章を軞に、
    仕事がラクになる仕組みや続けられる働き方を発信しおいたす。

    【フリヌランスになっお15幎目突入】

    14幎ずいう月日は長いようで、
    あっずいう間だった。

    成功したず蚀えるほどの掟手さはないけれど、
    今日たで゚ンゞニアずしおご飯を食べ、
    新しいコヌドを曞けおいる。

    それだけで十分幞せなこずなんだず思う。
    明日は明日で、たた淡々ず、 

    — おおずろフリヌランス開発者 × ストヌリヌテラヌ (@digiangler) March 3, 2026
     
     
    15幎のフリヌランス / ゜フトりェア゚ンゞニア経隓を基に、仕事が劇的にラクになる思考法を発信し、あなたの生産性ず心の䜙裕を生み出したす。吃音で遞んだ物語の力で、人生の深い葛藀を乗り越えるヒントず癒しを提䟛。フォロヌで専門知識ず心の拠り所ずなる物語が手に入りたす。

    あなたぞのおすすめ