(注:このブログはもう更新していません)この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

[クラウド帳票エンジンDocurain]

(超意訳) The Order of the JSON - JSONの順序について

blog.almaer.com

これが面白かったので訳してみました。 僕の英語力でよくわからなかった表現は適当にごまかしてます。


Fitzのツイートを読んだ時、俺が過去に非テック企業で経験した嫌な思い出が蘇ってきた。

それは、

  • テクノロジーのおかげで世界が壊れない(訳注:原文がよくわからなかったので適当。誰か教えて下さい)
  • ソフトウェアへの無知がどれだけの時間と金を無駄にしているか

ということを考えさせられる出来事だった。

「それ」はJSONの順序に関する話。とあるフォーチュン500企業の案件だった。 (彼らの恥を晒すつもりはないので企業名は明かさない)

その案件では、モダンなフロントエンド(モバイルアプリとWeb)とレガシーシステムを連携させる必要があった。 レガシーっていうのは「クソコードなので全部書き直したい!」っていう生易しいものじゃなくて「COBOLが動いてますが何か」っていう感じだ。

そのシステムはあまりにも古すぎた。 詳細を知っている人を見つけるのは無理だったし、保守は典型的なSIerに丸投げされていた。

それでも最初はまぁ順調だった。モックのサービスを作って、それに合わせて開発した。 JSONベースの単純なRESTコールを扱うだけだったので、石鹸まみれ(SOAP-y)にならずに済んだ。

で、向こう側の準備ができたら、なる早で実際に連携させてみるつもりだった。 それは楽しい時間になるはずだったのに、システムから戻ってきたそっけないエラーのことを今でも覚えている。

ERROR 1000294

これだけだった。


システム側の人間に詳しい説明を求めたところ、 二週間後にやっと

ああ、JSONの順序が間違っているからですね

などと回答してきやがった。

はい??? なぜキーと値のペアで順序なんぞ気にしないといけないんだ?

で、アイツらへ「どうにかしろ、柔軟に対応できないのか?」と言ってみたところ、検討するからちょっと待てと。

LOE分析」とかいうのを終えたアイツらの回答は、

確かに対応は可能だが、 9人で6ヶ月(54人月)かかります

だった。真顔でそう言ったんだ。 こういうことが、ビジネス上でのコストとして積み上がっていて、そして日常茶飯事なんだろう。

俺らには時間がなかったので、JSONの順序を制御するコードを書こうかとも考えた。 無論これは正しくないんだが。何かが変わったらどうする?「順序」が未来永劫変わらないなんて信じるわけがない。

そう、そういうのはサーバ側でやればいい。継続的テストで常に確認し、何かあればすぐに通知が来るようになっていれば。世界の終わりの前に。

とは言え、これもなんか違うがな。というわけで俺は現場ヘと飛んだ。


詳細を知る人間を見つけるのは無理だ。 以前"QAエンジニアの評価が低すぎる"という記事を書いたが、再び彼らが頼りになるだろう。 俺はQAチームのリーダーを捕まえて、このシステムをどのようにテストしているかを教えてもらった。

そしてわかったのは、このWebサービスIBM DataPower Gatewayの上で動いており、その下にはWebSphereがいて、更にその下でCOBOLが動いているということだった。

彼はDataPowerの管理画面を色々触らせてくれた。 細かく見ていくと、分かりづらい箇所にあった「上級者向け設定」のチェックボックスの一つがこれだった。

Validate Order of JSON ?  [✓]

チェックを外したらエラーは起きなくなった。



こんなことが世界中で毎日起きているんだろう。 で、「ITコンサル」は何百万ドルも稼いでいるわけだ。

最後に、この問題の根本原因が気になって調べてみたのだが、とうとうこんなJavadoc を見つけたのだった。

…もちろん!君はこんな話に出くわしたことはないだろうね。だろ?