STORES Product Blog
https://product.st.inc/
こだわりを持ったお商売を支える「STORES」のテクノロジー部門のメンバーによるブログです。
フィード

214ファイル、13,500行のHamlをERBに移行しReActionViewを採用
STORES Product Blog
こんにちは。Webエンジニアのotariidaeです。 STORES の一部システムでReActionViewをレンダリングエンジンに採用しました。この記事ではその導入の経緯と過程をご紹介します。 RubyKaigi 2026会場で導入を決意 ReActionViewはActionView互換のERBエンジンです。Herbツールチェーンを基盤としているため、HTMLとERBの構造を統一的に解析できるのが特長です。 最初にReActionViewを知ったのは昨年のKaigi on Rails 2025でした。作者のMarco氏のトークを聞いて強く惹かれたものの、当時はリリース直後の新しいツールで…
3日前

Herb LinterのカスタムルールでERBのよくあるミスを防ごう
STORES Product Blog
こんにちは。Webエンジニアのotariidaeです。 ERBの静的解析、していますか? Ruby on Railsを採用したシステムでも、最近ではフロントエンドはReactなどのUIライブラリで書くことが多くなりましたが、Railsの標準であるERBも引き続き使われています。 AIがソフトウェアの実装者になった現代において、アンチパターンや見落としやすい問題を弾く仕組みはますます重要です。そこで便利なのがHerb Linterです。 Herb Linterとは Herb Linterは、ERBツールチェイン Herbで構築された静的解析ツールです。先日のRubyKaigi 2026で作者のM…
4日前

Spinel で Optcarrot が動いた(暫定)
STORES Product Blog
こんにちは、フルタイムで Ruby の開発をしている遠藤(@mametter)です。 Spinel で Optcarrot を走らせることができた!?ので、その結果をご報告します。 Spinel とは 先日の RubyKaigi 2026 では、Ruby の AOT コンパイラである Spinel が発表されました。 Spinel は抽象解釈に基づいて Ruby コードの型を推定し、それに最適化した表現で Ruby コードを C 言語コードに変換します。 Matz 自ら作っていること、全面的に AI に作らせていることなどが話題です。 Spinel は TypeProf に着想を得て作られてい…
14日前

RubyKaigi 2026 に総勢35名で参加しました!みんなで書く感想レポート
STORES Product Blog
こんにちは、ima1zumiです。RubyKaigi 2026 お疲れさまでした!函館の海鮮が恋しい日々を送っています。 STORES はNursery Sponsorとして、託児所の企画・運営をしました。また、会期中にRubyKaigi 2026 STORES Quizを出題したり、STORES CAFE for WomenとSTORES CAFE at RubyKaigi 2026を開催したりと、盛りだくさんな3日間でした。エンジニア30名、PX4名、内定者1名の総勢35名で参加しました! このブログではRubyKaigi 2026に参加したメンバーから印象に残ったセッション、出来事につい…
20日前

RubyKaigi 2026 STORES Quiz 全問ネタバレ解説
STORES Product Blog
こんにちは。遠藤 (@mametter) です。 STORES は Nursery and Scholarship Sponsor として RubyKaigi 2026 に協賛していましたが、さらに "Ruby One-Liner Challenge" というゲームを公開しました。 会場で QR コード付きのカードを配布する形でこのゲームを配っていました。 受け取っていただいた方、遊んでいただいた方、ありがとうございました。 フレーズをドラッグ&ドロップで並べ替え、指定された出力を出す Ruby ワンライナーを組み立てるパズルです。 ブラウザ上で ruby.wasm が動いていて、実際に ev…
21日前

try! Swift Tokyo 2026に参加しました
STORES Product Blog
はじめに STORES 決済の iOS アプリ開発を担当している栗山(@kotetu)です。 try! Swift Tokyo 2026 が終了して 1 週間以上が経過しましたが、 3 日間お疲れ様でした!フル参加した自分にとっては今回も非常に濃い時間を過ごすことができました。 本日は、「STORES メンバーから見た try! Swift Tokyo 2026」というテーマで try! Swift Tokyo 2026 を振り返りました。 try! Swift Tokyo について try! Swift Tokyo は、Swift を利用する開発者向けの国際的なカンファレンスです。 Swif…
1ヶ月前

AI エージェント kuro の裏側
STORES Product Blog
こんにちは。技術推進本部の @shia です。前回は kuro の活動事例を紹介しましたので、今回はその裏側を解説していきます。 なぜ自作したのか 前回の記事を読んで「既存の SaaS やマネージドなエージェントサービスを使えばいいのでは?」と思った方もいるかもしれません。一応、いくつかの理由から自作という判断に至っています。 まず、開発着手した 2 月時点では利用できるサービスの選択肢がそもそも多くありませんでした。使えると考えたのは Devin くらいで、実際使ってもいましたが、 GitHub 上のやり取りに制約があったり、開発環境の都合などで当時はやや物足りなさを覚えてました。 次に汎用…
2ヶ月前

STORES Tech Conf 2026 “World 2” を2026年8月31日(月)に開催&学生向け参加支援をします
STORES Product Blog
こんにちは、技術広報のえんじぇるです。 2024年、2025年に引き続き STORES Tech Conf を今年も開催することになりました! 開催日時:2026年8月31日(月)13:00開始 開催場所:浅草橋ヒューリックホール&カンファレンス 参加費用:無料 参加申込みフォーム:https://forms.gle/ijyynGHpKmWuXo2z9 今年のテーマは“World 2”です。テーマについては、後述します。 前回の開催について STORES Tech Conf 2025 では、“What Would You Do?” をテーマに開催しました。オープン枠(学生・女性向け)を設けて、…
2ヶ月前

AI エージェント kuro が入社しました
STORES Product Blog
こんにちは。技術推進本部の shia です。最近はエーアイというやつと向き合っておりまして、その話の一つとして2月入社した新入 AI 社員の話をします。 AI エージェント とは、LLM(大規模言語モデル)に自律的に行動させる仕組みのことで、指示を受けたら自分でツールを使ったり判断したりしながらタスクをこなしてくれるものです。 この話は二つの記事で構成される予定で、今回は活動事例、次回はその裏側を紹介していきます。 社員紹介 kuro は 2026年2月入社しており、Slack と GitHub で活動しながら、我々の事業推進を多岐にわたる方法で手伝ってくれています。 わかりやすいので Git…
2ヶ月前

RubyKaigi 2026にSTORESから5名が発表、STORES Quiz でアクキーをプレゼントします
STORES Product Blog
こんにちは、STORES のえんじぇるです。 今年も STORES は RubyKaigi 2026 にNursery Sponsor および Scholarship Sponsor として協賛します! Nursery Sponsor は2024年から3年連続で、今年も小さなRubyistのみなさんに会えるのが楽しみです! Scholarship Sponsor として記載されているのは今年が初ですが、昨年度も学生支援を実施していました。 先日下見に行ったので、写真をまじえながら、STORES のRubyKaigi 2026への関わり方を紹介します。 函館空港でお出迎えしてくれたクマ🐻 登壇 …
2ヶ月前

Girls AI Scholarship by STORES 第3期生を募集します!
STORES Product Blog
プログラミング学習をたのしみながら続けるための支援として、AI活用によるプログラミング学習継続支援 Girls AI Scholarship by STORES の第3期生を募集します! STORES は、「2030年までに、エンジニア職における女性採用比率を30%以上にする」を目標に掲げ、これまでもSTORES Tech Girls Camp、Rails Girls Japanの協賛などテクノロジーのたのしさに「出会う」プログラムと、テックカンファレンスでの託児サポートや女性エンジニア向けランチ会など仲間と共に学びを「深める」ための活動をしてきました。 Girls AI Scholarshi…
3ヶ月前

WebMockでヘッダーにRSpecマッチャーは効かない
STORES Product Blog
こんにちは。Webエンジニアをしているotariidaeです。 「ひとつのSTORES」としてプロダクトの統合を進めてきた結果、システム間通信の実装が増えています。多くのシステムをRuby on Railsで構築している STORES では、こうした機能をテストする際、外部リクエストの扱いとしてWebMockやRSpecのテストダブルが主な選択肢となります。STORES では可能な限り実際の挙動に近い形で検証したいというスタンスから、原則としてWebMockを採用しています。 STORES はWebMock多用企業です。 RSpecのマッチャーが効く WebMockの .with ではRSpe…
3ヶ月前

STORES から1名が福岡Rubyist会議05で登壇&スポンサーとして協賛します
STORES Product Blog
こんにちは、技術広報のえんじぇるです。 STORES は、2026年2月28日に福岡で開催される福岡Rubyist会議05にスポンサーとして協賛します! この記事では、当日登壇するメンバーとブースについて紹介します。 登壇者の紹介 STORES からは、公募セッションとスポンサーセッションの2つの枠でメンバーが登壇します! セッション登壇 スピーカー: Shia 時間: 11:10-11:25 タイトル: 型を書かないRuby開発への挑戦 「型を書かなくても十分有用な型情報を得られる」を目標に開発中の LSP「type-guessr」について話します。 完全さを諦めることでいい感じの体験を目指…
3ヶ月前

計82登壇!2025年下半期 STORES エンジニアの登壇まとめ
STORES Product Blog
こんにちは、技術広報のえんじぇるです。 STORES では、登壇塾という登壇支援のワーキンググループがあり、エンジニアのみんなが社外で発信することを奨励しています。 2025年下期は27のカンファレンス・学会・イベントに82登壇しました!複数回登壇しているメンバーもいるのですが、ユニークで49名が登壇しました!各登壇の詳細をご紹介します。 7/8 第11回中部Tableauユーザー会 7/11 SRE NEXT 2025 7/13 CoLab Conf 2025 夏 7/30 技育CAMPアカデミア『Kotlin Multiplatform / Compose Multiplatform を活…
4ヶ月前

STORES はRubyKaigi 2026に参加したい学生さんを支援します
STORES Product Blog
こんにちは、技術広報のえんじぇるです。 4月22日(水)〜24日(金)にRubyKaigi 2026が北海道函館市で開催されます。 STORES では、RubyKaigi 2026に参加したい学生さんを支援させていただくことにしました!2025年に引き続き2度目です。 このブログでは、支援の概要と応募方法について案内します。 RubyKaigi とは RubyKaigiは、プログラミング言語 Ruby に関する世界最大級の国際カンファレンスです。Rubyの生みの親であるまつもとゆきひろさんをはじめ、世界中のRuby開発者、Rubyを利用しているエンジニアが集まります。 rubykaigi.or…
4ヶ月前

STORES 予約 i18n 翻訳対応 powered by GitHub Copilot
STORES Product Blog
はじめに こんにちは、 STORES でエンジニアをやっている yuta07 です。 すでに1年のうち12分の1が終わりそうなことに絶望を感じています。 今回は UX 改善の一環として、 STORES 予約で長らく放置してしまっていた i18n 対応の翻訳作業を GitHub Copilot を用いて対応したことについて書いています。 背景 STORES 予約の管理画面では、以前より i18n 対応を進めていました。 日本語以外に英語での利用も可能にはしていましたが、歴史的な経緯もあり、i18n 対応が十分とは言えない状態が続いていました。 *1 その結果、言語設定を外国語に切り替えても、多く…
4ヶ月前

fastlane match リポジトリを開発者証明書ダッシュボードに変える
STORES Product Blog
fastlane match リポジトリを 開発者証明書ダッシュボードに 変える STORES ブランドアプリチームで iOS エンジニアをしている榎本 ( @enomot_ ) です。 以前、「fastlane match の内部実装を活用して複数の iOS 開発者証明書の期限を一括チェックする方法」という記事で、暗号化された証明書ファイルから有効期限を取得する方法を紹介しました。この方法により、fastlane match で管理している証明書の期限をプログラムで確認できるようになりました。 product.st.inc 本記事では、前回紹介した証明書の期限取得の仕組みを発展させ、 fas…
4ヶ月前

App Links / Universal LinksにWeb対応してモバイル端末でネイティブアプリを開く
STORES Product Blog
こんにちは。STORES でWebエンジニアをしていますosdです。 今回はHTTP URLを介してユーザーにネイティブアプリを起動させる仕組みについて実装をしたので、仕様を交えつつWebサーバーとして配布する項目を中心に解説します。 App Links / Universal Links とは WebのURL エンドポイントを用いてシームレスにネイティブアプリを起動する仕組みです。 従来のディープリンクと呼ばれる技術は存在しましたが、以下の点で App Links / Universal Linksに優位性があります。 シームレスなアプリ起動が可能。(起動確認ダイアログなどのユーザーアクショ…
5ヶ月前

外部連携をイミュータブルに設計する:状態を持たず、事実を残す
STORES Product Blog
はじめに こんにちは。STORES でエンジニアをしているmochizukiです。 Webアプリケーションの開発では、外部システムと連携した機能を実装することがあると思います。 例えばAPIで外部システムのリソースを取得したり、Webhookで通知を受け取ったりして、業務ロジックに組み込むようなケースです。 このような開発を行う上で、「取得した情報をどう扱うか」は重要な論点の一つです。 少し分解すると、「取得した情報をこちらのシステムでも保持するのか」「保持するならどのような形で持つのか」といったことを考える必要があります。 私は今回、外部リソースの"状態"を「上書きして持つ」のではなく、受け…
5ヶ月前

プロと読み解くRuby 4.0 NEWS
STORES Product Blog
プロと読み解くRuby 4.0 NEWS テクノロジー部門技術推進グループの笹田(ko1)と遠藤(mame)です。Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 本日 12/25 に、恒例のクリスマスリリースとして、Ruby 4.0.0 がリリースされました(Ruby 4.0.0 リリース | Ruby)。今年も STORES Product Blog にて Ruby 4.0 の NEWS.md ファイルの解説をします(ちなみに、STORES…
5ヶ月前

Ruby::Box ダイジェスト紹介(Ruby 4.0.0 新機能)
STORES Product Blog
こんにちは、遠藤(@mametter)です。 Ruby 4.0.0 では Ruby::Box が導入されました([Feature #21311])。 Ruby::Box は導入提案時には Namespace と呼ばれていたもので、Matz が「Namespace か ZJIT が入れば次のリリースを Ruby 4.0.0 とする」と RubyKaigi などで宣言していたくらい、肝いりの機能です。 ということで「なにやらすごい機能」という雰囲気だけは知っている人もいるかもしれませんが、実際のところ何ができるか、現状はどうか、は知らない人がほとんどだと思います。 そこで、遠藤が Ruby::Bo…
5ヶ月前

Ruby on Rails と Spring に実務で携わっての開発体験の比較
STORES Product Blog
Ruby on Rails と Spring に実務で携わっての開発体験の比較 RailsエンジニアとしてWebアプリケーション開発を続けてきた自分が、 はじめて本格的に Springのプロダクトに参加しました。 この記事では Rails, Spring のフレームワークの解説はせず、 Rails と Springをどちらも実務で使ったうえで、「結果的にコードを書くうえでどんな快適さを感じたか?」を比較します。 言語やフレームワークの思想批評ではなく、開発体験の個人的な実感として読んで頂けますとありがたいです。 Rails の開発体験 1. rails console による動かしながら理解で…
5ヶ月前

DroidKaigi 2025に登壇しました!振り返り!!
STORES Product Blog
こんにちは、STORES 決済のAndroidアプリを開発しているchukaです。 12月ももう残りわずかですね…! 今回は、今年あった個人的最大の出来事、DroidKaigi 2025登壇について振り返っていきたいと思います! はじめに 私はDroidKaigi 2025で「はじめてのMaterial3 Expressive」というセッションで登壇させていただきました。 本記事では、CfSを考える上で大変だったこと、資料を作る上で大変だったことについて述べます。 DroidKaigi 2025までのタイムライン CfS募集〜DroidKaigi 2025当日までのタイムラインは以下のようにな…
5ヶ月前

複数端末間でのリアルタイム・ステータス同期の機能開発
STORES Product Blog
メリークリスマス!Android エンジニアの naberyo(@error96num)です。 この記事は STORES Advent Calendar 2025 の 24 日目の記事です。 私が現在開発に携わっている STORES モバイルオーダー では、この1年間で多くの機能をリリースしてきました。イートイン対応をはじめとした大規模な機能拡張により、さまざまな飲食店でご利用いただけるサービスになっています。 このアップデートについては次の記事で触れられています。 product.st.inc 機能アップデートの過程で、私たちは技術的課題を一つ一つ解決してきました。今回の記事では、その中の一…
5ヶ月前

育休中の過ごし方と、育休前後の働き方の変化について
STORES Product Blog
はじめに こんにちは。STORES でBPRアーキテクチャグループでエンジニアをしているみなみ(nannany)です。 2025年4月に第一子が産まれました。そのため、今年4月から育児休暇を取得し、2025年10月に復帰しました。つまり、育休を6ヶ月いただきました。 育休、育休後の働き方について、エンジニア職をしている方にとって気になることはなんでしょうか? 育休中に技術をキャッチアップする時間は取れるのか? 復帰後の働き方はどうなるのか? などがあると思います。その心配に対して、答えを出すことはできませんが、N=1の体験談を記せたらと思い記事を執筆しています。 エクスキューズとして、私自身ま…
5ヶ月前

STORES Tech Conf 2025 参加レポートまとめ
STORES Product Blog
こんにちは、技術広報のえんじぇるです。 2025年11月26日にSTORES Tech Conf 2025 “What Would You Do?” を開催しました! STORES Tech Conf 2025 “What Would You Do?” 開催レポート - STORES Product Blog 今回のSTORES Tech Confでは、学生のみなさんが参加しやすいように学生向け参加支援を実施しました。 STORES Tech Conf 2025 “What Would You Do?” を2025年11月26日(水)に開催&学生向け参加支援をします - STORES Prod…
5ヶ月前

SFA環境を1つのSalesforceに統合する際のデータ移行時に考慮したこと
STORES Product Blog
はじめに こんにちは、データ本部でデータエンジニアをやっている@takaHALです。 STORES では2025年8月、これまで2つ存在していたSalesforce組織と7個のkintoneアプリを、1つのSalesforce組織に統合しました。 今回は、この組織統合プロジェクトにおいて発生した データ移行 に関する技術的な考慮事項やハマりポイントを紹介します。 移行方法について 今回の移行対象となるオブジェクトは以下の通りです。 Account Campaign CampaignMember Case Contact EmailMessage Event Lead Opportunity O…
5ヶ月前

STORESにおけるTROCCOの導入と活用事例
STORES Product Blog
こんにちは、データ本部のssxotaです。STORES でデータエンジニアをやっています。 STORES のデータ基盤では、2025年7月からデータ転送ツールである TROCCO を導入しました。 今回のブログでは、TROCCO導入の背景、ツール選定の理由、活用事例について紹介します。 なぜTROCCOを導入したのか? SaaS間のデータ連携におけるデータエンジニアの工数削減 これまでは、各SaaS間のデータ連携について、SaaS側で提供されているAPIに対してPythonやRubyでスクリプトを実装し、ワークフローエンジンとして採用しているArgo Workflows上にポーティングして実行…
5ヶ月前

iOS 26 で SwiftUI の ナビゲーションが壊れた - 非推奨 API が抱えていたリスク -
STORES Product Blog
はじめに こんにちは、@marcy731 です。 STORES レジ のモバイルチームのマネージャー兼iOSエンジニアをしています。 この記事は STORES Advent Calendar 2025 の 19 日目の記事です。 stores.fun STORES レジ は、2019/9/11 にファーストコミットされ、 2021/06/15 に正式リリースされた iPad 向け POS レジアプリです。 www.st.inc 実装初期から フル SwiftUI で開発されており、当時としてはかなり挑戦的な技術選択でした。 2019 年当時の SwiftUI は、まだ登場したばかりで、 API…
5ヶ月前

モバイルアプリのリリースから振り返る STORES 決済 の 2025年
STORES Product Blog
今年も気づけば師走っ!! こちらは STORES Advent Calendar 2025 の記事です。(何日目の記事なのかな?) product.st.inc 毎年恒例です 毎年師走に STORES 決済 のモバイルアプリのリリースを振り返っています。 product.st.inc product.st.inc product.st.inc なので師走になったからには、今年も元気に振り返りますよ!! ということで、おはようございます! STORES 決済 モバイルチームの Engineering Manager、 iOS アプリ・SDKの開発を担当しております。いわいです。 ※昨年同様 ST…
5ヶ月前