STORES Tech Conf 2025
https://storesinc.tech/conf/2025
ひとつの開発環境
スパイクアクセス対策としての pitchfork 導入 - Speaker Deck
さまざまな技術的背景を持つプロダクトが集まっている
サービス間連携
API Gateway
同期通信をいい感じにする
Event Repository
手元での開発時に動かすものが多い
お約束を決める
make コマンドで開発中のコマンドのインタフェースを統一
コンテナネットワーク内で開発サーバーを動かす
基盤系
STORES-compose
リモートからローカルへイベントを流す
組織の変化
サービス別チーム→機能別チーム
一人が複数のサービスを触ることが当たり前に
お約束でカバーしきれていなかった課題が見えてくる
共通基盤のリモート環境連携が足を引っ張る
開発サーバー in コンテナが辛い
開発そのものに集中しづらい
ひとつの開発環境
管理方式の統一
Home | mise-en-place
ghqでリポジトリパスを統一する
すべてローカルで動かす
MySQLのテーブルを分ける
Localstackひとつ
graceful shutdown意外と遅い問題
未来
PR staging欲しい
複数リポジトリ環境だと実現が辛い
ローカル開発環境と同じことをリモート検証環境でも
大AI時代
複数リポジトリはAI向きではない
リモート検証環境をAI Agentに投げる
なぜRubyをわざわざ作り直すのか
楽しいから
仮想マシンの導入
Ruby 1.9
GC
Ractor
ASTro
ASTro: An AST-Based Reusable Optimization Framework | Proceedings of the 17th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages
部分評価
既存の常識を覆すのが楽しい
調理場で使うタブレット専用アプリをどうつくったか - STORES モバイルオーダー 実装の舞台裏
キッチンディスプレイ
調理場特有の要件
全てはトレードオフ
Kotlin Multi Platform / Compose Multi Platform
Android版を先行リリースする
将来iOS版にも対応できるように
もし書き直しになってもAndroid版の資産にできる
当時まだベータ版
プロトタイピング
共有と分離 ─ Compose Multiplatform “本番導入” の設計指針
UI設計
1画面で情報が分かる
ポーリング
ボトムシートUI
通常のAndroidネイティブアプリの1.3倍程度の工数でリリースできた
iOS版
実装着手からおよそ2ヶ月
その巨大CSV出力できますか?非同期処理のOutOfMemoryを乗り越える
できませんでした
オーダー一覧のCSV非同期作成
5000件以上ならsidekiqのジョブをenqueue
1000件ずつスライスしてtempfileを経由する
tempfileを経由したことで文字コードの問題が発生
Sidekiq その前に:Webアプリケーションにおける非同期ジョブ設計原則 / morihirok | Kaigi on Rails 2025
Railsでgraphql-rubyを使い倒して (振り返り、未来へ、RESTと比較して)
STORESとGraphQL
APIと意思決定
graphql-rubyによる意思決定の少なさ
batteries included
実践的な課題
N+1問題
https://github.com/Shopify/graphql-batch
ドメインのエラー
operationNameやフィールド上のエラーをトラッキング
GraphQL固有の問題とは限らない
I Do
ものをつくるチームをつくる
モノリス復古の大号令
混沌
認知限界
ソフトウェアと情熱
縄文土器
Xユーザーのしらそらさん: 「技術の民主化や「煩わしい作業から解放されて創造的な活動に集中できます!」ってのは賛同できるけれど,かつてのパソカタが構造を美しく保ちながら動かす「工芸」みたいな雰囲気だったのに,今の流れは「AI でスロット回して SSR 引け!」みたいなノリを賞賛するようで,あんまおもんなくてしんどい.」 / X
定型的な仕事があまり価値にならなくなる
共感性
vibe-kanban
心の喜び
物質的な快が不遇ではないか
変化を許容する
理不尽を再生産しない
Amazon.co.jp: 回路を観る | Prime Video