サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2025年ランキング
product.st.inc
こんにちは、遠藤(@mametter)です。 Ruby 4.0.0 では Ruby::Box が導入されました([Feature #21311])。 Ruby::Box は導入提案時には Namespace と呼ばれていたもので、Matz が「Namespace か ZJIT が入れば次のリリースを Ruby 4.0.0 とする」と RubyKaigi などで宣言していたくらい、肝いりの機能です。 ということで「なにやらすごい機能」という雰囲気だけは知っている人もいるかもしれませんが、実際のところ何ができるか、現状はどうか、は知らない人がほとんどだと思います。 そこで、遠藤が Ruby::Box について知っていることを、少ししっかり解説してみます。Ruby::Box で遊ぶ人の手助けになれば幸いです。 なお、Ruby::Box の設計・実装者は tagomoris さんで、遠藤は基本的に
プロと読み解く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 Advent Calendar 2025 の記事になります。他も読んでね)。NEWS ファイルとは何か、は以前の記事を見てください。 プロと読み解く Ruby 2.6 NEWS ファイル - クック
こんにちは、技術推進本部のシムです。 今回は最近実施したセッションストアのValkey Serverless移行について、なぜ移行を決めたのか、実際の移行プロセスや成果、運用で得られた知見を紹介します。 ここでのセッションストアとは STORES ネットショップの本体は Rails で動いており、該当アプリケーションのセッションストアを指します。 元々は MemoryDB (with Redis OSS) をストレージとして利用しており、該当クラスタにはセッションに関係するデータも一部追加で保存されておりました。 なぜ Valkey Serverlessに移行したのか? ここには Serverless の採用と Valkey の採用という二つの話があるので分けて話していきます。 Serverless の採用 ElastiCache Serverless は従来の ElastiCacheとは
おはようございます。セキュリティ本部セキュリティエンジニアの soh です。 当社セキュリティ本部では、プロダクトセキュリティとコーポレートセキュリティを分けることなく、他部署の協力を得ながら各種対応を行っています。 さて、一口に「セキュリティエンジニア」といっても、担当する責任範囲は各社さまざまだと思います。 当社でも積極的に採用を進めていますが、面談や面接の際には「どこまで担当できるのか」「求められることは何か」が気になる方が多いのではないでしょうか。 そこで本記事では、当社におけるセキュリティエンジニアの取り組みや、私がセキュリティベンダーから転職した際に感じたギャップなどを紹介します。 当社の現状 2025年現在、セキュリティ本部は少人数のメンバーおよびマネージャー(うち兼務1名)で構成され、技術推進本部やIT本部など近い部署と連携しながら活動しています。担当範囲は前述のとおり、プ
この記事は STORES Advent Calendar 2025 の 19 日目の記事です。 はじめに こんにちは、 id:sushichan044 です。 この記事では、直近で取り組んだ Next.js 製アプリケーションのビルドの高速化を振り返ります。 対象となったのは STORES 予約を利用する事業者向けのアプリケーションで、2021 年 2 月から開発されています。 stores.fun $ git log --all --reverse commit <Hidden> Author: <Hidden> Date: Thu Feb 25 16:37:51 2021 +0900 Initial commit from Create Next App 前提 今回扱うアプリケーションは、以下のような構成になっています。 Node.js v22.18.0 next@14.2.35 Pa
この記事はSTORES Advent Calendar 2025の9日目の記事です。 こんにちは。Webエンジニアをしているotariidaeです。呪術廻戦は未履修です。 個人的にgitコマンドの代わりにJujutsu(jjコマンド)を使い始めてから1ヶ月ほどが経ちました。 この記事では実際に業務で毎日使ってみてどうだったかをふりかえってみようと思います。 Jujutsuとは Jujutsuは比較的新しいバージョン管理システムです。Gitをバックエンドとして利用できるため、既存のGitリポジトリで自分だけしれっと使い始められます。 # 既存リポジトリで使い始めるにはこのコマンド打つだけ jj git init 典型的なワークフローは次の公式ドキュメントに記載されています。 Working with GitHub - Jujutsu docs Gitとの違いとして最初に気づくのは、ステージン
こんにちは、STORES で VPoE をしている id:hogelog です。 本日はプログラミングそのものが好きな学生の皆さんに向けて、特別なインターンシップの募集をお知らせします。Railsプロダクトを一緒に開発するのでもなく、講義的なワークショップをやるのでもなく、Ruby言語をRubyコミッターと一緒に開発する「Ruby開発インターンシップ」です。 hrmos.co なぜ「Ruby開発インターンシップ」の開発なのか? 私たち STORES は「Just for Fun」をミッションに、まちのお店のデジタル化を支援する会社として多くのプロダクトを作ってきました。EC、POSレジ、予約システム、モバイルオーダーなど、さまざまな STORES のソフトウェアを支えているのがRubyという言語です。STORES 以外の世の中の非常に多くのサービスもRubyで構築されています。 でも、その
STORES 技術推進本部の@White-Greenです。 この記事では、技術推進本部で管理しているGitHub Actions Self-hosted runnerシステムについて紹介します。 GitHub Actions Self-hosted runnerとは STORESでは、多くのプロジェクトのCI/CD環境にGitHub Actionsを利用しています。GitHub Actionsは通常GitHubが管理しているMicrosoft Azure上のマシンで動作するものですが、自分たちで管理している好きなマシン上で動作させることもできます。これをSelf-hosted runnerといいます。詳細はGitHubのドキュメントをご参照ください。 https://docs.github.com/ja/actions/concepts/runners/self-hosted-runner
STORES のykpythemindです。今回はSTORES 内で強化しているデザインエンジニアリングの領域についてお伝えできたらと思います。 今までのSTORES はどうやってUIを作ってきたか まずは我々のプロダクトと、ここまで歩んできた道のりについて説明します。 STORES は中堅・中小規模の店舗を運営する方々にむけて、ネットショップ開設・POSレジ・キャッシュレス決済・オンライン予約システム・アプリ作成など、お店のデジタル化を総合的に支援するサービスを展開しています。 今回のUIの領域としては、店鋪を運営する方々(事業者様)が日々使う画面にフォーカスしてお話しようと思います。 1 我々の組織のユニークなところとして、今まで数回の経営統合を経て、複数プロダクトを持つ会社として成長してきたという点です。価値観や開発プロセスが異なるチームが、それぞれのチームの中でUIの開発を行ってき
こんにちは、STORES 技術推進本部のid:atponsです。普段はSTORESの技術的な課題の解決や改善、パブリッククラウドの運用などを担当しています。 今回は、開発者体験を損なっていたプライベートパッケージレジストリのトークンの運用を見直し、セキュアで簡単な認証の仕組みをリバースプロキシの自作で実現した話を紹介します。 STORESの開発とパッケージ管理の背景 STORESでは、複数のプロダクトを開発・提供しています。多くのプロダクトで共通して利用したいコードは、再利用可能なコンポーネントとしてGemやnpmパッケージにし、社内で共有することで開発効率を高めています。 これらのプライベートなパッケージは、「パッケージレジストリ」と呼ばれるサーバーで管理する必要があり、STORESでは当初GitHub Packagesを利用していました。 これまでのトークンの取扱いの課題 GitHub
こんにちは。ruby-devチームの遠藤(@mametter)です。 次期バージョンのRubyでは、pathnameがRuby本体組み込みとなり、require "pathname"なしで利用可能になる予定です。 Rubyで書き捨てスクリプトを書いてる自分のような人は地味にうれしいかもしれません。 Feature #17473: Make Pathname to embedded class of Ruby - Ruby - Ruby Issue Tracking System さて、pathnameの組み込みがマージされた直後、非常に興味深いバグが発生しました。 今回はそのデバッグの経緯を技術ブログとして共有したいと思います。 問題の発生:特定環境でのみ失敗するテスト コミッタのhsbtさんがpathnameの組み込み化をマージした後、なぜかRubyのCIの一部が落ちるようになりました。
STORES エンジニアの morihirok です。 先日サポーターズさん主催の勉強会「技育CAMPアカデミア」にて、学生の皆様に向けてSTORES社が講義をさせていただきました。 テーマは「『なぜ今 Rails を学ぶべきなのか』Ruby on Rails から学ぶ Web アプリケーション開発実践」ということで Ruby と Ruby on Rails についていろいろな切り口からお話をさせていただきまして、私も「Ruby on Rails の楽しみ方」と題して Ruby on Rails がWebアプリケーション開発の歴史においてどのような意味を持ち、どのように学び、楽しむとよいかという話をさせていただきました。 speakerdeck.com この話をするにあたり2000年代のWebアプリケーション開発について言及したかったのですが、自分自身当時まだWebアプリケーションエンジニ
こんにちは、Webエンジニアのima1zumiです。2025年6月28日に開催された関西Ruby会議08に参加しました。この記事では参加レポートと、参加したメンバーからの感想をお届けします。 関西Ruby会議は、関西で定期的に開催されているプログラミング言語Rubyに関する技術カンファレンスです。今年で8回目で、京都府京都市の先斗町歌舞練場という会場で開催されました。風情ある素敵な会場でした! 会場前にずらりと並べられたスポンサーののぼり 普段は鴨川をどりの会場ですが、今日は関西Ruby会議の会場。 2階には桟敷席もありました 以下は参加したメンバーの感想です。 感想 ima1zumi 印象に残ったセッション: pockeさんのキーノートに元気をもらいました。課題発見と丁寧な解決、そしてメモリプロファイラを自分で作ってしまう腕力に痺れました。 影山勝彦さんの発表で、普段知らないロボット制御
こんにちは、エンジニアのima1zumiです。私たちのチームでは、STORES の新規プロダクト開発においてRackアプリケーションサーバとしてPitchforkを選定しました。本記事では、その選定背景、具体的な設定内容や運用上の知見をまとめてご紹介します。 なお、本記事執筆時点ではPitchforkの大きな特徴であるrefork機能は導入していません。 Pitchfork選定の背景と理由 Pitchforkとは Pitchforkは、Shopifyが開発・メンテナンスを行っているRackアプリケーション用のHTTPサーバです。広く利用されているUnicornをベースとしたフォークであり、prefork型のプロセスモデルを採用しています。 最大の特徴は、メモリ使用量を効率化するための refork 機能です。この機能により、ワーカープロセスを定期的に再生成し、Copy on Write(C
はじめに \コンニチハ/ STORES株式会社でアナリティクスエンジニアをやっているk-0120です。突然ですが、BIツールって何を使われてますか?STORES では現在 Metabase という BIツールを利用しています。GUIによるクエリ生成や各種ビジュアライゼーションなど、所謂BIツールに必要な機能は網羅されているのですが、非エンジニアが自走して使うには JOIN や GROUP BY の概念を理解する必要があり、ややハードルが高いという印象があります。 そこで、より直感的にデータを扱え、dbtとの親和性も高いLightdashというBIツールに注目し、まずは検証環境を構築してみることにしました。 Lightdash にはクラウド版とOSS版がありますが、2025年6月時点ではクラウド版に無料プランはありません。(https://www.lightdash.com/pricing)
STORES でエンジニアをしている片桐です。 STORES では店舗運営に関するさまざまなプロダクトを提供しています。これらのプロダクトは元々別の会社で運営されてきた完全に異なるプロダクト群で、アカウント体系から全く異なるシステムになっていました。近年はこれらのシステムを本格的に統合する取り組みを進めてきており、その中で統合のためにいくつかのシステムが新たに作成されてきました。 ある程度統合が進み、うまくいったところ・いかなかったところが見えてきた中で、これまでに作ったシステムの技術選定・システムの役割に対する課題感が見えてきました。 現在弊社ではこの課題を解決していくプロジェクトを進めています。その中の1つで、Goで作られたシステムをRuby on Railsで作られたシステムに移植する作業を行なっているので、今回はそれについて紹介させていただきます。 移植元のシステムの課題 今回別シ
こんにちは。セキュリティ本部のsohです。 近年、多くの企業でAIサービスの導入が急速に進んでいるかと思いますが、STORES でも様々なツールの活用を推進しています。 しかし、その一方で、セキュリティやコンプライアンスの観点から、導入には慎重な検討が求められます。 本記事では、AIサービス(特にコーディングに関わるサービス/ツール)の導入を担当する方が、まず基本的な事項としてどのような観点をチェックすべきか、そのポイントを私自身の経験も踏まえながら整理してみたいと思います。 なお、当記事は先日当社でオンライン開催した「Cursor 使ってますか?STORES での活用事例」における「AIコーディングツール導入時に担当者がチェックすべきポイント」をベースとしています なぜAIツールを推進するのか 本題に入る前に、私たちがなぜAIツールの利用を推進しているのかについて記載します。 STORE
こんにちは、遠藤(@mametter)です。RubyKaigi 2025 では、変なコードで競い合う TRICK 2025 を開催しました。あらためまして、たくさんの投稿をいただき、本当にありがとうございました。 いまさらですが、自分が書いたプログラムについて語りたくなったので語ります。 Most Useful github.com 概要 patch と diff をテーマとして、とにかくたくさんの要素を詰め込んだプログラムです。 patch コマンドとして動く そのまま patch ファイルとしても解釈できる 自分自身へのパッチを出力し、中心にある "p" のロゴを徐々に半回転して "d" にする 最終的には diff コマンドとして動く その間のパッチの連続を git log したら Quine になっている Most Useful: 回るロゴ 挙動について詳しくは、TRICK 202
はじめに @kotetu こと栗山です。今年の 4 月に STORES に入社しました。今回が、入社して初めての担当記事となります。 今回は、筆者が開発を担当している STORES 決済 の iOS アプリ (以後、 "決済アプリ" と記載) の開発チームで現在進行形で実施している取り組みについて、筆者が対応したとある案件で実際に経験したことや入社 2 ヶ月半の立場からの所感をベースに紹介します。 とある画面のアーキテクチャ変更対応 決済アプリでは、2025 年から SwiftUI の導入を徐々に進めており、一部画面については画面実装が SwiftUI ベースとなっています。 SwiftUI 対応と併せて、SwiftUI の利用に適したアーキテクチャへの変更も順次行なっています。 先月、筆者はとある画面のアーキテクチャ変更を担当しました。単に案件をこなすだけでなく、既存アーキテクチャのキャ
テクノロジー部門技術推進本部の笹田です。最近、ある大学で Ruby インタプリタを作ってみよう、みたいな集中講義をさせていただいてるんですが、実装に使う言語がみんな Ruby じゃなくて面白かったです。 本稿では、Ruby で並列処理を手軽に実現するための機構 Ractor の API について、以前から気になっていた部分を最近になって一新し、Ractor::Port というものを導入したので、その内容をご紹介します。従来の API にはどうもしっくりこず、ずっと喉に骨がつっかえている感じがして、5年くらいずっと考えていたんですが、ようやっと決断しました。 提案した ticket: Feature #21262: Proposal: Ractor::Port - Ruby - Ruby Issue Tracking System 概要だけ説明しますと、次のような感じです。 なくなった Ra
もう夏なんですかねー。 夏大好きです。 こんにちは! STORES 決済 モバイルチームの Engineering Manager、 iOS アプリ・SDKの開発を担当しております。 いわいです。 なぜアプリ譲渡したのか STORES 株式会社は、 複数の事業会社が集まった会社です。 STORES 決済 iOS アプリは 元々は前身である コイニー株式会社が 運営していたので、 App Storeでも、 Coiney, inc. の Apple Developer Account からリリースされていましたが 2025年4月、ようやく アプリ譲渡をおこない STORES, inc. からリリースされている状態になりました。 譲渡前 譲渡後 旧 Coiney アカウント STORES, inc. アカウントへ譲渡 アプリ譲渡の準備 アプリ譲渡のやり方自体は、Appleの公式ドキュメント に書
Hello! STORESでレジアプリを開発している@AkkeyLabです! この記事は「STORES レジにおけるSwift6移行対応」の完結編です。前提となる方針などはこちらの記事をご覧ください。今回は、対応箇所が特に多かったモジュールにフォーカスし、チームで分担して対応する過程をご紹介します。Swift6対応がこれからの方はもちろん、すでに対応済みの方にとっても、中規模から大規模の技術刷新を行う際の参考になるはずです。 product.st.inc チームでタスクを分担 ワーニングの解析 テストコードのSwift6対応 最後の仕上げ さいごに チームでタスクを分担 並行で進む施策とのコンフリクトの懸念 実装キャッチアップの題材として丁度良い QAも段階的に実施したかった レジチームでは、上記のような背景から、Swift6対応をチームメンバーで分担して進めることにしました。チームメンバ
こんにちは!STORES ブランドアプリ のバックエンドエンジニアをしているotariidaeです。 最近 STORES ネットショップ にコントリビュートする機会があり、データベースとして採用されているMongoDBについて1つ学びを得たので記事にしたいと思います。 ユニークにしたい、でもnullの重複は許容したい 例えば users コレクションがあり、emailフィールドの値は一意にしたい、しかしnullの重複は許す、という要件を考えます。次のようなイメージです。 > db.users.find() [ { _id: ObjectId('682cb935c578d93e34a00aaa'), email: 'hoge@example.com' }, { _id: ObjectId('682cb935c578d93e34a00aab'), email: 'fuga@example.co
こんにちは、技術広報のえんじぇるです。STORES はRubyKaigi 2025でNursery Sponsorとして、託児所の企画運営をしました。Nursery Sponsorとして協賛するのはRubyKaigi 2024に続いて2回目です。 3日間で0才〜10才までの合計23名のお子さんをお預かりし、保護者の方がRubyKaigiに集中できる環境を提供しました。本記事では実際にどのように準備したのか、どんな様子だったのかをお伝えします。カンファレンスやイベントで託児所の設置を考えている方の参考になれば幸いです。 RubyKaigi 2024の実施記録は下記からご覧ください。 product.st.inc Nursery Sponsorを継続した理由 STORES は、多様な属性やライフスタイルを持つ人がエンジニアリングについて学べる・学びたいと思える社会に貢献することを目的として、2
こんにちは。yubrotです。STORESではWebを主戦場に色々見ていますが、今回はそれとはまったく関係ない話をします。 事の始まり: Notionに社内のナレッジを集約する という意思決定を組織として行いました。1 STORESには、既に別のナレッジデータベースにこれまでのドキュメントがたくさん蓄積されていましたので、それをNotionにまるっと移行する必要があります。また、ナレッジの集約を目的としているため、元のナレッジデータベースは移行後に閉じる想定をします。そのため、 すべてのドキュメントを、 できるだけ情報の損失や読みやすさの低下を避けつつ、 全 STORES 社員が利用者が混乱しない形で 移行しきることが求められます。 やり方: 移行にNotion APIをフル活用する 移行にNotion APIをフル活用することにしました。Notionの Web UI ではドキュメントのイ
スポンサーボードにみんなの名前を書きました こんにちは、ima1zumiです。RubyKaigi 2025 お疲れさまでした!みなさん、RubyKaigi 2025と松山は楽しんでいただけましたか?私はみなさんの感想ブログを読みながらRubyKaigiの余韻に浸る生活をしています。RubyKaigi 2025が終わらない。 STORES はNursery Sponsorとして、託児所の企画・運営をしました。また、会場ではブースを出したり、会期中にSTORES CAFE for WomenとSTORES CAFE at RubyKaigi 2025を開催したりと、盛りだくさんな3日間でした。 このブログではRubyKaigi 2025に参加したメンバーから印象に残ったセッション、出来事について聞きました。それぞれの視点のレポートをお楽しみください。 ima1zumi (Keynote spe
こんにちは、STORES の id:hogelog です。 この記事では、RubyKaigi 2025の STORES ブースで公開されたIRB宝探しゲーム、IRB TreasureHunt Gameの作りとどんなお宝が隠されていたのかのネタバレを解説していきます。 このゲームは @mame がベースのアイデアと土台の実装をおこない、その上で主に @hogelog、一部 @ima1zumi がお宝のアイデアを実装しました。 ゲームの概要 このゲームは https://ruby-quiz-2025.storesinc.tech/ というURLにアクセスすると始まる、kateinoigakukun/irb.wasm を利用した宝探しゲームです。 IRB宝探し画面 起動直後に出てくるイラストは人類が姿を消した後の世界でお宝を探す猫人間 (Nekomorph) です。この猫人間がお宝を探していると
こんにちは。本記事は ykpythemind、mame、 ko1 が共著しています。 今回は開発版のRuby(Ruby head)を用いてSTORESのRailsアプリケーションのCIを定期実行していることと、それによってRuby本体の開発にフィードバックをしていることについてお話します。 モチベーション STORES はRubyを用いて10年選手のRails製アプリケーションを複数開発・運用しており、事業の柱となる技術として大きく投資をしています。 具体的にはRubyのフルタイムコミッター2名がジョインしていたり、RubyKaigiを始めとする各カンファレンスへ協賛をしております。 product.st.inc product.st.inc product.st.inc Rubyをとりまく環境として非常に恵まれた会社であることは間違いないでしょう。その中で、普段からアプリケーションコード
STORES でソフトウェアエンジニアをやっております @morihirok です。タイトルの通り先日行われた東京Ruby会議12で登壇しました。 regional.rubykaigi.org 発表資料はこちらとなります。 speakerdeck.com STORES は Sliver Sponsors として協賛させていただきました。 会自体すごく大盛況で、前夜祭から懇親会まで含めてめちゃくちゃ楽しかったです!オーガナイザー、スタッフのみなさま、素晴らしい会を本当にありがとうございました! 今回「Regional.rb and the Tokyo Metropolis」というタイトルで東京圏の地域.rbオーガナイザーが集結するイベントがあり、印象に残っている方も多いんじゃないかなと思うのですが、それを見ながら自分の中で生まれていたストーリーがあるのでついでにその話だけさせてください。 東
次のページ
このページを最初にブックマークしてみませんか?
『STORES Product Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く