第1話
第一話 負債の正体
月曜朝、佐藤は新しいチームの机に着いた。決済システムの開発部門への異動である。先輩の田中から引き継ぎを受けながら、ソースコードを眺めていると、何度も同じ違和感に襲われた。
「これ、金額がintで管理されてます?」
田中は疲れた顔で頷いた。「そう。金額、手数料、レート、全部int。バグが絶えない」
実際、チケッティングシステムには修正報告が山積みしていた。小数点以下の扱い間違い、通貨換算の誤計算、スケーリング時の型変換エラー。どれもが客先からのクレームだ。
「なぜ修正されないんですか」
「時間がない。本当にそれだけ」
その日の午後、佐藤は既存の金額処理関数を追跡してみた。異なる関数で異なる計算ルールが適用されていた。ある関数は円をセント単位に変換、別の関数は浮動小数点数のまま。呼び出し側が正しい前提を持たなければ、すぐに壊れる。
型システムは、本来こうした問題を防ぐ仕組みのはずだ。佐藤は思った。金額、通貨、精度——こうした情報を型で表現できれば、コンパイル時にエラーを検出できる。
水曜の定例会で、佐藤は提案した。「型を整理して、金額処理を再設計しませんか」
マネージャーの反応は冷ややかだった。「今は機能追加が優先。技術債はあとで」
それでも、佐sworn田は調べ続けた。他社の決済システムはどう型を設計しているのか。数学的には、型とは何か。金融システムにとって、型安全性とは何か。
週末、佐藤のノートには、新しい型設計の構想が広がっていた。型を正しく設計すれば、ただ安全なだけではない。バグが減り、保守性が高まり、その先の開発速度さえ上がるのではないか。
それは現場の「時間がない」という言葉の矛盾に気付くことでもあった。時間がないから型を整理できない。しかし型を整理できないから、時間がさらに失われていく。
月曜朝、佐藤は再びその机に向かった。今度は、説得材料を用意して。
続きはまもなく
目次