STORES Product Blog

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

「Ruby on Rails の楽しみ方」への高橋会長のレビューコメント

STORES エンジニアの morihirok です。 先日サポーターズさん主催の勉強会「技育CAMPアカデミア」にて、学生の皆様に向けてSTORES社が講義をさせていただきました。 テーマは「『なぜ今 Rails を学ぶべきなのか』Ruby on Rails から学ぶ Web アプリケーショ…

関西Ruby会議08 参加レポート

こんにちは、Webエンジニアのima1zumiです。2025年6月28日に開催された関西Ruby会議08に参加しました。この記事では参加レポートと、参加したメンバーからの感想をお届けします。 関西Ruby会議は、関西で定期的に開催されているプログラミング言語Rubyに関す…

STORES 予約の契約管理をZuoraに移行しました

はじめに こんにちは。 STORES でエンジニアをやっている asibi3Q です。 週末は山に登って下界から離れる生活を送っています。 今回は去年1年を通して、STORES 予約の契約管理をサブスクリプション管理 SaaS である Zuora に移行した話について書きます。 …

新規のRailsアプリケーションにPitchforkを導入しました

こんにちは、エンジニアのima1zumiです。私たちのチームでは、STORES の新規プロダクト開発においてRackアプリケーションサーバとしてPitchforkを選定しました。本記事では、その選定背景、具体的な設定内容や運用上の知見をまとめてご紹介します。 なお、本…

BigQuery→Slack通知をテンプレート化してみた

こんにちは、データ本部のssxotaです。STORESでデータ基盤の保守開発を担当しています。 今回は、BigQueryから集計したデータをSlackで通知する仕組みをテンプレート化し、通知内容の追加や更新を容易にできるようにしたので紹介します。 これまで、BigQuery…

新卒1年目の振り返り

新卒2年目のエンジニアのmaseです。 1年目が終わり気づけば3ヶ月経ってしまいましたが、新卒1年目でやったことを振り返っていこうと思います! 私は、内定者アルバイトで入社してから2024年12月まで STORES 予約 のチーム配属で開発を行い、2025年1月からは…

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

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

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しました。アルミワイヤーで枠を作り、網部分は洗濯ネットをぬ…