田中さんは、ある中堅SIerのDX推進室に所属するバックエンドエンジニアだ。
担当しているプロジェクトは、社内業務をマイクロサービス化する大型案件。Scala 2.13でバックエンドを構築し、FlutterでモバイルクライアントのUIを作るという構成だった。
その朝、彼のSlackにメッセージが届いた。
「田中さん、昨日定義したUserResponseのupdatedAtフィールドですが、FlutterのDateTimeとScalaのLocalDateTimeで扱いが違うらしくて…シリアライズがうまくいきません」
あなたにも、こんな経験がないだろうか。
設計書を書いた。レビューも通った。なのに、実装フェーズで「そういう意味じゃなかった」が起きる。
ScalaのCirceがどうエンコードするか。DartのjsonSerializableがどう解釈するか。どちらの担当者も悪意はない。ただ、言語が違えば、型の「常識」が違う。
これは、バグではない。構造的な認識ズレだ。
田中さんのチームでは、この種の手戻りが週に2〜3件発生していた。


