カンムテックブログ

https://tech.kanmu.co.jp/

カンムテックブログ

フィード

記事のアイキャッチ画像
エンジニアによるFintech法律勉強会を開きました
カンムテックブログ
はじめに ソフトウェアエンジニアの hata です。先日、カンムが提供するプロダクトの一つ、 Pool を取り巻くFintech法律勉強会を開きました。 pool-card.jp 金融は最も規制が厳格で複雑な分野です。金融サービスは、複数の法律から最適な組み合わせを選ぶことが競争優位になりえます(ルールに内在する「余白」を正しく理解し、自らのビジネスに最大限有効・有利に活用するという発想)。 Poolは、他にあまり見ない、投資・決済が一つになったサービスを提供しており、その法的構成も非常にユニークです。 ただし、その法的構成のユニークさから、Poolがどのような法律を組み合わせたプロダクトであ…
10日前
記事のアイキャッチ画像
Tauri と Pixoo-64 でオンラインミーティングのカメラの映り込みリスクを軽減する
カンムテックブログ
こんにちは、リモートワークしてますか?私は週7家にいます。エンジニアの岡田です。 この記事はカンム Advent Calendar 2024の24日目です。1 23日目は teshiken さんの「成果を出しつづけるための行動として意識していること」でした。 adventar.org さて、カンムはフルリモートを導入していまして2、自分はもうかれこれ4年ほどずっと家で仕事をしています。 ミーティングではカメラを ON にすることもままあるのですが、家族も家で仕事をしているので、お互いカメラへの映り込みに注意して生活しています。 ただ、お互いにミーティングの予定は何らかの形で共有しているものの、…
10日前
記事のアイキャッチ画像
バンドルカード開発チームの現在地
カンムテックブログ
カンム 2024年アドベントカレンダーの22日目です。 adventar.org 昨日はAwesomeさんの「銀行員が転職した話」でした。 Awesomeさんは今年カンムへ転職してきてくれたのですが、新規事業である「サクっと資金調達」の立ち上げに関わっていただいています。カンムは今までtoCサービスを中心に事業展開してきましたがこれからはtoBに関しても課題解決をしていきます。 note.com 今回の私の記事ではバンドルカードのプロダクト開発が1年前からどのように変化してきたかを書きます。 私について 私については入社した年に書いた紹介記事があるのでこちらをご覧いただければ幸いです。 mic…
13日前
記事のアイキャッチ画像
BCD を取り回すライブラリを Rust で書いた
カンムテックブログ
エンジニアの佐野です。文字列および数値を BCD と相互変換するライブラリを Rust で書きました。 github.com crates.io にも公開しました https://crates.io/crates/bcd-convert BCD BCD は Binary-coded decimal の略で日本語では二進化十進表現などとも呼ばれます。 カンムの業務で言うとクレカ決済のデータを扱っているとたびたび出現します*1。例えばカード決済のデータをやりとりする ISO8583 というプロトコルではカード番号は 0x40, 0x19, 0x24, 0x99, 0x99, 0x99, 0x99,…
16日前
記事のアイキャッチ画像
技術者倫理のキホンという本を読みました
カンムテックブログ
はじめまして。プラットフォームチームの高山です。 この記事は カンム Advent Calendar 2024 の18日目の記事です。 adventar.org 最近読んだ本がなかなか興味深かったので、ちょっとご紹介できればと思います。 技術者・研究者のための 技術者倫理のキホン作者:田中和明秀和システムAmazon 「技術者・研究者のための 技術者倫理のキホン」と言う本です。 この世の中、様々な方の研究があり、それに付随する形で技術の発達・進展があります。そして、それを実装していく際に「倫理」みたいなものは大変大事だなぁと思っています。 エンジニアとしても「それはちょっと…」みたいな企画・仕…
18日前
記事のアイキャッチ画像
Redash を少し便利に使う Chrome Extensions を書いた
カンムテックブログ
エンジニアの佐野です。菅原が Redash について言及したのでそれに乗っかって自分も簡単な記事を書きます。 tech.kanmu.co.jp まず Redash の基本的な使い方としては次の通りです。 https://your-redash-domain/queries/new にアクセスする。 データソース *1 を選択してクエリを書く。 クエリを実行する。 ここで2のデータソースを選択する際なのですが、カンムは Redash を多用しているため大量のデータソースが存在し、都度用途に応じて選択する必要があります。次の画像が存在するデータソース一覧です。 例えば画像中でマスクしていない Bi…
1ヶ月前
記事のアイキャッチ画像
ジョブキューのパフォーマンス問題の経験から学んだ PostgreSQL の内部理解
カンムテックブログ
ソフトウェアエンジニアの新田です。 これは カンム Advent Calendar 2024 の8日目の記事です。昨日はフロントエンドチームのEMの佐藤さんの記事 チームが成長するたびに変わっていった朝会の話 - カンムテックブログ でした。 私は現在プラットフォームチームに所属しており、おなじようにチームで朝会をしているので非常に参考になりました。積極的にパクっていこうと思います。 さて、カンムではプロダクトのデータベースに Amazon Aurora PostgreSQL を採用しています。 ここで少し特徴的なのは、このデータベースは、アプリケーションのデータ管理だけでなく、ジョブキューの…
1ヶ月前
記事のアイキャッチ画像
チームが成長するたびに変わっていった朝会の話
カンムテックブログ
こんにちは、カンムのフロントエンドチームでエンジニアリングマネージャーをしている佐藤です。 これは カンム Advent Calendar 2024 の7日目の記事です。昨日は always_allokay によるお世話になっているライブラリをちょっと見てみるシリーズ、shopspring/decimalの記事でした! この記事ではチームで行っている朝会の様子や改善してきたことを紹介します。 背景 バンドルカードチームでは、今年の頭から各職能チーム(Unit)のメンバーが異なる目的を持ったチーム(いわゆるフィーチャーチーム)に属し、それぞれが独自のプロジェクトやタスクに取り組む形でプロダクト開…
1ヶ月前
記事のアイキャッチ画像
使っているライブラリを見てみよう(shopspring/decimal編)
カンムテックブログ
こんにちは. Poolでエンジニアをしている @always_allokay です。 こちらはカンム Advent Calendar 2024 の6日目の記事です。 昨日はprinさんによるボボステの記事でした。 タイトルの通り、お世話になっているライブラリをちょっと見てみるシリーズです。(今はじめました) 今回は、shopspring/decimal について見ていきます。 shopspring/decimalとはなにか まずはライブラリのREADMEをみます。 Arbitrary-precision fixed-point decimal numbers in go. Note: Deci…
1ヶ月前
記事のアイキャッチ画像
最近のRedash
カンムテックブログ
SREの菅原です。 この記事はカンム Advent Calendar 2024の4日目の記事です。 最近のRedashの開発状況について、知っている範囲ですこし書いてみたいと思います。 redash.io Redashといえば様々なデータソースをSQLを使って可視化できるBIツールで、カンムでも業務のデータ分析に使われています。 ただ、一昔前にRedashがはやっていた頃に比べると、最近ではトレンドからは外れたような印象があります。 実際、SaaS Redashが終了した2021年から2023年の4月あたりのGitHubのアクティビティを見ると、活動が停滞しています。 Contributors…
1ヶ月前
記事のアイキャッチ画像
モダンな状態管理の探求:Redux からZustand へ ― 実装から原理まで
カンムテックブログ
はじめに こんにちは、エンジニアの王です。 フロントエンドの開発者として、私はいくつかのプロジェクトでRedux Toolkitを使用してきました。Redux Toolkitは確かに強力な状態管理ツールですが、プロジェクトが進むにつれて、その構造的な複雑さを次第に強く感じるようになりました。 そこで、より軽量で使いやすい状態管理ライブラリを探し始めました。新しいソリューションの条件として、Redux Toolkitの堅牢性は維持しつつ、より簡潔なAPIと学習コストの低さを重視しました。その過程で出会ったのが、Zustandです。 Reduxの実装の複雑さ シンプルなカウンターを管理するためにR…
1ヶ月前
記事のアイキャッチ画像
社内ものづくりイベント「Builders Day」を初開催した話
カンムテックブログ
こんにちは、nakaji_dayoと申します。カンムでエンジニアリングマネージャーをしています。 2024年9月に「Builders Day」という社内ものづくりイベントを初開催しました。本稿ではイベント企画の背景や開催時の様子の紹介をします。 Builders Dayとは はじめにイベントの概要ですが、「Builders Day」は普段の業務や職種に関係なく色々なメンバーがチームを組み、アイディアを出し合い、ものづくりを楽しむイベントです。 作るものは業務に関係なく完全に自由で、制作には1営業日を使います。また、発表会を社員総会に合わせる形でオフライン開催することにしました。 note.co…
1ヶ月前
記事のアイキャッチ画像
SMS配信の冗長化と配信プロバイダの自動切り替え
カンムテックブログ
エンジニアの佐野です。カンムでは SMS を多用しています。例えば以下のようなポイントで使っています。 ユーザ新規登録時の認証コード送信 ログイン時の認証コード送信 3Dセキュア 認証時 後払い機能利用時 ユーザにメッセージを送る時 ...etc ここでもし SMS 送信ができないような事案が発生するとユーザの体験が悪くなり KPI にかなりのダメージが出ます。今回は SMS 送信が滞らないように戦った歴史と設計について書きます。 SMS 配信サービスの利用と初期の頃の設計 SMS 配信時に問題が発生するポイント PaaSoo 導入と手動切り替え時代 Nexmo *1 接続時のエラーハンドリン…
2ヶ月前
記事のアイキャッチ画像
Atlantisのマルチクラウドへの対応について
カンムテックブログ
SREの菅原です。 カンムではAWSやGCP、Datadogなど様々をIaaS・SaaSをterraformで管理しているのですが、以前は「GitHub Actionsでplan」「管理者や開発者が手元でapply」というフローになっており、terraform applyの実行が管理者や一部の権限を持った開発者に集中してしまい、インフラの変更作業の速度が落ちてしまっている状態でした。 しかし、Atlantisという「Pull Request上でterraform plan・applyを実行する」ツールを導入したことで、うまくapply権限を各開発者に委譲することができるようになったので、Atl…
2ヶ月前
記事のアイキャッチ画像
Go の静的解析で DB へのコミット漏れを検出する
カンムテックブログ
エンジニアの佐野です。カンムはバックエンドに PostgreSQL を置きつつサーバを Go で書いています。DB のトランザクションの取り回しは概ね次の様なイディオムになっているのですが、先日 Commit() が漏れている箇所を見つけまして...。結果としてそれについては大きな問題はなく秋の夜長に遅めの肝試しをする程度で済んだのですが、これは事故に繋がるためトランザクションの Commit 漏れ(defer Rollback() 漏れも)を検出する Linter を書きました。 tx, err := db.BeginTx(ctx, nil) if err != nil { return e…
3ヶ月前
記事のアイキャッチ画像
Terraform Providerを使ったcron式のチェック
カンムテックブログ
SREの菅原です。 カンムのサービスのバッチ処理は基本的にEventBridge Scheduler+ECSで動いており、バッチのスケジュールはterraformで以下のように定義されています。 module "kanmu_batch" { # バッチまわりはモジュール化 source = "../modules/batch" for_each = { hogehoge-batch = { schedule_expression = "cron(0 0 * * ? *)" command = ["/batch/bin/hoge", "hikisu"] is_enabled = true } f…
3ヶ月前
記事のアイキャッチ画像
terrraformを使ったGoのLambdaの管理
カンムテックブログ
SREの菅原です。 カンムのサービスはWebサービス・バッチ処理なども含めて基本的にはECS上で動かしているのですが、簡単なバッチ処理はLambda+EventBridge Schedulerの組み合わせで動かすこともあります。 LambdaはECSに比べてDockerイメージのビルドやECRの準備が不要で作成の手間が少ないのですが、terraformでデプロイまで含めて管理しようとすると少し問題がありました。 terraformでのLambdaのデプロイの問題点 例えば以下のような構成のNode.jsのLambdaをデプロイする場合 / ├── lambda.tf └── lambda ├─…
4ヶ月前
記事のアイキャッチ画像
ウォーターフォールを見直して自チームに最適化した開発フローを構築する
カンムテックブログ
エンジニアの佐野です。バンドルカードではポチっとチャージという後払いの機能を利用する際に年齢確認が必須となりました。通信キャリアや銀行との連携等によって年齢確認ができるようになっています*1。今回はこの機能の開発を題材に普段開発でどのようなことを考えて開発し、本機能の開発ではどのようなフローを構築して進めていったかを書きます。 少し概要を書くと、本件についてはウォーターフォールモデル "のような" 開発フローで行いました。事業上の理由でビッグバンリリースが必要でした。要件をしっかり決めてステップバイステップで開発を行いすべての機能を同時にリリースする...案件の性質を考えるとウォーターフォール…
5ヶ月前
記事のアイキャッチ画像
「React Native Meetup #17」を開催しました
カンムテックブログ
こんにちは、カンムのエンジニアリングマネージャー佐藤です。 先日、React Native Japanと一緒に開催した「React Native Meetup #17」のイベントレポートをお届けします!前回に引き続き、今回もたくさんの方にご参加いただき、賑やかな会になりました。 皆さんのご参加、本当にありがとうございました。それぞれの発表者が共有してくれた経験や知見のおかげで、懇親会までとても充実した時間を過ごすことができました。 発表内容のご紹介 @mtry さんの「EAS Custom Buildを使ってビルドの開始/完了をSlackに通知する方法」 @mtry さんは、EAS Custo…
5ヶ月前
記事のアイキャッチ画像
バンドルカードが Google Pay™ に対応しました
カンムテックブログ
バンドルカードのバックエンドエンジニアをしているshibaです。生粋のiPhoneユーザです。 昨年の10月頃にバンドルカードは Google Pay に対応しました。少し遅くなってしまいましたが、 Google Pay 対応について簡単に紹介したいと思います。なお、 Google Pay というアプリ名は2023年3月頃からGoogle ウォレット に変更され、 Google Pay はGoogle ウォレット 内の1機能という扱いになっています。 Google Pay について まず、 Google Pay や、 Google Pay を使った決済の仕組みについて簡単に紹介します。 まずバ…
5ヶ月前
記事のアイキャッチ画像
「React Native Meetup #16」を開催しました
カンムテックブログ
こんにちは、カンムのエンジニアリングマネージャーの佐藤です。カンムでは5月30日(木)に、React Native Japanコミュニティと協賛してReact Native Meetup #16を開催しました。本記事では、その様子をレポートしました。 当日の様子 イベントは、弊社オフィスの会議室で行われました。当日は30人ほど集まり、とても活気のある勉強会となりました。発表の後には懇親会も設けられ、皆様の意見交換や情報共有が盛んに行われました。 発表内容の紹介 今回は、弊社の社員含め5名のスピーカーからLTが発表されました。 1. 「React Navigation v7で導入されるStati…
7ヶ月前
記事のアイキャッチ画像
【Go Conference 2024】プロポーザルに通ったカンムのエンジニアが準備したこと、通った後にやったことʕ◔ϖ◔ʔ
カンムテックブログ
ソフトウェアエンジニアの@sho-hataです。 2024年6月8日(土)開催のGo Conference 2024に、ソフトウェアエンジニアの私と@bisho-joの2人が登壇します。また、カンムはブロンズスポンサーとして協賛します。 gocon.jp カンムが提供している バンドルカード や Pool のバックエンドは主に Go で開発しており、スポンサーとして継続的に協賛させていただいております。 tech.kanmu.co.jp tech.kanmu.co.jp このイベントを通して Go コミュニティの発展に寄与できればと思っています。 セッションに登壇します ʕ◔ϖ◔ʔ バンドルカ…
7ヶ月前
記事のアイキャッチ画像
Poolのソフトウェアエンジニアを募集しています
カンムテックブログ
ソフトウェアエンジニアのhataです。 Poolはソフトウェアエンジニアの募集を公開しました。 ソフトウェアエンジニア(フロントエンド)- Pool / 株式会社カンム 今回の記事では、Poolというサービスを開発する面白さや、直近抱えている課題について紹介します。 Poolについて pool-card.jp Poolは投資と決済が一体となった、国内でもあまり類を見ないサービスで、値動きを気にせず資産運用ができる特徴と、投資した金額をVisaカードの利用可能額として使える特徴を持っています。これによりカードを使いつつ資産形成していけるという、他にはない投資体験ができることを目指しています。 2…
7ヶ月前
記事のアイキャッチ画像
カンムの機械学習インフラの今 2023 年版
カンムテックブログ
こんにちは。ソフトウェアエンジニアの新田です。こちらは カンム Advent Calendar 2023、8日目の記事です。 昨日はデザイナー torimizuno さんによる バンドルカードの Google Pay デザイン でした。今年のバンドルカードの目玉リリースの1つであるスマホタッチ決済(Google Pay)のデザインについて説明されていて、凄く面白いです。 今回は、カンムの機械学習のインフラ周りについて話します。実はカンムのテックブログでは2年半前に同じテーマの記事があります。この内容からいくつかアップデートがあるので、今回はその差分を重点的に拾っていこうと思います。 tech.…
1年前
記事のアイキャッチ画像
バンドルカードの Google Pay デザイン
カンムテックブログ
デザイナーのtorimizunoです。 こちらはカンム Advent Calendar 2023、7日目の記事です。 先日の記事はhikkyさんによるSecure W2で証明書を発行してEntra ID CBAを設定する でした。 はじめに バンドルカードは2023年10月に Google Pay に対応しました。 お買い物という日々利用されるシーンのなか、非接触でバンドルカードが使えるようになったことに気づいて迷わず使い始められるよう、デザイナーとして意識したことをご紹介いたします。 とにかく、気づきやすく Google Pay に追加ボタンのレギュレーション上、カードが表示されている画面で…
1年前
記事のアイキャッチ画像
【デスクツアー】カンムメンバーの在宅環境
カンムテックブログ
これは誰のデスクかな...? こんにちは。Pool開発チームのhataです。 自分は人のデスク環境を観るのが好きです。人のデスク環境は三者三様で、その人らしさや個性が滲み出ており観ていて楽しいんですね。なので、ガジェット系Youtuberがたまに投稿しているデスク環境紹介動画を漁ったりするのが趣味になっています。 カンムでは、オフィス徒歩圏内に住むメンバー以外は全員フルリモートで働いています。自分もその一人で、オフィスは恵比寿にあるのですが、入社して以降ずっと富山県からのリモートワークです。 カンムのかなり自由な働き方を支える、リモートワークやフレックスなどの制度についてはこちらの記事をどうぞ…
1年前
記事のアイキャッチ画像
ドキュメントを書く時に考えていること
カンムテックブログ
ソフトウェアエンジニアの summerwind です。最近は LLM が自分のふりをして代わりに仕事をしてくれるような仕組み作りを趣味にしています。 先日社内で「ドキュメントをうまく書く方法はありますか?」という質問をもらったのですが、普段ドキュメントを書く時に意識をしている要素のようなものはあるものの、それをちゃんと言語化したことがなかったため、抽象的にしか答えることができませんでした。改めて言語化をしてみるのは面白そうだなと感じたので、今回はドキュメントを書く時に考えていることをいくつか書き出してみたいと思います。 想定する読者を決める ドキュメントを書く時にまず最初にやるのは「そのドキュ…
1年前
記事のアイキャッチ画像
カード決済のセキュリティ的な問題点とその対策、IC チップの決済とその仕組み
カンムテックブログ
エンジニアの佐野です。カンムはカード決済のサービスを提供しています。カード決済にはいくつかの決済手段があり、マグストライプ、IC、IC非接触(俗に言うタッチ決済)、オンライン決済などの機能が提供可能です。iD のようなスマートデバイスにカード情報を入れてスマホでタッチ決済する仕組みもあります。カンムのプロダクトであるバンドルカードはマグストライプとオンライン決済、Pool はマグストライプとオンライン決済に加えて IC接触決済、IC非接触決済(タッチ決済)を提供しています。今日はセキュリティ的な観点から各種決済手段の特徴や問題点とともに、主に IC 決済の仕組みについて小ネタを交えつつ書いてい…
2年前
記事のアイキャッチ画像
次なる`pkg/errors`を探して
カンムテックブログ
エンジニアの宮原です。 今回はGoでスタックトレースを取得するライブラリ選定についての記事です。 この記事は 【Gophers Talk】スポンサー4社による合同LT & カンファレンス感想戦で発表したものです。 発表スライドはこちらから確認できます。 この記事の目的 この記事ではpkg/errorsからの移行先を探すための参考情報を提供することを目的とします。 Goのエラーハンドリングのやり方等についてこの記事では触れないこととします。 pkg/errors とはなにか pkg/errorsとは、githubのREADMEを引用すると Package errors provides simp…
2年前
記事のアイキャッチ画像
Go Conference 2023 CTF: 標準ライブラリの利用ミスに関わる脆弱性
カンムテックブログ
セキュリティエンジニアの宮口です。 Go Conference 2023にてCTFの問題を用意させていただきました。 問題はこちらになります。 github.com 本記事では出題の意図、想定解などを解説します。 解けた方も解けなかった方もぜひ読んでみてください! 1. 問題の解説 今回出題した問題は、バンドルカードのような決済系のアプリケーションを想像して作成しました。 ユーザーが出来る操作は限られていて、以下の操作のみ可能です。 パスワードリセット 残高確認 送金 この問題では、残高が9,999,999を超えたときに残高確認APIにアクセスすることでフラグが出力されるようになっています。 …
2年前