ブックマーク / blog.smartbank.co.jp (21)

  • オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank

    こんにちは。MySQLは秋の季語とする一派が世に存在していることを知り、私もMySQLに関わる記事を書いてみようと筆を取ることにしました。 さて、リレーショナルデータベースをバックエンドとするWebアプリケーション開発において、特定の条件に合致するレコードがN件だけ存在するかどうかを確認するロジックは頻出といえます。プログラマとして一度は書いたことがあるのではないでしょうか? この記事ではそのような件数カウントを行うためのクエリが引き起こした性能劣化と、その改善アプローチについて紹介していきます。 なお、記事の内容はMySQLを前提としており、アプリケーションコードの例はRuby on Railsを用いますが特別な前提知識は必要ありません。コードの雰囲気だけ感じ取っていただければと思います。 ありがちなコード if query.count == n の問題 冒頭で述べた通り、特定の条件に

    オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank
    yutadayo
    yutadayo 2024/10/16
  • 外部サービス連携におけるリコンサイルの重要性と実装時の検討ポイント - inSmartBank

    こんにちは!サーバーサイドエンジニアのkurisuです。 2024年06月に、B/43あとばらいチャージの裏側でサービス提供していただいている事業者の移行を行いました。その際、返済データのリコンサイルバッチの設計と実装を担当しました。 外部サービスとのデータ連携における不整合は、多くのシステムで避けられない問題です。 記事では、B/43のあとばらいチャージ機能での事例をもとに、リコンサイルの重要性と実装時の検討ポイントをご紹介します。 リコンサイルとは 外部サービス連携における課題と不整合の要因 1. 自社から外部サービスへの通信エラー 2. Webhook通知の不達や遅延 外部サービスにおけるリコンサイルができる条件 リコンサイルバッチの実装時の検討ポイント 前提 1. 外部サービスとのデータの不整合箇所の洗い出し 2. データ量と処理時間/実行頻度 3. 不整合検知時の対応 4. エ

    外部サービス連携におけるリコンサイルの重要性と実装時の検討ポイント - inSmartBank
    yutadayo
    yutadayo 2024/10/10
  • RubyKaigi 2024スポンサー舞台裏と、技術カンファレンスへの向き合い方 - inSmartBank

    こんにちはスマートバンクでCTOをしております@yutadayoです。5/15 ~ 17に RubyKaigi 2024 が開催され、スマートバンクはスポンサーをさせていただきました。 私個人としても久しぶりの RubyKaigi の参加でしたが、結論から言うとめちゃくちゃ楽しかったです、セッションを聞くこと、参加者と交流すること、スポンサー活動をすること、どれも楽しく充実した3日間でした。 今回もイベントへのスポンサーを通して様々なコミュニティイベントや広報企画を実施してきました。当日の感想も交えて、今回のスポンサーに関連して行った施策を振り返っていければと思います。 RubyKaigi に参加しスポンサーを行うこと カンファレンスに参加し、スポンサーを行うことには重要な意義がいくつか存在すると思っています。 RubyKaigi は Ruby に関する最も大規模な国際会議の場であり、多く

    RubyKaigi 2024スポンサー舞台裏と、技術カンファレンスへの向き合い方 - inSmartBank
    yutadayo
    yutadayo 2024/05/30
  • Kaigi on Rails2023の総括と技術広報について - inSmartBank

    こんにちはスマートバンクでCTOをしております@yutadayoです。Kaigi on Rails 2023 が開催され、予定していたアフターイベントや各種SNSでの発信なども無事完了することができました。今回はこのタイミングで初スポンサーさせていただいた知見や、取り組んだ事例を振り返ったまとめ記事を紹介していきたいと思います。 想定する読者 テックカンファレンスでスポンサーする上での知見やノウハウなどが知りたい方 エンジニア技術発信を促進する方法や取り組みについて知りたい方 スポンサーをする意義や効果について知りたい方 テックカンファレンスへのスポンサー背景 実はスマートバンクでは会社をあげてのスポンサー活動は今回が初めてになります。スポンサーする意義は各社様々かと多いますが、スポンサー活動をする前に下記のような課題を感じていました。 採用活動をする中で、スマートバンクや B/43 の

    Kaigi on Rails2023の総括と技術広報について - inSmartBank
    yutadayo
    yutadayo 2023/12/15
  • SageMakerで構築する機械学習サービス - inSmartBank

    こんにちは!サーバーサイドエンジニアの mitani です。 B/43のサービスの裏側では機械学習を使っている箇所があり、機械学習用のパイプラインとAPIに全てSageMakerを利用しています。今回はなぜSageMakerを採用したのかと、構築時に意識したことについて紹介したいと思います。 インフラ視点でのMLOpsについては @maaaato さんが記事を書いてくれているので、合わせてご覧ください。 Amazon SageMaker StudioでMLOpsを始めました - inSmartBank 機械学習の推論を行う仕組みについて 機械学習の機能をアプリケーションに組み込むためには、大きく分けると3つの仕組みを準備する必要があります。 学習用のデータを作成して何かしらのデータストアに保存する仕組み 学習用のデータを使って機械学習のモデルを訓練し検証する仕組み 訓練済みのモデルを呼び出

    SageMakerで構築する機械学習サービス - inSmartBank
    yutadayo
    yutadayo 2023/12/11
  • B/43のFargateを使ったBlue/Greenデプロイシステムの変遷 - inSmartBank

    イントロ こんにちは!SREを担当してます上平と申します。 このエントリーでは スマートバンクが提供する B/43サービスの裏側のデプロイシステムに関して紹介したいと思います! 自分自身の振り返りも兼ねてどうして現在のデプロイシステムに至ったのかをお話ししたいと思います、これからデプロイシステムの構築を検討されている方の参考になれば幸いです。 RDBを使用したWebアプリのデプロイ方法を構築する中で、発生した問題にどう対処し、より安定したデプロイを行うようにしてきたかを紹介します。 想定される読者 RDBを用いたWebアプリケーションで Blue/Green デプロイを行なっている方 AWS CodePipeline をどう組むか悩んでいる方 デプロイにおいて実現したかった要件 環境構築当初、デプロイで実現したかった要件をまとめました。 サービスダウンタイム無く、デプロイが行えること 障害

    B/43のFargateを使ったBlue/Greenデプロイシステムの変遷 - inSmartBank
    yutadayo
    yutadayo 2023/12/01
  • ゼロから理解するDependency Injection - inSmartBank

    Dependency Injection (DI) とは、オブジェクトに必要な依存関係を外から注入する設計パターンです。 記事ではiOSアプリの実装をテーマに、DIがなぜ必要なのか、さらにはDI Containerとは何を解決するためにあるのかについて具体的な実装例をもとに解説します。 ※ 記事は iOS Test Night #12 にて発表した内容を書き起こしたものとなっております。 speakerdeck.com Dependency Injection 依存を内部で初期化する書き方 依存性逆転の原則に従った書き方 DI Containerの基 Daggerに学ぶ依存のライフタイム管理 SwiftUIアプリにおけるDI Containerの実装例 DI Containerの実装 Viewの実装 まとめ Dependency Injection Dependency Inject

    ゼロから理解するDependency Injection - inSmartBank
    yutadayo
    yutadayo 2023/11/02
  • Kaigi on Rails 2023『管理機能アーキテクチャパターンの考察と実践』の余談や質問への回答 - inSmartBank

    先日開催されたKaigi on Rails 2023に「管理機能アーキテクチャパターンの考察と実践」というタイトルで登壇させてもらいました。発表資料はすでに公開しており*1、記事で発表内容をそのままなぞっても新規性がないな〜と考え、発表前に行った"余興"や懇親会やXでいただいたフィードバックや質問について回答する記事としてみます。 余興について 記事で初めて上記の発表を見知った方や、発表をオンラインで見られた方にとっては「余興って何?」という疑問が浮かぶかと思うので説明すると、今回は登壇前の転換時間に"前説"をセルフでやってみました。*2 お笑いの世界には前説というものがあります。 舞台でもテレビの収録でもお客さんがいる場合は、番に向けて場を温めるために若手芸人やフロアディレクターなどが注意事項を伝えながら簡単なネタを披露することです。 ネタを交えながら注意事項等を説明し客席をいい空

    Kaigi on Rails 2023『管理機能アーキテクチャパターンの考察と実践』の余談や質問への回答 - inSmartBank
    yutadayo
    yutadayo 2023/11/02
  • Aurora MySQLをMySQL8.0へ移行した話 - inSmartBank

    こんにちは!SREを担当してます上平と申します。 このエントリーではAurora MySQL5.7互換からMySQL8.0互換への移行を実施した際の流れや学びに関して紹介したいと思います! B/43 では Aurora MySQL5.7系をサービスリリースから使っており、Aurora MySQL バージョン2のサポート終了日(2024/10/31)が近づいているのもあったので、移行することにしました。 Amazon Aurora バージョン - Amazon Aurora これからAurora MySQL8.0へ移行を検討されている方の参考になれば幸いです。 想定される読者 Aurora MySQL 5.7系を使っていて、アップグレードを検討している方 実際の Aurora MySQL 8.0 への移行手順を知りたい方 AWS インフラに興味がある方 前提 Aurora MySQL5.7互

    Aurora MySQLをMySQL8.0へ移行した話 - inSmartBank
    yutadayo
    yutadayo 2023/07/04
  • 初公開!「家計簿プリカ B/43」のデザイントークンの設計 - inSmartBank

    こんにちはスマートバンクのデザイナーのputchomです。普段は「家計簿プリカ B/43」のプロダクトデザインやデザインシステムの構築を担当しています。 先日、CreatorZineさんでプロダクトデザインに関するスマートバンクの連載記事を書かせていただいたのですが、今回はその中でお伝えしきれなかった「デザイントークンの設計」についてご紹介しようと思います。 デザイントークンとは? そもそもデザイントークンとは、色、タイポグラフィ、サイズ、不透明度、影などのデザインをするための最小要素のことであり、スマートバンクではデザインの一貫性を保ったり、関わるメンバーがよりデザインに対する共通認識を持てるようにして、プロダクトの価値提供を早くするために定義しています。 まず完成形です。このあと説明する様々な工程を経て、以下のようなデザイントークンをJSONで定義しました。(すべて記述するとかなり長く

    初公開!「家計簿プリカ B/43」のデザイントークンの設計 - inSmartBank
    yutadayo
    yutadayo 2023/06/20
  • スマートバンクの技術面接を再設計するときに考えたこと 〜過去問を公開します〜 - inSmartBank

    こんにちは!スマートバンクでサーバーサイドエンジニアをしている mitani です。 このブログでは、スマートバンクでサーバーサイドエンジニア技術面接をどのように行っているのか、過去の方法と課題点、そしてアップデートした今の形について紹介したいと思います。 スマートバンクのバリューの一つBe Openに従って、このブログでは皆さんに公開できるギリギリまで我々の採用にかける姿勢をお伝えしようと思います💎 TL;DR スマートバンクの選考フロー 技術面接で確認したいこと 技術面接の流れ 過去のスキルチェックの内容と課題点 アップデートした内容 アップデートしてみて 終わりに TL;DR 技術面接では①仕様を漏れなく正確に理解する力、②仕様を理解しアプリケーションのモデルに落とし込む力の2点を重視しています 過去のスキルチェックのお題と問題点を公開します 限りある時間のなかでお互いのマッチン

    スマートバンクの技術面接を再設計するときに考えたこと 〜過去問を公開します〜 - inSmartBank
    yutadayo
    yutadayo 2023/06/09
  • 【第2回】エンジニア自由研究の発表会レポート - inSmartBank

    こんにちは!CTO の @yutadayo です。 前回行ったエンジニア自由研究からさらに3ヶ月経過し、実際に番環境で稼働しているものや、運用で使われているものなど圧倒的成果を出すことができました、そして先日また2回目の発表会を行ったのでそちらの様子をレポートしたいと思います。 前回の発表会のレポートはコチラ blog.smartbank.co.jp なお、前回の発表が好評だったのもあり、社内でのオンライン視聴を望む声が多かったため、今回は meets を使ってオンラインでエンジニア以外の方も見れるようにしました。 配信の設定が完了後の発表が始まる直前の様子 研究内容の紹介 前回と同様に研究は週内の1時間を使い、活動が実施され今回は7件の研究内容の発表が行われました。それでは早速発表内容を紹介していきましょう。 ハッピーセット 最初の発表は @nakamuuu からのハッピーセットという

    【第2回】エンジニア自由研究の発表会レポート - inSmartBank
    yutadayo
    yutadayo 2023/04/11
  • データベースのメタデータ整備をRails generatorで楽にする工夫 - inSmartBank

    こんにちは、アプリケーションを開発する皆さんはデータベースのテーブルやカラムにコメントを書いていますか?記事ではテーブルコメントやカラムコメントといったメタデータについて以下の点をご紹介します。 メタデータ未整備だったSmartBank社内で「メタデータ大事だね…」と理解するにいたった背景をほんの少し 既存のテーブルやカラムへのメタデータ追加作業を簡易化する小さい工夫(こちらが旨です) SmartBankが提供するプロダクトB/43の開発で主に使用しているRailsMySQLを前提とした内容になりますが、アイデア自体は他の言語やデータベース製品でも有用かと思います*1。 データベースのメタデータとは? MySQLなどのデータベース製品ではテーブルやカラムにコメントを付与することができます。記事ではこれらのコメントのようなデータを説明するためのデータをメタデータと呼びます。 MySQ

    データベースのメタデータ整備をRails generatorで楽にする工夫 - inSmartBank
    yutadayo
    yutadayo 2023/04/04
  • ユーザーに対する誠実さと熱量のバトンを受け取る――UXリサーチャー瀧本【SmartBank Members#3 】 - inSmartBank

    「人が欲しがるモノをつくる」ーーそんな想いで集まっているスマートバンクのメンバーたちを掘り下げる企画【SmartBank Members】。今回は、企画の3人目としてUXリサーチャーのはろかさんに話を聞きました。副業として関わるなかで、スマートバンクのN1インタビュー文化に惹かれて正社員の1人目UXリサーチャーとして入社したはろかさん。創業者たちのユーザーに対する熱量から、UXリサーチャーとしての振る舞い、そして金融領域におけるリサーチの面白さまで語っていただきました。 はろかさんとCXO takejuneさんが話している全編は、Podcastからご視聴ください↓ 07:UXリサーチャーはろかさんが惚れ込んだスマートバンクのリサーチ文化- ゲスト: 瀧 はろか(@Haroka) プロフィール 瀧 はろか|@Haroka UXリサーチャー 新卒で日漢字能力検定協会に入職し、校正・校閲

    ユーザーに対する誠実さと熱量のバトンを受け取る――UXリサーチャー瀧本【SmartBank Members#3 】 - inSmartBank
    yutadayo
    yutadayo 2022/06/16
  • CRAからViteへ移行して190倍高速なdev server起動を得る - inSmartBank

    ある日突然、あなたに190倍(当社比)高速なdev serverができたらどうしますか...? この投稿ではWebアプリケーションのビルドツールをCreate React AppからViteへと移行した背景・手順・結果について説明します。 Vite等のビルドツールやフロントエンドアプリケーションの開発体験に興味・関心がある方、中でもCreate React App(以下、CRA)を利用していてdev server起動やHot Module Replacementの速度に課題を抱える方の参考になれば幸いです。 前置き SmartBankが提供するB/43の開発チームはユーザーが利用するモバイルアプリだけでなく、カード発行会社としてのバックオフィス業務を支援する管理機能を内製しています。 人確認業務に用いる画面イメージ。データはもちろんダミー B/43にちなんでA/43*1 と名付けられたこ

    CRAからViteへ移行して190倍高速なdev server起動を得る - inSmartBank
    yutadayo
    yutadayo 2022/04/25
  • BizDev赤池が語るFintech×BizDevの面白さとは?【SmartBank Members#1 】 - inSmartBank

    「人が欲しがるモノをつくる」ーーそんな想いで集まっているスマートバンクのメンバーたち。今回は、【SmartBank Members#1】としてBizDev(事業開発)の赤池さんに話を聞きました。BizDevは事業を作り、伸ばし、整理する仕事。スマートバンク社に入社した理由から、BizDev×Fintechの面白さまで語っていただきました。 赤池さんと代表堀井翔太さんが話している全編は、Podcast「SmartBank.fm」からご視聴ください↓ 05: BizDev赤池が語るFintech×BizDevの面白さとは?- ゲスト: 赤池知隼(@chihaya_akaike) プロフィール 赤池知隼|@chihaya_akaike BizDev(事業開発) 11年間英国で学生生活を送り、2011年6月にブリストル大学を首席で卒業、2012にウォーリック大学院を卒業し、楽天株式会社に新卒入社。

    BizDev赤池が語るFintech×BizDevの面白さとは?【SmartBank Members#1 】 - inSmartBank
    yutadayo
    yutadayo 2022/04/05
  • FinTechスタートアップ企業のインフラができるまで(構築編2部) - inSmartBank

    こんにちは!インフラを担当しております上平と申します。 このエントリーでは弊社が運営するサービスB/43のインフラをどのように構築してきたかを紹介します。 スタートアップでイチからインフラを構築する大変さや面白さをお伝えできればと思います! 今回のエントリーは前回の構築編の2部となり サービスインフラ構築 の続きを紹介していきます。 セキュリティスキャン 前回の 選定編 でも書きましたが、PCI DSSではセキュリティスキャンを定期的に実施する必要があります。 今回はセグメンテーションスキャンの内製化に関して紹介します。 なぜ内製化? PCI DSSの要件上、内製化出来るものとできないものがあります。 内製化することができればコスト削減を行えます。 診断名 内製化可否 外部ASVスキャン 不可 内部脆弱性スキャン 可能 WEBアプリケーションペネトレーション診断 不可 セグメンテーションス

    FinTechスタートアップ企業のインフラができるまで(構築編2部) - inSmartBank
    yutadayo
    yutadayo 2022/03/15
  • B/43カード決済システムのしくみ(前編) - inSmartBank

    こんにちは! スマートバンクでソフトウェアエンジニアをしている uribou です。 今回は B/43 のカード決済システムのしくみについて解説しようと思います! B/43 では Visa のプリペイドカードを発行しており、普段はあまり触れる機会のないカード決済の業務やシステムの裏側を知ることができます。 前編ではカード決済システムの一般的なしくみ、後編では B/43 での詳細な実装方法について解説していこうと思います! カード決済の基的なしくみ スマートバンクは Visa のプリペイドカードを発行しているカード発行会社になります。 このカードは、世界中どこの Visa 加盟店でも利用できますが、これは Visa が運営している決済ネットワークに B/43 のシステムを繋ぎこむことで実現しています。 カード決済システムを作るためには、Visa が要求する業務やシステムを構築し、Visa

    B/43カード決済システムのしくみ(前編) - inSmartBank
    yutadayo
    yutadayo 2022/02/28
  • B/43のeKYCシステムの裏側 - inSmartBank

    こんにちは。スマートバンクでサーバーサイドエンジニアをしている mitani です。 B/43をAppStoreに公開してから1年近く経ちました。iOSDC Japan 2021 で B/43 の人確認フロー(eKYC)の構築についてトークしました!の記事でも紹介した通り、B/43は資金移動業ライセンスのもとサービスを運営しているため、eKYCが必須となっています。このエントリーでは1年近く自社で行ってきたeKYCシステムの裏側をご紹介したいと思います。 eKYCとは eKYC(electronic Know Your Customer)とはオンライン上で行う人確認のことです。B/43は資金移動業ライセンスのもとで金融サービスを提供しているため、100万円に相当する額以下の為替取引を行うことができます。前払式支払手段*1に比べて高額であり出金もできるため、マネー・ローンダリングやテロ資

    B/43のeKYCシステムの裏側 - inSmartBank
    yutadayo
    yutadayo 2022/01/07
  • FinTechスタートアップ企業のインフラができるまで(構築編) - inSmartBank

    こんにちは!インフラを担当しております上平と申します。 このエントリーでは弊社が運営するサービスB/43のインフラをどのように構築してきたかを紹介します! スタートアップ企業でイチから構築する大変さや面白さをお伝えできればと思います! 今回は前回の選定編の後の構築編となります。 長くなりそうなので、2部構成に分けて選定後に構築してきた内容をご紹介します。 構築 と言ってもサービスインフラ構築だけではなく、オフィスインフラ構築も実施しており、 両方に関して紹介予定です。 今回は サービスインフラ構築 に関して紹介していきます。 サービスインフラ構築 AWSアカウント 選定編でも書きましたが、開発スピードの低下を回避するため、PCI DSS非準拠アカウントと準拠アカウントの2アカウントに分離しました。 セキュリティレベルは2アカウントとも同様の基準で構築しております。 環境 弊社ではDevel

    FinTechスタートアップ企業のインフラができるまで(構築編) - inSmartBank
    yutadayo
    yutadayo 2021/12/27