RemitAid Tech Blogのフィード
https://zenn.dev/p/remitaid
RemitAid は「テクノロジーで国際決済の”新たな道”を創る」をミッションに、コストの高さや着金タイミングの不透明さなど、国際送金に関わる課題を解決する「ラクヤス決済 振込」と、海外の展示会・見本市で活用できるクレジットカード決済サービス「ラクヤス決済 クレジットカード」を提
フィード

GitHub ActionsのGoテストを8分→3分弱に短縮 —— setup-goのキャッシュ共有を見直す
RemitAid Tech Blogのフィード
こんにちは。ソフトウェアエンジニアの inari111 です。RemitAidではバックエンドにGoを採用しています。本記事では、キャッシュを見直し、GitHub Actionsのテストジョブの実行時間を約8分から3分弱に短縮した事例を紹介します。 前提:バックエンドのテスト構成まず、バックエンドの3種類のテストについて説明します。ユニットテストドメイン層の関数を中心に書いているユニットテストです。go test ./... で実行します。DBを使ったインテグレーションテストアプリケーション層に書いているビジネスロジックとDBの整合性を検証するためのテストです。テス...
12日前

S3 の同名ファイル上書きを If-None-Match で防ぐ
RemitAid Tech Blogのフィード
こんにちは!株式会社RemitAidのremitaid_wataruです。今回は小ネタですが、S3 へのファイルアップロードで「同名オブジェクトを誤って上書きしてしまう」ことを防ぐために行った対応を紹介します。S3 の条件付き書き込み(Conditional Writes)自体は 2024 年 8 月にリリースされた機能で、既に解説記事も多くありますが、実際のプロダクトでどういう判断でどう使ったか、という観点でまとめます。 背景S3 はデフォルトでは、同じキー(オブジェクト名)に対して PutObject すると既存のオブジェクトを上書きします。分散システムとしての S3 の仕...
2ヶ月前

schema.sqlからER図を生成するSkillを作ってみた
RemitAid Tech Blogのフィード
こんにちは!RemitAidでソフトウェアエンジニアをしているnos0611です。 はじめにRemitAidではDBスキーマを schema.sql で管理しているのですが、テーブルの増加に伴い関連性の把握がしんどくなってきました。そこで「schema.sql を読み取ってER図にする」ための Claude Code のスキル を作ってみたため紹介します。成果物は公開しているため、もしよければご覧ください。https://github.com/nos0611/schema-to-er なぜ作ったのかER図の生成ツールはすでに色々あります。手軽なところだと Mermaid...
3ヶ月前

日々の開発で使っているClaude Code Skills
RemitAid Tech Blogのフィード
こんにちは。ソフトウェアエンジニアの inari111 です。弊社ではClaudeを全社で使っており、エンジニアはClaude Codeを用いて日々の開発を行っています。本記事では、私が開発時に使っているClaude Code Skillsについて紹介します。 superpowershttps://github.com/obra/superpowersよく使っているのは brainstorming, subagent-driven-development, executing-plans です。brainstorming質問を通して案を検討し、設計書を保存するSkillで...
3ヶ月前

本番DBを直接いじらなければならないときに最低限注意したい5つのポイント
RemitAid Tech Blogのフィード
はじめにこんにちは!株式会社RemitAidのremitaid_wataruです。RemitAidでは、「ラクヤス決済 振込」と「ラクヤス決済 クレジットカード」の2つのサービスを運営しています。先日、「ラクヤス決済 クレジットカード」のプラン改定に伴って本番DBに直接 UPDATE や INSERT をする作業を実施しました。本来、本番DBを直接いじらずに済む状態を作っておくのが理想です。たとえば、データ操作は管理画面経由で行うようにするSQLを流す必要があるなら、レビュー済みのスクリプトを作成して実行するこうした仕組みを整えておけば、人為的なミスは減ります。...
4ヶ月前

LP用のStudioドメインを変更しました
RemitAid Tech Blogのフィード
こんにちは!RemitAidでソフトウェアエンジニアをしているnos0611です。 はじめにRemitAidではLPの公開にStudio(https://studio.design/ja)を利用しています。先日サービスの本リリースに合わせてLP用のStudioドメイン変更を実施したため、公開中のStudioページのドメインを変更する場合のノウハウについて備忘録も兼ねて記事にします。ドメイン自体の取得などは今回の記事では割愛します。 前提今回は以下の通りドメインを変更しました。旧ドメイン:remitaid.io(アプリケーション側では引き続き使用しています)新ドメイン...
5ヶ月前

DBを使ったインテグレーションテストを10分から3分に短縮 —— TRUNCATE廃止とDBプール導入
RemitAid Tech Blogのフィード
こんにちは!ソフトウェアエンジニアの inari111 です。前回の記事 ではDBを使ったインテグレーションテストの導入についてご紹介しました。その記事の最後で「速度の改善については別の記事で書きたい」とお伝えしていましたが、今回はその続編です。インテグレーションテスト導入後に見えてきた課題を原因ごとに分解し、それぞれどのように改善したかについてご紹介します。 前提: インテグレーションテストの実行方式DBにはMySQLを使っていて、バックエンドはGoで実装しています。詳しくは 前回の記事 をご覧いただければと思いますが、改善前のインテグレーションテストの実行方式を簡単に振...
5ヶ月前

加盟店申込フォームに補足をつけたら登録ミスが劇的に減った ー最小工数で最大アウトカムをー
RemitAid Tech Blogのフィード
こんにちは!株式会社RemitAidのremitaid_wataruです。RemitAidではクレジットカード決済ができる「デジタル決済」と海外からの振込を受け取ることができる「海外ラクヤス振込」サービスを運営しています。 はじめに「このサービス、本当に使いますか?」加盟店の申込内容を確認するたびに、営業と開発の間でこんなやり取りが繰り返されていました。営業が顧客に確認し、間違っていれば開発が修正する。1件あたりは小さなことでも、積み重なれば確実に業務を圧迫します。本記事では、たった5分の改修で月10件のミスを1〜2件まで減らせた話を紹介します。 月10件の「確認・修正作...
6ヶ月前

Lambda導入でドツボにハマった話
RemitAid Tech Blogのフィード
こんにちは!RemitAidでソフトウェアエンジニアをしているnos0611です。 はじめにRemitAidではAWS Lambdaを使った実装は今までなかったのですが、先日導入してみました。導入時にいくつかドツボにハマったため、未来の自分向けのメモも兼ねて記事にします。(ドキュメントをちゃんと読めばわかる内容も多分に含まれておりますが、何卒ご容赦ください😢) はまりポイントその1 - LambdaExtensionの使い方ミス -今回実装したLambdaではAPIコールが含まれていたため、それに必要なAccessKeyなどをSecrets Managerから取得する必要...
6ヶ月前

DBを使ったインテグレーションテストを導入し、モック中心のテストから脱却した
RemitAid Tech Blogのフィード
こんにちは!ソフトウェアエンジニアの inari111 です。この記事では、RemitAidでDBを使ったインテグレーションテストを導入した背景、方針、得られた効果について紹介します。 はじめにDBにはMySQL, Redisを使っていて、バックエンドはGoで実装しています。この記事で登場する各テストに関しても説明しておきます。ユニットテスト関数やメソッドなど最小単位のコードが正しく動作するかを検証するテスト外部依存(DB、APIなど)はモックに置き換えインテグレーションテスト複数のモジュールを組み合わせた状態で正しく連携するかを検証するテストDBアクセス...
7ヶ月前

開発から離れた数ヶ月で気づいたこと ―プロダクトも手段のひとつ
RemitAid Tech Blogのフィード
こんにちは!株式会社RemitAidのremitaid_wataruです。ここ数ヶ月は開発から離れて、新規事業の立ち上げに向けた業務をメインでやっていました。規制要件の整理、社内マニュアルの作成、システムとして対応すべき機能の洗い出し。コードを書く時間は1~2割ほどでした。現時点でのRemitAidはまだ小さな会社なので、エンジニアでもこのような開発以外の業務を担うことがあります。 営業から聞いた話営業メンバーと話をしていた時、こんな話がありました。「◯◯のニーズの方が多くて、今の機能だけだと契約取りきれないんですよね」ニーズはあるのに、今のプロダクトでは対応しきれていない...
7ヶ月前

MinioからLocalStackに乗り換えました
RemitAid Tech Blogのフィード
こんにちは!RemitAidでソフトウェアエンジニアをしているnos0611です。 はじめにRemitAidではローカル開発環境でS3互換ストレージとしてMinioを使用していたのですが、この度LocalStackに乗り換えました。本記事ではその背景と対応内容についてご紹介します。 なぜ乗り換えたのか?2025年10月、MinioがDockerイメージの無料配布を終了するというニュースが流れました。https://gigazine.net/news/20251023-minio-stops-distributing-free-docker-images/これにより、今後...
8ヶ月前

Amazon Quick Suiteで事業を見える化するレシピを大公開!
RemitAid Tech Blogのフィード
こんにちは!RemitAid CTOの@iTakacです。今回は弊社が事業で活用しているダッシュボードをご紹介いたします。弊社ではタイトルのとおり、Amazon Quick SuiteをBIツールとして活用しています。基本的にはデータセットでSQLを書いて、分析でビジュアライズを調整するシンプルな利用にとどまっています。具体的な数値や期間はボカしていますが、読者の事業の参考になれば幸いです。 Amazon Quick Suiteとは?Amazon Quick Suiteは、AWSが提供するクラウド型のBIツールで、旧名はAmazon QuickSightでした。他のBIツ...
8ヶ月前

Semgrepの柔軟な静的解析でマルチテナントアプリの実装ミスを防ぐ
RemitAid Tech Blogのフィード
はじめにRemitAid ソフトウェアエンジニアの inari111 です。RemitAidではマルチテナント構成でアプリケーションを構築しています。異なるテナントのデータに誤ってアクセスすることを防ぐため、Repositoryのinterfaceでは必ず merchantID を引数に受け取るようにしています。// 例type UserRepository interface { List(ctx context.Context, merchantID MerchantID, tx *sql.Tx) ([]User, error)}マルチテナントの実装詳細につ...
8ヶ月前

複数の Excel ファイルを一括で PDF に変換する方法
RemitAid Tech Blogのフィード
はじめにこんにちは!株式会社RemitAidのremitaid_wataruです。RemitAid では運用上、月に 100 件近くの Excel ファイルを PDF に変換する作業があります。これまではサポート担当者が 1 ファイルずつ Excel で開いて「PDF としてエクスポート」を繰り返していました。さすがに非効率すぎるということで「なんとかならない?」と相談を受け、一括変換の方法を調査しました。Web で検索すると「1 つの Excel ファイル内の複数シートを一括で PDF 化する」記事は見つかるものの、複数の Excel ファイルを一括で PDF 化する方法...
9ヶ月前

valkeycompatを使ってgo-redisからvalkey-goへサクッと乗り換えました
RemitAid Tech Blogのフィード
こんにちは!RemitAidでソフトウェアエンジニアをしているnos0611です。 はじめに先日のブログでも紹介しましたが、RemitAidではRedisからValkeyへの移行を行いました。その際、RedisとValkeyは互換性があるとのことだったのでアプリケーション内で使用するライブラリはgo-redisのままにしていたのですが、valkey-goへの乗り換えも行ったので紹介します。 ライブラリの選定Valkeyのページを見ると、Go向けのライブラリとしては以下の2つが記載されていました。valkey-GLIDEvalkey-govalkey-GLIDEにつ...
9ヶ月前

RemitAidが取り組むフロントエンドのE2Eテスト —— Playwright MCP + AI Agentによる自動化までの道のり
RemitAid Tech Blogのフィード
こんにちは!RemitAid CTOの@iTakacです。今回はPlaywrightやMCP、AI Agentを活用したテスト自動化までの道のりについて、具体的な実践方法を交えながらご紹介いたします。 フロントエンドのテストが欲しい現在弊社のフロントエンドアプリケーションにはテストコードがありません。B2B向けの管理画面を提供する中で、複雑なUXはないとはいえテストがないことで大規模なリファクタリングに二の足を踏んでしまうことが多々あります。直近では金額を取り扱う変数が浮動小数点だったため、UIでの表示に不具合がリリース前のQAで発覚しました。この事象自体は単なる一つのバグ...
9ヶ月前

deadcode で不要なコードを削除 —— .deadcodeignore で誤検知を防ぎ 950 行削減
RemitAid Tech Blogのフィード
はじめにRemitAid ソフトウェアエンジニアの inari111 です。日々の開発で削除し忘れたコード、使うと思って用意したが実際には使われなかったコードをまとめて削除したので、どのように削除を進めていったかをご紹介します。 Dead Code とはまず始めに、Dead Code について説明します。Claude に聞いてみると以下のように回答がありました。Dead code(デッドコード)とは、プログラム中に存在するが、実際には実行されることがない、または使用されることがないコードのことです。主な種類到達不可能なコード使用されていない関数やメソッド使用...
9ヶ月前

MySQL の JSON カラム - 運用で感じた「めんどくささ」
RemitAid Tech Blogのフィード
はじめにこんにちは!株式会社RemitAidのremitaid_wataruです。RemitAid では「海外ラクヤス振込」という国際送金サービスと、海外展示会向けの「デジタル決済」というクレジットカード決済サービスを提供しています。開発初期、「柔軟性」を重視していくつかのカラムに JSON カラムを採用しましたが、運用していくうちに「なんか JSON めんどくさいな...」という感覚が積み重なっていきました。この記事では、理論的な問題というより、実際の運用で感じた JSON カラムの「めんどくささ」 について書きます。 背景: なぜ JSON カラムを使い始めたのか国...
10ヶ月前

AppRunnerのデプロイ完了をEventBridgeの入力トランスフォーマーを使っていい感じにSlack通知した話
RemitAid Tech Blogのフィード
こんにちは!RemitAidでソフトウェアエンジニアをしているnos0611です。 はじめにRemitAidでは一部のアプリケーションのデプロイにAWS App Runnerを使用しているのですが、デプロイが終わったかどうかはAWSコンソールで確認していました。そこで、EventBridgeと入力トランスフォーマーを使いSlack通知する仕組みを先日構築したためご紹介します。また、EventBridgeの入力トランスフォーマーで地味にハマったりしたのでそちらも記載します。 何が問題だったのか?元々はこちらの画像のフローでApp Runnerへのデプロイを実施していました。...
10ヶ月前