inSmartBank

B/43を運営する株式会社スマートバンクのメンバーによるブログです

「1円でもずれてはいけない」フィンテックだからこそ細部へのこだわりを突きつめられる──サーバーサイドエンジニアmitani【SmartBank Members#13】

「人々が本当に欲しかったものをつくる」── そんな想いで集まっているスマートバンクのメンバーたちを掘り下げる企画【SmartBank Members】。今回は、本企画の13人目として、サーバサイドエンジニアのmitani(三谷昌平)さんに話を聞きました。

スマートバンクの4人目社員として創業期から活躍し、YAPC::Hiroshima2024ではベストトーク賞を受賞したmitaniさんに、B/43の入金周りの開発から、5年間で変わってきたスマートバンクのカルチャー、そして今後の展望まで語っていただきました。

プロフィール

三谷昌平|@shohei_mitani⁠⁠ サーバーサイドエンジニア

新卒で、IoTのSaaSを開発するSIerに新卒で入社後、Fablic → 楽天に転職し、フリマアプリ「フリル」(現 : ラクマ)の開発を担当。その時のファウンダーとの繋がりから、2020年にSmartBankに入社。サーバーサイドエンジニアとして、決済システムやセブン銀行ATM、あとばらいチャージ、Bank Payの入金などの入金周りの開発を担当してきた。趣味はゴルフ。社内でゴルフ部を作り、社内コンペの企画や打ちっぱなし&飲み会を実施。隙あらばゴルフに行こうとしている。

「ゼロからサービスを立ち上げたい」という想いでスマートバンクへ

── まずは、mitaniさんの自己紹介をお願いします。

サーバーサイドエンジニアの三谷昌平(@shohei_mitani⁠⁠)です。2020年にスマートバンクに入社し、今年で5年目になります。

新卒で、IoTのSaaSを開発するSIerに入社しチームリーダーを務めた後、「いろんなユーザーに使われるサービスを作りたい」という想いからスタートアップのFablicに飛び込みました。

ただ、僕が内定をもらってから入社するまでの間に、Fablicが楽天に吸収合併されることが決まったので、実際はファウンダーたちと一緒に働くことなく、楽天でフリマアプリ「フリル(現 : ラクマ)」の開発を担当することになります。楽天では、サーバーサイドエンジニアとしてECの決済画面を作る仕事をメインでやりつつ、最後はEM(エンジニアリングマネジャー)の仕事も担当していました。

── スマートバンクに入社した理由を教えてください。

「楽天の時になぜ転職を考えたか」という話からになるのですが、Fablicに入社したのが、Fablicという会社がなくなる3ヶ月前だったんです。入社した初日のミーティングで、「サーバーサイドエンジニアが全員辞めるので、どうやってサービスを楽天に持っていくか」という議題で話すようなシビアな状況でした。

もともとスタートアップに挑戦したい気持ちがあったので、このサービスが楽天にうまく吸収合併されたら自分の役割も終えて次の会社に移ろうと、楽天に入社した当時からぼんやりと考えていたんです。

僕より先に楽天を退職し、スマートバンクで働いていたアプリエンジニアのnakamuuさんにいろいろと話を聞いていたところ、CTOのyutaさんから声かけてもらい、スマートバンクで副業を始めました。楽天でやりたかったことをやり切って、サービス自体もうまく軌道に乗ったタイミングだったので、「ゼロからサービスを立ち上げる経験がしたい」と思い、スマートバンクに入社しました。

── 入社の決め手は何でしたか?

どういう人がいるかまったくわからない会社に転職して自分が活躍できるかは五分五分だと思うんです。なので、働いている人や、その人たちが大事にしていること、そこで自分がバリューを発揮できるかをしっかりすり合わせた上で転職したいと思っていました。

スマートバンクには楽天時代の元同僚が何人かいたので安心感がありましたし、その人たちが活躍しているのを見て、自分もうまくやっていけるんじゃないかと思いました。

あと、楽天のように大きな企業だと、自分が所属してないチームでもいろんなものが開発され、知らないうちにいろんな新機能が生まれ、いつの間にかリリースされています。そうすると、自分がそのサービスに100%ベットしている感覚がどうしてもなくなってしまうので、もう少し小さい会社でゼロからプロダクトを作り、ちゃんと自分が関与できている感覚がほしいというのも一つの理由でした。

「神は細部に宿る」をやり切れるのがフィンテックの面白さ

── スマートバンクに入社して、mitaniさんがこれまでやってきた仕事について教えてください。

入社直後に担当したのが、クレジットカードの決済伝票を処理するクリアリングという仕組みの開発です。

クレジットカード決済を行うためには

① オーソリゼーション:店舗からカード発行会社に、カードの利用可否を確認する機能

② クリアリング:オーソリゼーション承認後、利用店舗が立て替えた代金から手数料を引いた額をカード発行会社が集計する機能

③ セトルメント:カード発行会社と店舗の間でお金を移動し、精算を完了させる機能

という3つの機能が必要です。

そのうち、オーソリゼーションの仕組みを、CTOのyutaさんとサーバーサイドエンジニアのuribouさん(uribouさんにオーソリゼーション開発の話を聞いた記事)が担当し、僕がクリアリングを担当していました。

Visaのネットワークに接続することでデータは自動的に飛んでくるようになりますが、 飛んできたデータをどう解析し内部の処理をどうするかは、自分たちでゼロから考えて作る必要があります。しっかりした仕様書がない中、有識者の人に話を聞きながら手探りで作っていたので、実際に接続してテストをしてみたら新しいパターンが見つかり、再度考え直すこともありました。

── クリアリングの仕組みを作る中で、どんなところがいちばん大変でしたか?

ユーザーさんがカード決済したタイミングでオーソリゼーションのデータが飛んできて、2〜3日後にクリアリングのデータが飛んでくるので、まずはこれら2つをマッチングさせる必要があります。また、プリペイドカードの場合、オーソリゼーションのデータが飛んできた時点で残高から引き落としをするのですが、クリアリングのデータと実際の金額が違うこともあるので、その時はさらに差額分を引き落としたり、逆に少なかったら返金したり、そのためのプロセスとしてもマッチングが必要です。

このマッチングのロジックを作るために、オーソリゼーション側の仕組みもキャッチアップしつつ、どうやっていくかをすり合わせていく仕様決めをしていたのですが、ここが難しかったですね。

── どのようにすり合わせをしていったのでしょうか。

オーソリゼーションとクリアリングは連動しているので、3人で集まって密にコミュニケーションを取りながら実装していきました。「このテーブル設計どうする?」「この部分はこう変えたいんだけどどうだろう?」など、100個以上のディスカッションをしたと思います。 その時は夜中も働いてずっとリリース前夜のような感覚で、まさにスタートアップという感じでしたね(笑)

── ほかに思い出深い開発はありますか?

セブン銀行ATM、あと払いチャージ、Bank Payの入金など、B/43の入金周りは半分以上自分で作らせてもらったので、結構思い出がありますね。

入金周りの仕組みは基本的に外部サービスを使うのですが、外部サービスとの接続方法や認証方式がサービスによって異なるので難しい部分があります。サービスごとに「こうやってください」という内容が書かれたドキュメントはもらえるのですが、ふわっとした部分もあり、実際テストしてみたらうまく認証できずエラーになるといったことが頻発していました。その辺をパターン分けしてシステムを作っていきました。

▼入金周りの具体的な開発についてはこちらの記事でもご紹介しています!

blog.smartbank.co.jp

speakerdeck.com

── 現在の担当業務についても教えてください。

直近は、B/43の「あと払いチャージ」という機能で提携している外部サービスのリプレイスに伴う裏側の開発を進めています。

── どのような体制でプロジェクトを進めているのでしょうか?

BizDevの方が1人、CSの方が1人、最初にあと払いチャージを作ってくれたエンジニアのtmnbさんと僕の4名体制で、2023年の10月頃から開発を始めました。

外部サービスを載せ替えるにあたり、提携企業との交渉が発生するので、そのやりとりをBizDevの方に進めていただき、ユーザーさんからの問い合わせ対応をCSの方に担当してもらっています。

今回は裏側の仕組みを変えるだけなので、ユーザーさんが目にするアプリ側の使い勝手は変わらないようにしようと思っていました。なので、PMは入らず、基本的にはエンジニアがプロジェクトをリードする形で進めています。提携企業側にもいろいろと開発をしてもらう必要があるので、先方の技術者との交渉や開発ロードマップの作成などは僕がフロントに立って行います。

フィンテックは、自社で開発して機能を追加していくプロジェクトもあれば、今回のように提携している外部企業と一緒にシステムを作ることもあります。外部との開発プロジェクトの場合は、エンジニアやPMがプロジェクト全体をリードすることが多いですね。

── エンジニアのお二人はどのように開発をしているのですか?

もとの外部サービスの仕様に依存しているテーブル設計になっているところもあったので、それらを引きはがして変えていく不確実性が高い部分もありました。なので、最初はtmnbさんと2人で出社し、ドキュメントとにらめっこしながら朝から晩まで「ペア仕様決め」みたいなことをやって仕様を詰めていきました。Design Docのような形で開発方針を決めた後は、お互いリモートでガツガツ開発を進めています。

何かしらの開発の型を決めてやるのではなく、お互い詰まったらすぐにミーティングをしたり、話が込み入りそうだったら次の日は出社して話したり、状況に応じてかなり柔軟にやっていたと思います。

このプロジェクトが始まる前は、2人ともリモートで1人プロジェクトをやっていたので、ゆるふわっとしていたところもあったんです。でも今回は先方とのスケジュール調整もあるので、気持ちをシャキッと入れ替えなきゃ!ということで、最初は強制的に出社して気持ちや身体を切り替えていました(笑)

── 入金周りの開発については、YAPC::Hiroshima2024の登壇でも紹介し、ベストトーク賞を受賞されましたね。おめでとうございます!

ありがとうございます!面白くて豪華なゲストのトークがたくさんある中で、自分のトークがみなさんの記憶に残り投票してもらえたのが嬉しかったです。

YAPCでは、自分がスマートバンクに入社して最初に担当した「プリペイドカードの裏側を作る」というテーマで、Visaの決済ネットワークがどのように繋がっているのかお話ししました。全体像から具体的な開発の中身、リリースした後の不具合とか障害を乗り越えて現在の安定運用に至っているのかまで盛りだくさんだったと思うのですが、「わかりやすく聞けました」といったフィードバックも多くいただけて良かったです。

── これまで5年くらいフィンテックの開発をやってきて、どんなところがフィンテックの面白さだと感じますか?

YAPCの登壇の最後にも紹介したんですが、「神は細部に宿る」という言葉を大事にしています。お金が関係することなので、1円でもずれてしまうとユーザーさんのサービスへの信頼度はがくっと下がります。

例えば、アプリを触っていてタイムラインの画面を表示した時、APIが1回だけ失敗してリロードしたら成功した、といったことがたまにありますが、何万分の1の確率で失敗するだけなので普通はそこまで気にならないと思います。ですが、お金周りのシステムではそれを無視できません。1円でもずれたらユーザーさんに連絡しなければいけないし、1円を取り戻すために運用コストをかけなければいけません。この細部へのこだわりをいかに持てるかというのが、フィンテックの楽しい部分で、やりがいを感じるところです。

いちばん怖いのは、なんのエラーも起きずに気づいたらお金がずれていることです。なので監視周りに徹底的な仕込みをしたり、テーブル設計で不整合が起きない仕組みを作ったりする必要があります。第二防衛線の検討も含め、どうすればいちばん安全に使ってもらえるかを考えるのが面白いですね。

── 一方、そういった意味でフィンテックの開発は難しいと思っている方もいるのではないかと思います。

王道に沿ってシンプルにものを作っているので そこまで難しくはありません。僕たちが作っているのはWebアプリなので、Webの技術をしっかり学びアプリを作ってきた方であれば、当たり前のことを徹底してやり切れる面白さを感じられるのではないかと思います。

やりがいが大きく、妥協せずにやり尽くせるのがフィンテックの開発だと思うので、ぜひいろんな方にチャレンジしてもらいたいです。

常に会社をアップデートし続けられる楽しさ

── スマートバンクの4人目社員として、入社から5年ほど経った現在、あらためてどんな会社だと思いますか?

ここ2年くらいでありがたいことに社員が増えて、40名規模の会社になりました。 やっぱり最初のふわっとした感じはなくなってきましたよね(笑)2023年中は、お互いが距離感を詰めきれないまま仕事を進めるようなフェーズもどこかであったと思うんですが、今年に入って新しく入られた方が社内に規律を持ってきてくれて、またカルチャーが変わりつつあります。激動の2年間でした。

2年前に、「Think N1」「Super Ownership」「Be Open」という3つのバリューが作られました。これはファウンダー陣がトップダウンで作ったわけではなく、メンバー全員で集まり、自分たちの会社の良いところを出し合い、3つに凝縮させたものです。

人が増えたことで、このバリュー以外にも、さらに会社にとって新しいバリューになりそうなものが生まれてきていると思います。現在の3つのバリューを大事にしつつ、新しく入ってきた人によって新しく生まれたバリューも会社に取り入れ、広げていきたいという思いがあります。

── 新しいバリューにはどんなものがあると思いますか?

お互いへのリスペクトがある前提で、しっかりモノを作るためにお互いが良い意味でプレッシャーを与え合っていこうという「ピアプレッシャー」などは、新しく生まれてきたカルチャーでありバリューになりうるものだと思います。

これまでは「この人が言ったから、たぶん正しい」と決めてしまうこともあったのですが、「事業を成長させるためにはこの人が言っていることのさらに上を行かなきゃいけないんじゃないか」という話ができるようになってきました。そういった良い意味での引き締めができるというのは、1つのバリューになるのではないかと思っています。

あとは、「#z_darekan」というSlackチャンネルで感謝を伝え合う仕組み(だれでも感謝プラットフォーム/通称 だれ感)があります。人が多くなってくると、誰がどんな仕事をしているのかがわかりにくくなりますが、そのチャンネルで感謝の気持ちを伝え合っているのを見るだけでも、「この人はこういう風に頑張っているんだな」とわかるんです。これもすごく良いカルチャーだと思っているので、いずれバリューに入ってくるんじゃないかなと思います。

数万人規模の大企業だと、決められたバリューが変わる機会は少なく、バリューに拘束されている感覚もありました。でも、スマートバンクは最初に決めたバリューに新しいものがどんどん追加され、これからもいろいろと変わっていくフェーズです。常にアップデートし続けている感じがしてすごく楽しいですね。

── 最後に、今後スマートバンクでやっていきたいことを教えてください。

YAPCでベストトーク賞をいただいたことでスイッチが入りました(笑)なので、今後もいろんなイベントに出ていろんな人と交流したいです。聞き手として参加するのはもちろん、秋にはKaigi on Railsの開催も決まっているので、そこでまた話せるように頑張ってネタを作っていきたいです。

あとがき

創業期からスマートバンクにいるからこそ、会社の変化を感じ続けているmitaniさん。その中で、自分と会社の成長を楽しんでいるのが印象的でした。

ぜひ、スマートバンクでmitaniさんと一緒に働いてみませんか?ご興味のある方は、ぜひお気軽にご連絡ください。

▼カジュアル面談

smartbank.co.jp

▼サーバサイドエンジニア

smartbank.co.jp

mitaniさんとCTO雄太さんが話している全編は、Podcastからご視聴ください!

smartbank.co.jp

We create the new normal of easy budgeting, easy banking, and easy living.
In this blog, engineers, product managers, designers, business development, legal, CS, and other members will share their insights.