STORES Product Blog

こだわりを持ったお商売を支える「STORES」のテクノロジー部門のメンバーによるブログです。

2025-06-01から1ヶ月間の記事一覧

STORES 決済 と PCI DSS (1) 現状と効率化 - 情報の集約と管理

こんにちは。セキュリティ本部の soh です。 昨年から STORES 決済 の PCI DSS 対応 を、バックエンドエンジニアやコーポレート IT エンジニアとともに担当しています。 私自身、初めて PCI DSS 対応を担当する中でさまざまな知見を得ることができ、また改善…

Cloud Run + IAP で Lightdash をホスティングしてみた

はじめに \コンニチハ/ STORES株式会社でアナリティクスエンジニアをやっているk-0120です。突然ですが、BIツールって何を使われてますか?STORES では現在 Metabase という BIツールを利用しています。GUIによるクエリ生成や各種ビジュアライゼーションなど、所…

multi-xcodeproj + xcworkspace 構成移行の実践

multi-xcodeproj + xcworkspace 構成移行の実践 はじめに xcodeproj とは? xcworkspace とは? この記事で解決すること 背景と課題 STOERS レジ の当初の構成 Build Configuration Stagingで起こっていた問題 Swift Packageの制約 具体的に何が起きるのか?…

Goで作られたシステムをRuby on Railsに移植しています 〜データベース編〜

STORES でエンジニアをしている片桐です。 先日、「Goで作られたシステムをRuby on Railsに移植しています」というブログを投稿させていただきました。 product.st.inc ベース部分の実装について別ブログで紹介したいと書かせていただきましたが、今回はその…

Compute Engineで安全・手軽なRails console環境を構築する

こんにちは、エンジニアのokuboです。このブログでは、Rails console用のサーバをCompute Engine上で安全かつ手軽に運用する手法をご紹介します。 モチベーション 現在STORESでは、いくつかのRailsアプリケーションをGoogle CloudのCloud Run上で稼働させて…

モバイルオーダーの予約システムで複雑な時間の計算を集合演算で解決した

こんにちは、Webアプリケーションエンジニアのsomeziです。 皆さんは予約システムをつくったことはありますか?私は現在モバイルオーダーを開発しており、その中で時間を指定せずに最短で受け取れるように注文する「即時注文」と、あらかじめ決められた時間…

BigQuery MCPサーバーを作ってみる

はじめに はじめまして。 データ本部でデータエンジニアをやっている@takaHALです。 最近、MCP(Model Context Protocol)を活用した様々なツールが登場し、ClaudeやCursorなどのAIツールでできることが急速に拡大していますよね。 今回は、MCPへの理解を深…

数字を動かすチームになるために──現在地と目的地の見える化

はじめに こんにちは、STORESの西村(@jnishimu)です。 STORES(ストアーズ)では、2025年3月から、キャッシュレス決済・POSレジ・ネットショップ・予約システム・モバイルオーダーなどを “まとめて” 使える新しいプラン「スタンダードプラン」を開始しまし…

ブランドアプリの ID 基盤移行に向けた Cookie 管理の仕組みの実装

はじめに こんにちは。STORES ブランドアプリで Android エンジニアをしている Yuto Koguchi (@10llip0p) です。 STORES では現在 ID 基盤の統一に取り組んでおり、複数のプロダクトへ共通のアカウントでログインしてシームレスに利用できる体験を目指してい…

ViewModel での複雑な状態管理への処方箋

こんにちは!Android エンジニアの naberyo(@error96num)です。 私が現在開発に携わっている STORES モバイルオーダー では、モバイルオーダーから入った注文を飲食店のキッチンで管理するための「キッチンディスプレイアプリ」をネイティブアプリとして提…

Goで作られたシステムをRuby on Railsに移植しています

STORES でエンジニアをしている片桐です。 STORES では店舗運営に関するさまざまなプロダクトを提供しています。これらのプロダクトは元々別の会社で運営されてきた完全に異なるプロダクト群で、アカウント体系から全く異なるシステムになっていました。近年…

EC・POSレジのプラン購読の仕組みをZuoraに移行した話

はじめに はじめまして。STORES でエンジニアをやっている id:shu-suzuki-1124 です。 競馬では例年より早く宝塚記念が開催されたため春のG1もすべて終わり、新馬戦や夏競馬が本格的に始まってきました。 未来への可能性に期待膨らむ新馬戦、波乱万丈で刺激…

約30行でできる!Jetpack Composeで作るサイン画面

はじめに こんにちは! STORES 決済 でAndroidアプリの開発をしているchukaです。 最近は美味しいパンを食べることにハマっています。 美味しいパン屋さんを知っている方は、ぜひ教えてください Jetpack Composeでサインをしよう みなさんは、クレジット…

PCI DSS v4.0 に準拠するために CSP レポート分析基盤を構築しました

STORES 技術推進本部の id:atpons です。普段は STORES 全体の技術課題をいい感じにしたり、パブリッククラウドの管理、運用をしています。 今回は STORES ネットショップで PCI DSS v4.0 に準拠するにあたり必要となった CSP レポートの分析システムについ…

プロダクト開発と伴走するデータ活用

はじめに こんにちは。STORES株式会社でデータアナリストをしています、satoyuです。 STORESでは2025年3月に新たな料金プランを発表・リリースしました。またリリースに合わせて、事業者がSTORES製品を使い始める際のオンボーディングフローを統合しました。…

セッションストアをValkey Serverlessへ移行してみたら、パフォーマンスもコストも大きく改善した話

こんにちは、技術推進本部のシムです。 今回は最近実施したセッションストアのValkey Serverless移行について、なぜ移行を決めたのか、実際の移行プロセスや成果、運用で得られた知見を紹介します。 ここでのセッションストアとは STORES ネットショップの本…

STORES アカウントにsidを導入しました

こんにちは。エンジニアのokuboです。このブログではSTORES アカウントのsid導入およびsidを利用したBack-Channel logoutの実装について、実際の開発現場での課題や仕様、実装例、得られた知見を紹介します。 モチベーション STORESは複数の独立したサービス…

Webhook の重複処理実行を回避してシステムの信頼性を高める

こんにちは、STORES ブランドアプリ や STORES ロイヤリティ の開発をしている ta-chibana です。 STORES では複数のサービスが通信しあうことで実現される機能が多くありますが、STORES で開発されたプロダクト同士の連携に限らず、Shopify などの外部サー…

AIサービス導入時にまずチェックすべき3つの観点

AI導入推進担当者が、AIサービス(特にAIを用いたコーディングツール)導入時にまずチェックすべき3つの観点をまとめています。

TRICK 2025 の mame のプログラムを語る

こんにちは、遠藤(@mametter)です。RubyKaigi 2025 では、変なコードで競い合う TRICK 2025 を開催しました。あらためまして、たくさんの投稿をいただき、本当にありがとうございました。 いまさらですが、自分が書いたプログラムについて語りたくなったの…

Compose Multiplatform における iOS ネイティブ実装の取り組み

こんにちは。STORES でiOSエンジニアをしている榎本 (@enomotok_ )です。 STORES では、 KMP/CMP を用いて Android, iOS のマルチプラットフォームアプリ開発を行なっています。 *1 本記事では、Kotlin Multiplatform(KMP)と Compose Multiplatform (CMP) …

クエリを用いたプロダクトの値決めシミュレーション

こんにちは、STORES でデータアナリストをしているsueshigeです。 STORES では2025/3から従来のプロダクト単位の料金プランとは大きく異なる複数プロダクトをまとめた新料金プランの提供を開始しました。 料金プランを決定するにあたり月額料金と決済手数料…

意外と知らないホームアプリの作り方

夏のような日差しの日があったり、大雨の日があったり、忙しい天候ですね。子どもたちと昆虫採集に行く機会が増えてきたのですが、飛んでいる虫はなかなか捕まえられず、思い付きで虫取り網をDIYしました。アルミワイヤーで枠を作り、網部分は洗濯ネットをぬ…

プルリク数を増やすために考えたこと、やったこと、思ったこと。

開発速度を上げよう こんにちは、STORES 決済 Androidエンジニアのみっちゃんです。 2025年上期、STORES テクノロジー部門では、目標の一つに「開発速度向上」を掲げていました。 この方針を踏まえ、個人としてどのような目標を立てるか考えた際、自分のプル…

決済アプリの SwiftUI 導入に伴う取り組み 〜 アーキテクチャ変更について 〜

はじめに @kotetu こと栗山です。今年の 4 月に STORES に入社しました。今回が、入社して初めての担当記事となります。 今回は、筆者が開発を担当している STORES 決済 の iOS アプリ (以後、 "決済アプリ" と記載) の開発チームで現在進行形で実施している…

`Ractor::Port` ― Ractor の API を一新した話

本稿では、Ruby で並列処理を手軽に実現するための機構 Ractor の API について、以前から気になっていた部分を最近になって一新し、`Ractor::Port` というものを導入したので、その内容をご紹介します。

生成AI×社会課題 Tech Conferenceに協賛します

STORES は6月21日(土)に開催される 生成AI×社会課題 Tech Conference に協賛します! wake-career-socialai-hackathon-2025.studio.site スポンサーブース 当日は STORES のスポンサーブースを出展します。 ブースでは、STORES を利用されているhanami sem…

たまにはTLVのLについて語る

はじめに はじめまして、こんにちは。STORES 決済 でAndroidエンジニアをしている n-seki です。 というわけでAndroidの技術記事……を書こうと思ったのですが、決済に携わっているエンジニアとして、たまにはTLVについて書いてみようと思います。 TLVとはなに…

WWDC25に参加してきました!〜現地参加編〜

こんにちは! STORES レジ・STORES 予約 の開発をしている iOS / Android エンジニアの @satoryo056 です。 なんとこの度 WWDC に当選しまして、約1週間アメリカに出張してきました! 本記事では、WWDC25 に参加してきた様子を現地の写真を添えながら振り返…

iOS アプリからローカルサーバーへ接続する道のり

STORES ブランドアプリの iOS アプリ側を開発している Megabits です。 STORES ブランドアプリはアプリとサーバーの連動で成り立っています。なので、アプリを開発するとき、サーバーへ接続してデバッグすることがほどんどです。逆に、バックエンドを開発す…