締切=翌朝8:00:deadlineをDBに持たせる
朝起きたら、勝手に公開されていた
ある朝、いつもより早く目が覚めて、まだ布団の中で確認したことがある。昨日の夜に書き上げた記事が、もう公開されていた。誰かが公開ボタンを押した記憶はない。夜のうちに書き終えて、台帳に記録して、そのまま寝ただけ。
最初は少し変な感覚だった。何かを世に出す行為には、誰かが「よし、出そう」と決めて指を動かす瞬間が必ずあるものだと思っていたから。ところが目の前で起きていたのは、その瞬間を人が担わなくても記事が公開されている、という事実だった。
何が代わりにその瞬間を担っていたのか。答えは大がかりな仕掛けじゃなくて、もっと単純な発想の転換だった。時刻そのものを、データとして持たせておいただけ。
この仕組みを入れる前は、毎朝自分で公開ボタンを押していた。前の晩に書き終えた記事を、朝起きてから見直して、よければ押す。ただそれだけの作業なのに、朝の予定が詰まってる日は後回しになる。押し忘れて、気づいたら昼過ぎだった、ということも何度かあった。夜に書き終えた時点では「明日の朝には出す」というつもりでいたのに、実際に出るのは自分の朝の動き次第だった。
締切を「記憶」ではなく「状態」にした
記事を書き終えて、DB(データを整理して置いておく台帳のような場所)に登録するとき、本文と一緒に「この記事の締切は翌朝8時」という情報も一行に書き込む。この書き込みをINSERT(台帳に新しい一行を書き加える操作)と呼んでいる。
台帳の一行を覗くと、だいたいこんな形になる。
posts.insert({
title: "記事のタイトル",
body: "本文...",
status: "draft",
deadline: "2026-07-23 08:00",
hold_flag: false
})
題名、本文、今の状態、締切の時刻、それに止める指示(hold_flag)が、同じ横並びの中に刻まれている。止める指示は書き込んだ時点ではオフ、つまり止めない状態で最初から一緒に入っている。締切を翌朝8時に置いているのは、夜に書き終えてから朝が来るまでの間に、一晩ぶんの猶予が自然に挟まるから。書き上げた勢いのまま次の瞬間に出てしまうより、一晩挟んだ先を締切に選んでいる。
本文と締切が同じ一行にあると食い違わない
締切をこの一行の外、たとえば別の予定表や進行管理シートに書いておく、という選び方も、考えようと思えばできた。でもそれだと、記事と締切が別々の場所に住むことになる。片方だけ書き換えて、もう片方が古いままという食い違いが生まれる余地が残ってしまう。
記事の中身と締切の時刻は、別々の場所で管理していない。同じ一行の中に、両方が並んで刻まれている。書き直すときも、その一行だけ触ればいい。
以前、締切だけを別のメモに書いていたことがある。記事のほうを書き直して公開を1日ずらしたのに、メモの日付は直し忘れたまま残っていた。あとでメモを見返して、もう終わったはずの締切がまだ書いてあるのを見て、一瞬「これ、もう出したんだっけ」と分からなくなったことがある。記事と締切が別の場所にいると、こういうズレがわりと簡単に起きる。
5分おきの小さな仕組みが公開に切り替える
一行が書き込まれた後は、人が何かを覚えておく必要がなくなる。「明日の朝8時になったら公開しよう」と、誰かの頭の中やリマインダーに置いておかなくていい。
決まった間隔で台帳を見に来る、小さな確認の仕組みがある。5分おきに、全ての行を見て回る。やっていることを最小の形で書くと、こんな感じになる。
UPDATE posts
SET status = 'published'
WHERE deadline < now()
AND hold_flag = false
今の時刻が締切をもう過ぎていて、なおかつ止める指示が入っていない行を見つけたら、その行の状態を公開済みに書き換える。止める指示も、締切と同じこの一行の中に置かれていて、別の場所を探しに行く必要がない。この確認は、記事の中身が何であるかを一切読んでいない。締切という時刻と、今という時刻を照らし合わせているだけの、単純な見比べ。
人の役目は「止めるとき」だけ
締切というものは、普通は人の記憶や予定表の中に置かれる。頭の中にある締切は、忘れられたり、後回しにされたり、その日の気分で伸びたりする。締切を記事本体と同じ一行に書き込んでしまうと、それは記憶じゃなくて状態になる。忘れることも、後回しにすることもできない。
頭の中だけで締切を持っていた頃は、実際によく伸びた。「明日の朝一で出す」と決めたはずが、朝になると「午前中には」に変わって、午前中が過ぎると「今日中には」になって、気づいたら夕方になっていたこともある。誰かに叱られるわけでもないので、伸ばす方向にはいくらでも伸びた。意志が弱かったというより、締切が自分の頭の中にある限り、自分の都合でいくらでも動かせてしまう、というだけの話だったんだと思う。
この一行があるおかげで、朝が来れば記事は公開される。誰かが早起きして待ち構えている必要はなく、夜のうちに書き終えたら、あとは時刻が仕事をしてくれる。人の役目は、締切という約束を破るとき、つまり止めたいときにだけ動くことに変わった。止めたいときは、この一行の hold_flag を true に書き換えるだけでいい。それだけで、5分おきの確認がその行を素通りするようになる。何もしなければ動く仕組みの上に、必要なときだけ人が手を伸ばす形が乗っている。
締切が守られるようになったのは、意志が強くなったからじゃない。締切を置く場所そのものを、人の頭の中から一行の外側へ動かしただけ。あの朝、まだ布団の中で見つけた「もう公開されてる」という驚きは、そういう仕組みの結果だった。