タグ

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

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

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

    オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank
    s_ryuuki
    s_ryuuki 2024/10/11
  • MySQL 8.0アップグレード後に性能劣化したクエリ: セミジョイン編 - inSmartBank

    データベースアップグレード後の性能劣化、イヤですよね。 去る2023年某日、弊社ではAmazon Aurora MySQL 互換エディション 2 (MySQL 5.7 互換) から Aurora MySQL 互換エディション 3 (MySQL 8.0 互換) にアップグレードしました。当時の背景やアップグレードに関する知見は以下の記事をぜひ読んでみてください。 blog.smartbank.co.jp ソフトウェアバージョンアップをするとき、旧バージョンが抱えていた問題の解決などの恩恵を我々は期待します。しかし時には予期せぬデグレーションに遭遇することもあります。我々のMySQL 8.0へのアップグレード前後においてもいくつかの問題に遭遇しました。 記事ではそんな問題の一つ、MySQL 8.0のオプティマイザが選択したセミジョイン最適化が性能劣化を引き起こした事例と解決方法について紹介し

    MySQL 8.0アップグレード後に性能劣化したクエリ: セミジョイン編 - inSmartBank
  • ユーザーが自己解決できるヘルプページを書くポイント - inSmartBank

    こんにちは。カスタマーサポート部のnyancoです。 お問い合わせを減らすためにできることはたくさんありますが、日は「ユーザー自身で自己解決できるための手段の一つ」である「ヘルプページ」はどう作るべきか?スマートバンクで考えている方針についてブログを書こうと思います。 前提:ユーザーに自己解決を促したい ユーザーが困っていることはなるべく早く解決してもらいたいというのがカスタマーサポートの人であればみなさん思うところではないでしょうか。そこでカスタマーサポートではよく「初回返信時間」を短縮するためにどうするか?を考えることが多いと思います。 お問い合わせ返信を行う人数は限られているので、そもそもお問い合わせをせずとも自己解決ができると待つ時間もなくすぐに疑問を解消できます。自己解決を促すような仕組みはユーザーにとってもサービス提供側としても嬉しいはずです。 ※初回返信時間とは、ユーザーが

    ユーザーが自己解決できるヘルプページを書くポイント - inSmartBank
  • SwiftUIで作るタブ風UI - inSmartBank

    こんにちは!スマートバンクでアプリエンジニアをしているkanekoです。 先日リリースされたB/43の最新バージョンでは、お金の使いすぎを防ぐ家計管理サポート機能を拡充しました! prtimes.jp リニューアルにあたりUIKitで実装されていた画面をSwiftUIで新規作成したので実装の詳細とその際に調べたアニメーションの挙動について共有します。 支出画面について 支出画面はニュースアプリなどで見られる選択可能なタブ+スワイプでコンテンツを切り替え可能な画面で、以下のような要件があります。 選択可能な月が一覧で表示される(この月選択可能な画面をタブと呼ぶ) 表示されるタブは選択中の月を中央にして3つ それぞれの月はクリックで切り替えが可能 タブの下に現在選択中の月の支出情報が表示される 支出情報部分はSwipeで前後の月に切り替え可能。その際に上側のタブも連動する 支出画面 Swift

    SwiftUIで作るタブ風UI - inSmartBank
  • ゼロから理解する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
  • Jetpack Securityで生体認証による期限付きのデータアクセスを実装する - inSmartBank

    こんにちは。スマートバンクで iOS / Android エンジニアをしている nakamuuu です。 B/43 の iOS / Android アプリではカード情報の表示や入金・出金など、一部の操作を行う前に6桁のパスコードの入力をお願いすることがあります。セキュリティ要件上、致し方ない仕様ではあるのですが、ユーザーさんには不便をおかけしている面もありました。 最近のアップデートでは、この6桁のパスコードの入力を生体認証で省略できるようになりました 🎉 パスコードの入力画面 / 生体認証によるパスコードの省略 この機能は、パスコードを代替する認証情報をデバイス上に保存する形で実装しています。その際、認証情報の悪用を防ぐ保護する観点から以下の要件を満たす必要がありました。 デバイスに暗号化して認証情報を保存する 保存した認証情報へのアクセスは生体認証後のごく短時間のみ許可する そこで、

    Jetpack Securityで生体認証による期限付きのデータアクセスを実装する - inSmartBank
  • サブスクリプション課金システム開発ケーススタディ - inSmartBank

    世はまさに大サブスクリプション時代。この潮流の中で弊社スマートバンクもまた、去る2023年7月12日にB/43プラスというサブスクリプションサービスをリリースしました。 サブスクリプションといえばユーザーに提供されるコンテンツや機能といった直接的な価値に焦点が当たりがちですが、その土台にはサブスクリプションビジネスを成立させるための課金システムがあります。記事では筆者が行った課金関連の開発を振り返ってみて重要だったポイントや工夫点を伝えてみたいと思います。 すでに世に多くのサブスクリプションサービスがある中で、課金システムの実装はコモディティ化した単純な作業に思えるかもしれません。しかしながら自社サービスにてゼロから実現するとなると、想像よりも多くの思考と意思決定が必要とされる、エンジニアリング観点ではとても奥深い題材といえます。いち開発プロジェクトのケーススタディ、あるいはいちプログラ

    サブスクリプション課金システム開発ケーススタディ - inSmartBank
  • 結婚祝いキャンペーンの舞台裏 - ChatGPTや
Midjourneyも活用して、
結婚祝いカードの プロトタイプを高速で作った話 - inSmartBank

    こんにちは、スマートバンクでデザイナーをしているゆっきー(yuki930)です! B/43では先日、結婚を迎えられたおふたりを祝福する「ジューンブライド結婚祝いキャンペーン」を実施しました。 prtimes.jp キャンペーンについてはこちらのchikaさんのブログもぜひお読みください! blog.smartbank.co.jp その際、キャンペーンの告知クリエイティブに加えてギフトに添える当選通知カードをデザインしたのですが、プロトタイプを素早く作ることで議論や意思決定をスムーズに進めることができました。 そのプロトタイプを作成するにあたり、今回はChatGPTやMidjourneyを活用して更なる時短に挑戦したので、その事例についてご紹介します。 B/43ペアカードユーザーの皆さんを祝いたい!結婚祝いキャンペーンのはじまり B/43ペアカードは2023年7月に2周年を迎え、この期間ユー

    結婚祝いキャンペーンの舞台裏 - ChatGPTや
Midjourneyも活用して、
結婚祝いカードの プロトタイプを高速で作った話 - inSmartBank
  • SwiftUIでTouch Targetのサイズを意識する - inSmartBank

    こんにちは、スマートバンクでアプリエンジニアをしているロクネムです。 みなさんはiOSアプリの開発を行う上で、ボタン等のタッチ可能なコンポーネントの”Touch Targetのサイズ”を意識していますか? 小さすぎるTouch Targetは、指で操作するiOSアプリにおいてユーザーのアクセシビリティを低下させてしまいます。 Human Interface Guidelinesにおいても、タッチ可能な領域を最低でも44 x 44pt以上は確保するように記されています。 この記事では、SwiftUIでiOSアプリを開発する上で、どのように十分なTouch Targetを確保するかについて、弊社の開発しているB/43という家計簿プリカアプリを例にご紹介します。 Button テキスト内のリンク TextField まとめ Button まずは1番わかりやすいButtonにおけるTouch Ta

    SwiftUIでTouch Targetのサイズを意識する - inSmartBank
  • コアユーザーが本当に欲しかったものを探してB/43プラスを作った話 - inSmartBank

    みなさん、こんにちは!PMのBNBN(ぶんぶん)です。自分は2人子どもがいるのですが、この前初めてパパ友とLINE交換して一緒に遊びました。公園で虫取りに出掛けたのですが、子ども達よりパパ達の方が楽しんでいて、最後は子どものことを忘れてセミ取りしてました。 さて、そんな夏真っ盛りの7月12日にリリースしたメンバーシップサービス「B/43プラス」を出すまでに、どんな風に「コアユーザーが当に欲しかったもの」を探したかを書いてみます。 この記事の想定読者 新機能開発に携わるPMエンジニア、リサーチャー ユーザーが当に欲しかったものを探すことが多いPM、リサーチャー 「良いユーザー体験」と「収益化」の狭間で苦悩するPM B/43とは・B/43プラスとは B/43(ビー ヨンサン)は、使いすぎが防げるチャージ式のVisaプリペイドカードと、残高と支出がひと目でわかるアプリがセットになったサービ

    コアユーザーが本当に欲しかったものを探してB/43プラスを作った話 - inSmartBank
  • プロダクトサイドからみた決済サービスの法的スキーム - inSmartBank

    こんにちは!スマートバンクでソフトウェアエンジニアをしている uribou です。 今回は、決済サービスの法的なスキームについて解説しようと思います! スマートバンクが運営する B/43 では、資金移動業というライセンスを利用して決済サービスを提供しています。一方で、一見 B/43 と同じようなサービスでも、違うライセンスで運営している事業者も存在します。 実は、このような裏側のスキームの違いが、プロダクトにおける機能差分として現れています。私自身はエンジニアですが、プロダクトを作る上で事業の法的なスキームを理解する必要がありました。しかし、プロダクトの視点から決済サービスの法的スキームを整理した資料は少なく、キャッチアップに苦労しました。 そこで、プロダクトサイドの視点から、決済サービスの法的スキームを整理してみたのが記事になります。厳密性や網羅性には欠けるかもしれないですが、その分、

    プロダクトサイドからみた決済サービスの法的スキーム - inSmartBank
  • アイデアと上手くつきあう方法 - inSmartBank

    こんにちは。プロダクトマネージャーの@more_tです。 pmconf2022の登壇機会をいただき「アイデアと上手くつきあう方法」というトピックで発表させてもらいました。 このエントリーは発表内容の書き起こし記事です。発表の中から特にとりあげたいポイントを中心に補足や加筆しています。登壇のアーカイブ動画も公開されています。 安全に温泉に通いたい 最初にかんたんなクイズを持ってきました。こちらの文章からどういった解決策が取れるか30秒程度で考えてみてください。 「あなたはとある村の村長です。 ある日、村の近くの森に温かい温泉が湧いていることに気がつきました。 しかし温泉へ向かう橋は先日の大雨で流されてしまい、 復旧が必要な状況です。 村の皆は温泉が大好きで、橋の使えない川を渡っていく人もいれば、 わざわざ遠回りしていく人もいる状況です。 さて、村人たちが安全に温泉を利用するためにあなたは村長

    アイデアと上手くつきあう方法 - inSmartBank
  • 3Dセキュア入門 -B/43の3Dセキュア開発・運用の裏側- - inSmartBank

    こんにちは。チャージ式プリペイドカードと家計簿アプリがセットになったサービス、B/43のサーバサイド開発をしている@ohbaryeです。 はじめに 唐突な問ですが、読者諸兄はECサイトでカード決済を行う際に人認証を求められたことはあるでしょうか?弊社のようなカード会社のブログを読まれる方であれば人生で一度は経験しているのではないかと推察します。 この仕組みは3Dセキュアと呼ばれる人認証サービスで、カードの盗用やなりすましなどの不正利用の防止を目的としてつくられたものです。近年では不正利用防止だけでなく消費者の利便性向上に寄与するシーンも増え*1、B/43にも多くのユーザーさんから3Dセキュア対応の要望がありました。B/43はその要望にお応えして2022年の6月に3Dセキュアに対応したカードをリリースしました。 記事では筆者が3Dセキュアの開発・運用を通じて学んだ、3Dセキュアの仕組み

    3Dセキュア入門 -B/43の3Dセキュア開発・運用の裏側- - inSmartBank
  • 1