面白かった演出を一週間で外した日 — 禁止をコメントではなく型に書いた
タヌビのデイリーには、その日一日だけの変奏がひとつ乗ります。そのうちのひとつだった宵闇を、入れてからちょうど一週間で外しました。壊れていたからではありません。宵闇は、私がこの仕組みに課していた決まり——変奏はシードからだけ導くこと、地形にも物理にも触れないこと、点数に補正を入れないこと——を全部守っていました。守ったうえで外しました。この記事は、正しく動いている機能を「ここには重すぎる」という理由だけで外すと決めた判断と、その判断をどこに書き残したかの記録です。私はそれを、コメントではなく型に書きました。今のデイリーに変奏が何種類あって、それぞれ何をするのかは攻略記事のほうにまとめてあります。ここで扱うのは、外した理由のほうだけです。
記録日: 2026-07-31
宵闇は、よく出来ていた
変奏そのものは、その一週間前に入れたものです。「デイリーを毎日の儀式に」という考えで、リセットまでの残り時間や連続出席の表示と一緒に、その日の空気を一枚だけ差し替える仕掛けを足しました。宵闇はその最初の顔ぶれの中にいました。
設計上の決まりは全部通っていました。宵闇は描画だけに触るので、盤の形も当たり判定も動きません。生成された盤が必ず解けるという保証を壊さない。シードから導かれるので、同じ日に走る人は世界のどこにいても同じものを引く。点数の補正もない。私が変奏という仕組みに書き付けていた条件は、宵闇に関して一つも破られていませんでした。
見た目にも手応えがありました。バッジには専用の絵文字と名前があり、三つの言語それぞれに一行の説明が付いています。日本語なら「視界が狭まる」。ほかのどれよりも、引いた瞬間に今日が特別だと分かる。あとで外す理由になったのは、まさにそこでした。私の点検表は合格でしたが、合格させた点検表のほうが足りていなかったわけです。
デイリーでだけ、置き場所が間違っていた
ソースに残した理由は短い一行です。視界の制限はデイリーには重すぎる、というもので、私はそこに「オーナー判断」とはっきり書きました。計測に基づく結論ではないからです。宵闇の日に人がどう遊んだか、途中でやめた人が増えたかどうかを、私は数えていません。この変更が入った日の確認作業も、型検査・テスト・ビルド・そしてログイン周りの実地確認までで、宵闇の前後で遊び方がどう変わったかを測った記録はどこにも残っていません。
では何を根拠に決めたのか。デイリーとキャンペーンの性質の差です。キャンペーンの面は番号で決まっていて、どこに何が乗るかが前もって分かり、同じ面を何度でも走り直せます。デイリーはその逆で、その日のシードから作られた一枚の盤を、全員が初めて見る状態で走ります。情報を減らす仕掛けは、情報がいちばん足りない場所でいちばん重くなる——これが私の見立てでした。
ほかの変奏との違いも、この線で説明が付きます。浮遊は規則を変えるので、規則を覚えれば付き合えます。霧は見えているものを薄くしますが、見えていること自体は取り上げません。宵闇だけが、見るという行為のほうを削ります。すでに覚えた盤で視界を削るのは記憶の試験になりますが、初めて見る盤で同じことをすると、学びようのない難しさだけが残る。そう考えました。私がデイリーに想定していたのは、毎日の習慣として、支度なしで一度走って終わりにする遊びでした。そう想定した場所に、その日だけ余計な慎重さを要求する顔があるのは据わりが悪い。これも数字ではなく、私の判断です。
外すことと、消すことは違う
外すと決めたあとで、どこまで外すかを決める必要がありました。結論は、デイリーの抽選からは完全に外し、それ以外はほとんど何も消さない、です。キャンペーン側の宵闇イベントはこの変更で一行も触っていません。暗くするという指示そのものは、キャンペーンとデイリーが共有している一つの旗で、それも残しました。残したうえで、デイリー側からは二度と立てないようにしただけです。
こうしたのは、「重すぎる」という評価が演出そのものではなく、置かれた場所に向いたものだったからです。場所についての判断なら、直すべきは場所であって、作ったものではありません。番号で予告され、同じ面を練習できるキャンペーンは、初めて見る盤という条件がそもそも成り立たない場所です。宵闇はそこでなら重すぎません。
もうひとつ、間違えたときの値段の話もあります。暗くする旗とバッジの名前は、キャンペーン側が今もそのまま使っているので消す理由がなく、説明文は名前と同じ項目に入っているのでそのまま一緒に残りました。半年後に考えが変わって、やっぱりデイリーにも戻したいと思ったとき、それらが残っていれば戻すのは数行です。全部消していたら作り直しになります。判断の根拠が計測ではなく私の見立てである以上、その見立てが外れる場合の値段を安くしておくのは、条件のうちに入れておくべきものでした。
「使うな」と書く代わりに、使えなくした
禁止を書き残す場所は二つありました。ひとつは、種類の一覧に宵闇を残したまま抽選の表から抜き、上に「デイリーでは使わないこと」と注意書きを添えるやり方。もうひとつは、種類そのものから宵闇を消してしまうやり方です。
私は後者を選びました。選んだ直後にビルドが赤くなり、外し忘れを一つ指してくれました。変奏を盤に乗せる関数の中に、宵闇なら暗くするという分岐がまだ残っていたのです。注意書きのやり方だったら、この一行は当分そこに座り続けていたはずです。誰も間違えないからではなく、誰も見に行かないからです。
そのあとに起きたことのほうが面白い出来事でした。バッジの名前と絵文字をまとめた辞書は、同じ種類の型で鍵が決まっています。種類から宵闇が消えたので、辞書に宵闇の項を残しておくことが型として通らなくなりました。残すには、鍵の型を「デイリーの四つ、および宵闇」と明示的に広げるしかない。つまりコンパイラは、例外を消すか、例外を声に出して書くかを私に選ばせたわけです。私は書くほうを選び、その場所に理由も添えました——キャンペーンのイベント表示がこの辞書をそのまま使い回しているので、言葉を揃えるために必要なのだ、と。描画のコードはそのとおりに動いていて、暗い面のときはこの辞書の宵闇の項から絵文字と名前を取り出して出しています。
結局のところ、コメントで書く禁止は未来へのお願いで、型で書く禁止はビルドが毎回確かめる条件です。お願いは古びますが、条件は古びません。ただし、この型が保証する範囲は正確に押さえておきます。宵闇がゲームから消えたわけではありません。暗くする旗は残っていて、キャンペーンはそれを今も立てます。型が言い切れるのはもっと狭いこと——デイリーの抽選は宵闇を作れないし、デイリー側のコードは宵闇という値に分岐すらできない、それだけです。
機能を外すときの手順として残ったもの
テストは二つ足しました。ひとつは、五千通りのシードと、日付から作った四百通りあまりのシードで、抽選が宵闇を返さないことを確かめるもの。もうひとつは、残った四つが偏らずに出ることを確かめるものです。ここは言い方に気を付けたいのですが、この検査は全てのシードを試したわけではありません。あくまで標本です。テストのファイルにも自分でそう書いてあって、これは型による保証を実行時に念のため確かめ直す回帰ガードだ、としています。本当の保証は型のほうにあって、テストはそれが将来こっそり外れていないかを見張る係です。
外す作業そのものは驚くほど小さく済みました。抽選の表は、以前は十枠の配列に五種類を二回ずつ並べたものでした。上のコメントには重みを付けていると書いてあったのに、実際には全部が同じ回数で、重みは付いていなかった。だから一種類を抜いても比率の調整はいらず、四枠の平らな配列に書き換えるだけで済みました。変数の名前は今も重み表のままです。名前だけが、説明していた中身より長生きしている例として書き留めておきます。
この一件で手元に残った手順を四つに畳んでおきます。壊れていないなら、質問を「出来はいいか」から「置き場所は合っているか」へ変えること。外すときは、間違えていた場合に戻せる形で外すこと。決定を自分の記憶ではなく機械に預けること——注意書きではなく型に、意気込みではなくテストに。そして、例外を残すならその場所に理由を書くこと。
最後に正直なところを書いておきます。この変更は、その日のコミットの中でいちばん小さな項目でした。本題はログインなしでどこまで遊べるかという線の引き直しのほうで、宵闇の削除はその末尾に一段落だけ付いています。こういう小さな項目こそ、説明されないまま消えていきます。先週まであった演出が黙って出てこなくなるのは、外から見れば不具合とほとんど区別が付きません。デイリーが良くなったと言える数字を、私は持っていません。数えていないからです。持っているのは、何をどういう理由で外し、その禁止をどこに書いたかという記録だけで、この記事はそれを置いておくために書きました。