全国オンライン対応受付 平日 9:00-18:00
お問い合わせ

開発記録 / 公開前検証制作記 / Vol.56 公開前検証制作記 Vol.1 出す前に、壊しておく

記事 03

同じ名前でも、中身は変わる——使ったAIの版を、数字で固定する

昨日まで動いていた組み立て処理が、ある朝、立ち上がらなくなった。設定は変えていない。書いたコードも触っていない。調べていくと、土台にしている読み込み用の部品が、新しい系統に上がっていた。新しい系統では、モデルの内部構造の呼び名が変わっていて、こちらが触ろうとしていた層が、そもそも存在しなくなっていた。

2026-09-07 公開

昨日まで動いていた組み立て処理が、ある朝、立ち上がらなくなった。設定は変えていない。書いたコードも触っていない。調べていくと、土台にしている読み込み用の部品が、新しい系統に上がっていた。新しい系統では、モデルの内部構造の呼び名が変わっていて、こちらが触ろうとしていた層が、そもそも存在しなくなっていた。

名前は同じ、中身は別物

AIのモデルは、置き場所から名前で取ってくる。名前は変わらない。けれど、その名前の指す中身は、置いた側の都合で更新される。改善されることもあれば、出力の癖が変わることもある。有料で成果物を渡している以上、「先月と同じ条件で作ったはずなのに、仕上がりが違う」は、こちらの説明能力の問題になる。名前で指しているかぎり、この不安定さからは逃げられなかった。

成果物に、使った版を書き込む

そこで、名前ではなく版そのものを記録することにした。組み立てを担う処理の元となったコードの版、立体を作るモデルの重みが置かれた先の版、画像から特徴を取り出す側のモデルの版、そして読み込み用の部品の版。この四つを、成果物に付いてまわる情報として書き出すようにした。書き出すだけでは足りないので、仕上げの段階で、あらかじめ設定してある期待値と突き合わせ、一致しなければ仕上げを断るようにした。

ここで最初につまずいたのは、置き場所の版を「だいたいこのあたり」で拾っていたことだった。似た名前の候補が複数あると、どれを取るかが曖昧になる。参照の先頭を明示して指すやり方に変え、曖昧さを潰した。突き合わせも、前のほうが合っていればよい、という緩い比べ方をやめて、全部の桁が一致することを条件にした。短く切り詰めた値も、途中まで合っている別の値も、断られる。試験では、四つのうちどれか一つでも欠けていたら仕上がらないこと、そもそも期待値が設定されていなければ起動の時点で落ちることまで確かめた。緩やかに動き続けるより、動かないほうが安全だと判断した。

部品の版を上げるのをやめた、という話ではない。上げるときは、上げたと分かる形で上げる。期待値を書き換え、通しで試験を流し、成果物の付帯情報が新しい値に変わったことを確かめてから進む。勝手に変わるのが困るのであって、変えること自体は困らない。

二十六ギガの照合は、諦めた

理屈を突き詰めれば、重みのファイルそのものの指紋を毎回照合すべきだった。しかし合計で二十六ギガある。仕事のたびに全部読み直して指紋を計算するのは、時間の面でも入出力の面でも現実的でない。代わりに、実行時に外から取りに行かない設定を強制し、使ってはいけない部品が紛れ込んでいないかを起動時に検査し、混ざっていれば起動しないようにした。手元に固定したものだけで動く状態を先に作り、そのうえで版の照合を効かせる、という組み合わせにした。

諦めたことを、文書に残す

そして、この「やらないと決めたこと」を一枚の文書にした。何を見送ったか、なぜ見送ったか、代わりに何を効かせているか、いつ見直すか、誰の判断か。書いてみると、判断の弱いところが自分でもよく見えた。全部やる、と言い切れないことのほうが多いなかで、やらないと決めた記録を残しておくことが、次の自分への引き継ぎになる。抜けているのではなく、選んで置いていったのだと分かる形にした。

次は、作ってあるのに動かさないまま公開した機能と、止まっていることの確かめ方について書く。