稼働の日、動作確認で作った起案を片づけるため、その添付ファイルの実体を消した。添付は中身のハッシュでファイル名を決めている。同じ内容なら実体を一つしか持たない。団体の担当者が添付していた同じPDFと実体を共有していて、そちらまで消えた。
内容で番地を決めた物は、消してはいけない
気づいたのは、朱書きの動作確認で「添付ファイルの実体がありません」が出たときだった。手元に同じ内容のファイルが残っていたので、ハッシュと大きさを照合して送り直し、復旧した。教訓は二つある。内容で保存先を決めている物は、記録を消してもファイルを消してはいけない。他の記録が同じ実体を指していないか数えてからだ。アプリ本体に削除の機能は無い。危ないのは、私が手で書く片づけの台本のほうだった。
そして、本番で動作確認用のデータを作らないこと。作ったら消したくなり、消すと壊す。
二度目は、メールが飛ぶ寸前だった
二日後、お知らせが実際に積まれるかを確かめるため、本番に「動作確認」と題した報告を作った。その結果、団体の担当者あてに二通が送信待ちになった。送信は五分おきに動く。送られる前に気づいて取り消し、報告も消した。取り消しの記録は監査の記録に残した。
同じ約束を二度破った。一度目は実体を壊し、二度目は実在の人にメールが届く寸前だった。確認は使い捨てのデータベースで通し試験としてやる。本番では読むだけに徹する。どうしても本番で確かめるなら、先に送信を止めてから。
本番に書き込むときの経路も一つ覚えた。回答を投稿するのに、サーバの内側へ直接投げたことがある。二百が返るのに何も起きない。セッションの印が暗号化された経路でしか送られず、ログイン画面が返っていただけだった。本番の入口を通す。
直したと報告した日に、配ったのは一部だった
監査で直した同時実行の三件が、本番では直っていなかった。報告した日に配ったのは一部で、六ファイルが未反映だった。見つけ方は、手元とサーバで見張り対象の全ファイルの指紋を突き合わせること。以後、配ったらサーバ側で照合を走らせて一致を見る。
突き合わせの一回目は、八十九件すべて違う、と出た。手元の出力に改行の記号が一つ余分に付いていただけだった。比べる前に、比べている物が同じ形かを見る。
拡張子で切っていたことも後で分かった。照合の対象を実行ファイルだけにしていたので、データベースの定義ファイルの差に気づかず、本番だけ古いままだった。対象を画面、部品、道具、試験、文書まで広げた。配備の型も決めた。手元で全試験、本番の控えを取る、指紋で違う物だけ送る、再起動して照合し直す。
書き漏らしを、試験で落とす
大小すべての修正を文書に記録すること、という指示があった。意志に頼らず、漏れたら試験が落ちる形にした。ソース一式の指紋と変更履歴の指紋を控え、ソースだけが変わっていたら書き漏らしと判定する。通し試験の中から呼ぶので、書き漏らしたまま「全部通った」とは言えない。導入の初日に、この検査が改行コードの違いと送り忘れを拾った。
文書に書いた試験の件数も古くなっていた。三つの文書が五百二十九件、二十八件、八十二件のままで、実測は増えていた。試験そのものが文書を読んで突き合わせるようにした。数字を書いたら、それを見張る物も一緒に作る。
控えの側でも同じことが起きた。事務所のPCで毎朝動く定刻の控えが、初回は打ち切りで終わり、控えが一つも増えていなかった。台本の文字コードの印が無く、日本語が壊れて構文の誤りになっていた。冒頭に「開始」の一行を必ず記録する、と足した。残っていなければ、起動したのかどうかも分からない。
次の回は、稼働の翌日から届いた要望に、どう返したかを書く。