表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
現実世界にゼロデイを見つけたので、こっそり修正しています  作者: せい | 健康優良不良プログラマ


この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

8/11

第8話 自分の部屋では動く

自分の環境では動きます。


その一文は、開発現場で最も信用されない言い訳の一つだ。


いや、言い訳ではない場合も多い。


本当に自分の環境では動いている。


ただし、相手の環境では動かない。


そこで初めて、問題はコードだけではなかったと分かる。


午前十時前、三枝さんから通話が入った。


「相馬さん、いただいた手順なんですが、こちらでは再現しません」


画面の向こうで、彼女は少し申し訳なさそうな顔をしていた。


謝る必要はない。


再現しないバグは、謝る相手を間違えさせる。


「表示ズレも出ていませんか」


「表示ズレは出ています。条件を合わせると、管理画面の数値が一瞬だけ古い値になります。ただ、相馬さんが気にされていた照度ログの揺れは、ほぼノイズ範囲です」


「ほぼ、ですか」


「はい。完全にゼロではないです。でも、報告に書けるほどの傾向ではありません」


妥当な言い方だ。


顧客向けなら、そこに線を引く。


俺の手元では、線の外側が黒くなっている。


三つ目の揺れ。


知らない痕。


その言葉は、通話には出さない。


「こちらで渡した手順を、もう一度確認します」


「お願いします。こちらの環境情報も送ります」


通話を切ると、MICA がすぐに表を出した。


「環境差分表を作成します」


「早いな」


「自分の部屋では動く、を許容しない設計です」


「俺も嫌いだ」


「あなたは言いがちです」


「言ってない」


「発言ログにはありません。態度ログにはあります」


態度ログとは何だ。


聞くと負ける気がしたので、俺は表を見た。


コード。


設定ファイル。


端末。


ブラウザ。


時刻。


照明。


机の材質。


端末の向き。


電源。


部屋の位置。


普通の不具合なら、まず上の方から見る。


コードが違う。設定が違う。ライブラリの版が違う。時刻設定が違う。環境変数が違う。


「俺の検証コードと三枝さん側のコード差分は」


「一致」


「設定」


「一致」


「時刻」


「三枝莉央側の端末は NTP 同期済み。ずれは二十ミリ秒未満」


「ブラウザ」


「同一系列。細かい版差はあります」


「版差で照度ログが消えるか」


「通常は説明しにくいです」


「通常は、な」


MICA は何も言わなかった。


懐疑的な沈黙というものがあるなら、今のそれだ。


俺は三枝さんから届いた写真を開いた。


社内の机。


白い天板。


端末は机の中央。


天井照明は均一。


周囲に物は少ない。


俺の部屋とは違う。


俺の机は黒っぽい。端には工具箱があり、古いキーボードが二枚重なっている。照明は右から斜めに入る。窓には遮光カーテン。床にはケーブルが一本、行儀悪く伸びている。


「環境差分というより、生活差分だな」


「生活差分は管理不能です」


「俺の部屋を設定ファイル扱いするな」


「現象が部屋に依存するなら、設定ファイルより厄介です」


それは正しい。


設定ファイルならコピーできる。


部屋はコピーできない。


「三枝さんには、通常の範囲で追加確認を頼む」


俺はメッセージを書いた。


端末の向き。


照明の位置。


机上の反射。


センサー端末との距離。


管理画面の表示ズレが出るタイミング。


現実側という言葉は使わない。


「この表現なら、社内で回しても問題ありません」


MICA が言った。


「助かる」


「ただし、こちらの本命は部屋です」


「分かってる」


俺は自分の机を片づけた。


片づけた、と言っていい範囲まで物を寄せた。


方眼紙を机の中央に置く。


端末をいつもの位置に置く。


画面外座標の検証コードを起動する。


白い点は出る。


Enter の枠は作らない。


入力はしない。


今は座標の写り方だけを見る。


「基準位置、机中央」


「記録しました」


白い点は方眼紙の中央に出た。


次に、端末を十センチ右へ動かす。


点も右へずれる。


ここまでは分かる。


端末を十センチ左へ動かす。


点も左へずれる。


まだ分かる。


端末をドア側へ二十センチ動かした。


点が、想定より大きく伸びた。


「今の、座標変換がおかしい」


「再測定します」


同じ位置で三回。


点は毎回、少しだけドア側へ引かれる。


俺は椅子から立ち、床にマスキングテープを貼った。


机中央。


窓側。


壁側。


ドア側。


四つの位置に端末を置き直し、同じ座標を画面外へ捨てる。


中央では、点はほぼ中央。


窓側では、少し縮む。


壁側では、ほとんど変わらない。


ドア側だけ、伸びる。


「部屋の境界で座標解釈が変わってる」


「断定には不足します」


「候補でいい」


「候補名」


「zone」


「雑です」


「仮名だ。間違っていたら捨てる」


「あなたは仮名を気に入りすぎる傾向があります」


「そのログ、しつこいな」


MICA が部屋の簡単な図を作る。


机。


窓。


壁。


ドア。


端末位置。


白い点の位置。


線で結ぶと、ドア側だけ座標の縮尺が違って見えた。


プログラムなら、座標系が二つ混ざっているときの見え方に近い。


ピクセルで指定したつもりが、実際には倍率の違う画面へ出る。


メートルで測ったつもりが、どこかだけセンチ扱いになる。


「同じコード、同じ設定、同じ端末」


「はい」


「違うのは位置」


「位置、照明角度、周辺物、電源ケーブルの曲がり、床材との距離」


「増やすな」


「減らすために増やしています」


それも正しい。


環境差分は、最初に多めに拾う。


あとから削る。


最初から都合のいいものだけ見ると、また祈ることになる。


俺は三枝さんの写真をもう一度見た。


彼女の机では、端末は均一な環境に置かれている。


俺の部屋では、ドア側だけ座標が伸びる。


違いは、単に散らかっているかどうかではない。


この部屋の一部が、現実側の座標空間に強く引っかかっている。


「MICA、三枝さん側へ追加で頼む。端末を机の端へ移動して、同じ表示ズレ手順を三回。照度ログだけでいい」


「文面を作成します」


「現象の説明は」


「通常の環境差分確認として書きます」


「頼む」


数分後、三枝さんから返信が来た。


了解です。こちらでも端末位置を変えてみます。


続けて、短い一文。


相馬さんの環境では、端末位置で変化が出ているんですか?


俺は返事に迷った。


嘘はつきたくない。


全部は言えない。


「MICA」


「候補文。こちらでは端末位置によってログの出方に差があります。ただし原因は未確定です」


「それで」


送信する。


すぐ既読が付いた。


では、こちらも同じ観点で見ます。


仕事としては、これでいい。


だが、俺の部屋では仕事の範囲を越えた線が見え始めている。


同じコード。


同じ設定。


同じ端末。


それでも、ドア側だけ現実側の座標解釈が変わる。


部屋の境界が、ただの壁やドアではない可能性がある。


俺は床のテープを見下ろした。


中央。


窓側。


壁側。


ドア側。


ドア側の線だけが、画面上の座標と合っていない。


「MICA、今の環境差分表を保存」


「保存しました」


「名前は」


「works_on_my_room」


「嫌な名前だ」


「正確です」


正確な名前ほど、嫌なときがある。


俺はドアの方を見た。


閉じたドアの向こうは、廊下だ。


普通なら、ただの廊下だ。


だが今のログでは、そこだけ座標が伸びている。


まるで、部屋の外へ出る前に、世界の方が少しだけ距離を間違えているみたいだった。


■ 技術メモ


【環境差分】


環境差分は、同じコードでも動かす場所や設定が違うことで結果が変わる状態です。


自分の環境では動くのに相手の環境では動かない、という形でよく現れます。


【再現環境】


再現環境は、不具合をもう一度起こせる条件をそろえた環境です。


コード、設定、端末、時刻、周辺条件などをそろえることで、原因を切り分けやすくなります。


【環境変数】


環境変数は、プログラムの外側から渡される設定値です。


同じコードでも環境変数が違うと、接続先や動作が変わることがあります。


評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ