novtanの日常

ネタです。ネタなんです。マジレスする人は撲滅すべき敵です。だからネタだってば!

「一貫性絶対確保文化圏」と「後で訂正文化圏」の衝突について

なんかタイトルだけ見たら思想の話みたいに見えますが、ITです。

というか、愚痴です。

銀行の特に勘定取引寄りの仕事をしていると、データの一貫性すなわちお金の出し入れの整合性について相当センシティブになるわけです。およそ、決済系のシステムの中で一番ヤバイ系は銀行口座の元帳の読み書きの部分なわけですね。なぜなら、一度移動した金について「訂正する」のは結構な困難を伴うからですね。システム上とはいえ、お金の所有者が移動してしまうわけなので。

ましてや、お金が行方不明になったり謎の増え方をしてしまってはまずいわけですね。

一方で、銀行以外の決済は意外とおおらかな部分があります。なぜなら現金が直接的に減らないことが多いから。クレジットカードなんかが典型で、問題が発生しても月締めまでになんとかすればいいし、なんだったら翌月に回しても良い(収益の観点からは全くよくないけど顧客に負担を強いるよりはマシ)。チャージ系の支払いについても最悪チャージした金額以上は被害が出ないし、保障もなんとかなるでしょう。

で、最近のなんとかPay絡みでこの文化圏が悪魔合体しているんですよね。

口座登録するとリアル口振インタフェース経由でオートチャージ!みたいな。Suicaとかのオートチャージはクレカなんで事故ってもいきなり現金なくなるなんてことないですけど、新型決済系で銀行直結はアカン…

めったに事故らないから事故った後になんとか対処すれば良い、という考え方は「その程度のサービスレベルである」というコンセンサスのもとでは有効です。だから、FinTechベンチャーが持つシステムは往々にしてその思想で設計されていることが多いように見えます。その事自体は全然悪くないんだけど、とにかく銀行口座に直結しがちなここ最近の案件においてはその設計はクリティカルな問題を孕んでいることも多いです。最低限、想定外なエラーが発生した場合の二重取引の排除や同時に残高にアクセスした場合の排他制御くらいはちゃんとやってほしいものですが…(なぜこんなことを言うのかというと以下略。

で、何を起きたらどのくらいの対処をしなければならないか、というのは金融系のシステムやっていた人たちの重要なノウハウであり、また、銀行システムを担っている人たち(主に銀行のシステム子会社)の守るべき線なんですが、まあFinTech関連の案件といえば銀行の企画部直案件だったりして、この程度の金額でこれだけできますよ、という売り込みに対して異例系どこまでカバーしているかを確認するなんて発想は一切ないので蓋を開けてみたら双方地獄を見るということになったりしますね。

とにかく問題が起きても適切な保障をユーザーにすることで割り切る、ということもできなくはない(とはいえ、不正取引を許さない的な規制については欧米の基準も含め、かなり厳しく見られる)のですが、信用商売であるところの銀行としては最悪潰れればいいベンチャーのサービスとは違うわけですよ。

雨後の筍Payたちは早急に滅びてほしいものです。

ドコモのシェアバイクが最近ヤバイ

つい、1ヶ月前はそうでもなかったはずなんだけど、最近自転車のポートが空っぽで残ってる自転車もバッテリが切れているかパンクしているかという状況に出くわしまくるんですよね。もしかして盗まれてない?くらいのレベルで。これ月額会員は怒ってもいいと思う。

東京都心部でのチャリ移動は電車で移動するより圧倒的に効率いい場合が結構あって、30分150円ってのは丁度そういった距離をカバーしているという意味で非常に便利なんだけど、逆に言うとそれ以上乗ることがあまりないので、150円を稼ぐために結構なコストがかかる=まあまあ見合わないビジネスなんだとは思うんですよ。1日借りるとか、連続して乗るとか、そういうのないとね。
これを値上げすると電車で行きづらいところの選択肢としてバスが登場してしまう(バスは220円位なので競合する)ので、また難しくなるんだけど、ようは短距離高速移動のニーズには潤沢に自転車がポートにないと対応しきれないという点も含めて結構難しい話ではあります。値段の面でいうと電車初乗りより安い(特に乗り換え発生したら相当安い)という利点はもちろんあるけど、それ以上に特定の場所間だと圧倒的に速いというのが使うメリットなわけです。なのにポートに行ったら自転車がない(この時点で相当な時間ロス)。

ちょっとこれそろそろダメかな、という気がしなくもないです。

品質とはコストであるからして社会的責任とはなんぞや的な話

普段ミッションクリティカルな仕事をしていると、字面的にはこういう話わかるのね。わかるんだけど、急に社会的責任とか言われるとアホかとも思ってしまうわけですよ。確かに、なんとかPayなんかはまあまあ酷いことがあって技術力でイキっているベンチャーの正体なんてそんなもんかなと思うことが最近特に多い。まあ、当初はきれいだっただろうコードは実際に銀行とかと連携しようとしたら設計当時考慮しきれない異例系(これはクリティカル系で長く経験がないと思い付きもしないパターンの集積なわけですよ)の考慮が足りてないって指摘されて例外に次ぐ例外処理を入れざるを得なかったみたいな事情はあるんだろうけど。

でもね、品質とはコストなわけですよ。もちろん、開発の品質については手法でカバーできる。でも、異例系をどこまでカバーするかみたいな仕様の設計品質なんてのはコスト見合いで考えるべきことではあるので社会的責任というのは要件定義で明確になっている仕様を実装してないクソ野郎とかそういうところに大して発するべき言葉であって、システムがダウンしたことそのものに対してではない。

僕自身、某でかいところの仕事から同業の小さいところの仕事に移った結果として一つ学習したのは、「業務がでかすぎると量的な問題で人間系でリカバれないからありとあらゆる問題に備えてシステムを作らなければならない」んだけど、そこの閾値を超えてない規模の業務量の場合、「え、そんなところまで頑張らなくていいからもっとスケジュール縮めてよ。え?障害起きたら?そりゃ俺たちが運用でカバーするから大丈夫だよ!めったに起きないわけだし」なんですよね。そりゃそうだ。