その日が、来ました。
Contents
まず結論
初めて見る本物の乱れの中で、アプリはライバル(何も考えない判定)を大きく上回る成績を出しました。満点にはほど遠い。でも「工夫に意味があった」ことは、初めて数字で証明できました。
ただ、今日の記事の主役はその点数ではありません。そこに至るまでに見つかった「静かに壊れていたもの」たち——これが本当の収穫でした。
1枚のスクショから始まった2週間
思えば、この2週間はたった1枚のスマホのスクショから始まりました。「到着35分って出てるけど、これ待つべき?」——あの夜の、あの1枚です。
あそこから、ブログに書いてきたことが全部つながっています。驚く数字はバグか本物かを疑い、接続が静かに切れていることを知り、成績表を作り、ライバルを用意し、物差しが目的とズレていたことに気づいた。そして今回、その全部を積んだ状態で、本物の乱れに挑んだわけです。
本当の主役:「静かに壊れていた」4つのもの
試験日に向けて総点検をして、いちばん怖かったのはこれでした。見つかった不具合の多くが、エラーを出さずに、平然と間違った答えを出し続けるタイプだったのです。
初学者向けに言うと、こういう違いです。
派手に落ちるバグは、すぐ気づいて直せる。
怖いのは、何食わぬ顔で”それらしい嘘”を出し続けるバグ。
今朝の記事で書いた「ソフトは正直に壊れるべき」——あの教訓が、これでもかと繰り返し出てきました。具体的には、こんな顔ぶれです(中身は伏せますが、性質だけ)。
- 直したはずのコードが、本番に届いていなかった:同じ名前のファイルが2箇所にあって、古い方が使われていた。「真実は1箇所に」の罠に、結局何度も足をすくわれました
- 同じ要素を、二重に数えていた:到着予測が大きくズレていた原因。直したら、誤差が桁違いに小さくなりました。今回いちばん実利のあった修正です
- 絞り込みの条件が抜けていた:関係ないデータが混ざり込む状態。調べたら実害はゼロでしたが、「たまたま無事だった」だけでした
- 検知すべき相手を、リストに書き忘れていた:見るべき対象を人間が手で列挙する作りだったので、書き忘れると永遠に気づけない。書き方そのものを変えました
共通点は明らかです。どれも「エラー」を出しません。だから、探しに行かなければ、一生見つからなかった。試験日の点数より、この4つを試験前に捕まえられたことのほうが、はるかに価値があったと思っています。
いちばんの学び:仮説は3回外れた。でも”型”は裏切らなかった
この2週間を振り返って、一番おもしろかったのはここです。
原因についての見立ては、3回も外れました。「たぶんこれが原因だろう」と思ったものが、調べてみたら違った。1回や2回ではありません。
でも、毎回ちゃんと正解にたどり着けました。なぜか。決着をつけたのは、いつも同じ手順だったからです。
疑う → 現物を見る → 測る → 直す → わざと壊して確かめる → 記録する
この順番を回せば、見立てが外れても、外れたことが分かる。そして次の一手が出る。仮説は3回裏切ったけれど、この型は一度も裏切りませんでした。
個人開発初学者の自分にとって、これが2週間で得た一番の財産だと思います。正しい答えを最初から知っていることではなく、間違っても正解にたどり着ける手順を持っていること。前者は才能ですが、後者は誰でも身につけられます。
そしてこの型、電車アプリ専用ではありません。病院SEのログ解析は、まさにこれそのものです。「分からない」と「異常」を分ける。数が合わない場所に理由がある。推測より一次情報を見る。本業とここまできれいに重なるとは、正直、始めたときは思っていませんでした。
最後にやったこと:発表ではなく、記録
締めにやったのは、コンテスト用の見栄えのする文書ではなく、「発見ノート」をリポジトリに残すことでした。見つけた不具合ごとに、症状・真因・修正・どの数字で確かめたか・教訓を、出典つきで並べたものです。
なぜ発表より記録を先にしたか。理由は2つでした。
- 一番の読者は「3か月後の自分」だから。他人向けの飾りは、このブログの役目です。リポジトリに残すべきは「なぜこの設計なのか」を後から辿れる記録のほう
- 出典が揃っている今しか書けないから。数字の根拠は、時間が経つと「これ、どこから出したんだっけ」になります。記録は鮮度が命
そして書き終えて気づきました。コードと、データと、記録。この3つが全部そろって残った。2週間の最初に学んだ「真実は1箇所に」という原則が、最後の成果物にまで貫かれていたわけです。もしコンテストに出したくなったら、このノートがそのまま原稿の材料になります。記録が先、発表は後——順番はいつもどおりです。
おわりに ── 次にやることは、何もない
今、この2週間の宿題は全部片付きました。そして少し不思議な感覚があります。次にやることが、何もないのです。
アプリはこの先、私が見ていない間も判定し、採点し、乱れが来ればその断面を記録します。私は待つ必要すらなく、ただ日常に戻るだけ。「机の上の小箱が、私が寝ている間も働いている」——Mac miniが届いた日に書いたことが、こういう形で実現しました。
1枚のスクショから始まって、静かな嘘つきを4匹捕まえて、成績表を手に入れて、ライバルに勝った。振り返れば、新しい技術をたくさん覚えた2週間ではありませんでした。同じ型を、何度も何度も回しただけの2週間です。
でも、たぶんそれでいいのだと思います。いつか成績表に面白い数字が出たら、また書きます。
個人開発 / 検証 / 実測主義 / デバッグ / 都営浅草線
このブログでは、ローカルLLM・Aider・個人開発の試行錯誤をそのまま記録しています。
