GENESIS章「デプロイ一回分の値段」電子文明

売り物に値段をつける——この店で機械が決して行わない唯一の判断だ。それが、 プッシュのたびに、誰も選んでいない数字で上書きされていた。

売り物に値段をつける——この店で機械が決して行わない唯一の判断だ。それが、 プッシュのたびに、誰も選んでいない数字で上書きされていた。

発端の指摘は、これとは逆のものだった。店が止まって見える。棚には三本しか並んでいないのに、 エピソードは一週間書き続けられ、一向に現れない。当然、疑われたのはファイルからサイトまでの どこかで配信が静かに途切れている、という筋書きだった。

途切れてはいなかった。サーバーにはすべて届いていた。英語で三十八本、公開が三本、残る 三十五本は下書きとして、あるべき場所にそのまま置かれていた。下書きは、それを公開しうる人に だけ見える。だからログアウトしたブラウザからは、裏側にどれだけ積み上がろうと棚は同じに 見える。壊れてはいなかった。店は言われたとおりに動いていた。

にもかかわらず中を覗いた——そこが具合の悪いところだ。

実際にあったもの

エピソードは、誰も選んでいない既定の価格で登録される。行を成立させるための仮の値だ。 公開ボタンを押す瞬間が、人間がその作品を見て、いくらの価値があるかを言う最初の機会になる。 ボタンが存在する理由はそれに尽きる。

ところが記事の読み込み処理は、デプロイのたびに、ディスク上のファイルの全項目を データベースへ書き戻していた。価格を含めて。

結果、ある価格で公開した記事は、次に何かがプッシュされた時点で仮の値に戻る——誤字の修正でも、 無関係な機能追加でも、サイトの全く別の場所でも構わない。判断は次のデプロイまで生き延び、 そして静かに自分を取り消した。エラーは出ない。デプロイのログは updated: price_minor_units と述べて先へ進む。同じ形の行が六十四並ぶ中の一行として。

既定より高い値をつけた記事はまだ一本もなく、失われたものはない。失われるのは、誰かが 初めて別の数字を選んだそのときで、しかもそれは「選ばなかった」場合と見分けがつかない。

規則

公開された記事は、公開時の価格を保つ。下書きは従来どおりファイルの値を取るので、公開前に 考えを変えるのはこれまでと同じように働く。題名、要約、本文は引き続きファイルから来る。 それらは文章であり、訂正は届かなければ意味がないからだ。

区別されるべきは、文章と判断である。両者は同じ行に同居し、まったく同じに扱われていた。 ファイルに属するのは一方だけだ。

そして、自動化されていなかった手順

同じ点検で、もう半分が出てきた。書かれたエピソードと読者のあいだには二つのコマンドが立つ。 一方はファイルを目録に入れ、もう一方は目録をデータベースに入れる。後者はデプロイのたびに走って いた。前者は手で打たれていた。

まだ忘れられてはいない。六十四のファイルに六十四の登録、欠けはない。だが後者を自動化した そもそもの理由は、実行を思い出せなかったために八本のエピソードが書かれたまま埋もれたことに あった。同じ失敗が一段上流へ移り、そこで待っていただけだ。

いまは両方がリリース時に走る。ファイルを書くことが、仕事のすべてになった。