STORES Tech Conf 2025
ひとつの開発環境
さまざまな技術的背景を持つプロダクトが集まっている
サービス間連携
API Gateway
同期通信をいい感じにする
Event Repository
手元での開発時に動かすものが多い
お約束を決める
make コマンドで開発中のコマンドのインタフェースを統一
コンテナネットワーク内で開発サーバーを動かす
基盤系
STORES-compose
リモートからローカルへイベントを流す
組織の変化
サービス別チーム→機能別チーム
一人が複数のサービスを触ることが当たり前に
お約束でカバーしきれていなかった課題が見えてくる
共通基盤のリモート環境連携が足を引っ張る
開発サーバー in コンテナが辛い
開発そのものに集中しづらい
ひとつの開発環境
管理方式の統一
ghqでリポジトリパスを統一する
すべてローカルで動かす
MySQLのテーブルを分ける
Localstackひとつ
graceful shutdown意外と遅い問題
未来
PR staging欲しい
複数リポジトリ環境だと実現が辛い
ローカル開発環境と同じことをリモート検証環境でも
大AI時代
複数リポジトリはAI向きではない
リモート検証環境をAI Agentに投げる
なぜRubyをわざわざ作り直すのか
楽しいから
仮想マシンの導入
Ruby 1.9
GC
Ractor
ASTro
部分評価
既存の常識を覆すのが楽しい
調理場で使うタブレット専用アプリをどうつくったか - STORES モバイルオーダー 実装の舞台裏
キッチンディスプレイ
調理場特有の要件
全てはトレードオフ
Kotlin Multi Platform / Compose Multi Platform
Android版を先行リリースする
将来iOS版にも対応できるように
もし書き直しになってもAndroid版の資産にできる
当時まだベータ版
プロトタイピング
UI設計
1画面で情報が分かる
ポーリング
ボトムシートUI
通常のAndroidネイティブアプリの1.3倍程度の工数でリリースできた
iOS版
実装着手からおよそ2ヶ月
その巨大CSV出力できますか?非同期処理のOutOfMemoryを乗り越える
できませんでした
オーダー一覧のCSV非同期作成
5000件以上ならsidekiqのジョブをenqueue
1000件ずつスライスしてtempfileを経由する
tempfileを経由したことで文字コードの問題が発生
Railsでgraphql-rubyを使い倒して (振り返り、未来へ、RESTと比較して)
STORESとGraphQL
APIと意思決定
graphql-rubyによる意思決定の少なさ
batteries included
実践的な課題
N+1問題
ドメインのエラー
operationNameやフィールド上のエラーをトラッキング
GraphQL固有の問題とは限らない
I Do
ものをつくるチームをつくる
モノリス復古の大号令
混沌
認知限界
ソフトウェアと情熱
縄文土器
定型的な仕事があまり価値にならなくなる
共感性
vibe-kanban
心の喜び
物質的な快が不遇ではないか
変化を許容する
理不尽を再生産しない