STORES Product Blog

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

iOS/Androidアプリ

fastlane match リポジトリを開発者証明書ダッシュボードに変える

fastlane match リポジトリを 開発者証明書ダッシュボードに 変える STORES ブランドアプリチームで iOS エンジニアをしている榎本 ( @enomot_ ) です。 以前、「fastlane match の内部実装を活用して複数の iOS 開発者証明書の期限を一括チェックする方法」…

App Links / Universal LinksにWeb対応してモバイル端末でネイティブアプリを開く

こんにちは。STORES でWebエンジニアをしていますosdです。 今回はHTTP URLを介してユーザーにネイティブアプリを起動させる仕組みについて実装をしたので、仕様を交えつつWebサーバーとして配布する項目を中心に解説します。 App Links / Universal Links …

DroidKaigi 2025に登壇しました!振り返り!!

こんにちは、STORES 決済のAndroidアプリを開発しているchukaです。 12月ももう残りわずかですね…! 今回は、今年あった個人的最大の出来事、DroidKaigi 2025登壇について振り返っていきたいと思います! はじめに 私はDroidKaigi 2025で「はじめてのMateria…

複数端末間でのリアルタイム・ステータス同期の機能開発

メリークリスマス!Android エンジニアの naberyo(@error96num)です。 この記事は STORES Advent Calendar 2025 の 24 日目の記事です。 私が現在開発に携わっている STORES モバイルオーダー では、この1年間で多くの機能をリリースしてきました。イート…

iOS 26 で SwiftUI の ナビゲーションが壊れた - 非推奨 API が抱えていたリスク -

はじめに こんにちは、@marcy731 です。 STORES レジ のモバイルチームのマネージャー兼iOSエンジニアをしています。 この記事は STORES Advent Calendar 2025 の 19 日目の記事です。 stores.fun STORES レジ は、2019/9/11 にファーストコミットされ、 202…

モバイルアプリのリリースから振り返る STORES 決済 の 2025年

今年も気づけば師走っ!! こちらは STORES Advent Calendar 2025 の記事です。(何日目の記事なのかな?) product.st.inc 毎年恒例です 毎年師走に STORES 決済 のモバイルアプリのリリースを振り返っています。 product.st.inc product.st.inc product.st.in…

決済端末の開発を支えるディストリビューションツールを作った

こんにちは、@tomorrowkeyです。 STORESでは先日STORES 決済端末2をリリースしました。 www.st.inc 私もこのプロジェクトに関わっており、そのなかでSTORES App Distributionというツールを作った話を紹介します。 そもそもSTORES 決済端末2はどういう端末な…

アプリの行動ログを活用して静かな不具合を検知する

この記事は STORES Advent Calendar 2025 の 8 日目の記事です。 こんにちは、 STORES でレジアプリのモバイルオーダー周りの開発をしている yu です。 レジアプリでは、 Firebase Analytics を用いて以下のような粒度で行動ログを取得しています。 画面Aを…

Fused Library は救いとなるか?

はじめに こんにちは。 STORES 決済 の Android アプリ/SDK の開発をしている n-seki です。 もう年の瀬ですね!今回の記事ではFused Library プラグインを取り上げようと思います。 STORES 決済 の SDK Fused Library プラグインの詳細に入る前に STORES …

Liquid Glass 対応が決済アプリへ与える影響について

はじめに この記事は STORES Advent Calendar 2025 の 4 日目の記事です。 STORES 決済の iOS アプリ開発を担当している栗山(@kotetu)です。 今回の記事は、決済アプリチームで現在進行中の Liquid Glass 対応 がテーマです。 本記事では、Liquid Glass 対応…

Kotlin Fest 2025 参加レポート

こんにちは、STORES でモバイルアプリを開発している @tomorrowkey です。 Kotlin Fest 2025、お疲れ様でした!「Kotlinを愛でる」をキーワードに1日中Kotlinについて考える濃厚な1日でした。 この記事では、STORES で取り組んだことや、印象に残ったセッシ…

XCTestを使ったUIテストの安定化戦略

XCTestを使ったUIテストを安定させるための実践ノウハウを紹介します。 Xcode Cloudを使ってテスト失敗の原因を調査する方法、XCTWaiterやNSPredicateを使った待機処理、キーボードやWebViewなどUI特有の不安定要因の解消までを具体的なコード例とともに解説…

WebView/CustomTabsのUIテスト実装をAIで効率化

こんにちは!ブランドアプリを開発しているAndroidエンジニアのkoguchiです。 今回はブランドアプリ(Android)のWebView/CustomTabsのUIテスト実装におけるAI活用について紹介します。 背景 ブランドアプリとはSTORESのプロダクトの一つで、店舗アプリをノ…

レシートプリンターの印刷が途中で停止する不具合を解消した話

こんにちは! STORES レジ の開発をしている iOS / Android エンジニアの @satoryo056 です。 今回は STORES レジ のレシート印刷で起きた不具合と解消方法についてご紹介します。 そして今回対応した内容について、先日行われた iOSDC Japan 2025 で発表し…

SceneDelegate に移行するには?

STORES ブランドアプリの iOS 版を開発している Megabits です。 UISceneDelegate は iOS 13 で追加され、 6 年が経ちました。最初は iPad でのマルチタスクを管理するためのものでした。同じアプリでも、複数ウィンドウを持つ可能性があるため、シーンで分…

iOSDC Japan 2025 参加レポート

こんにちは、STORES でモバイルアプリを開発している nekowen です。 まずは iOSDC Japan 2025、お疲れ様でした!今年は STORES から 総勢20名のメンバーが参加し、登壇・ブース出展、スタッフ活動など様々な形で取り組みを行いました。 この記事では、取り…

DroidKaigi 2025 参加レポート

こんにちは!DroidKaigi 2025 の興奮冷めやらず、いまもセッション動画を見返している @error96num です。 まずは、DroidKaigi おつかれさまでした! 今年は STORES から20名のメンバーが現地参加し、ブース出展・登壇・スタッフ活動など、盛りだくさんの3日…

OSSignposterを活用したiOSアプリのパフォーマンス計測

こんにちは、 STORES レジ を開発しているiOSエンジニアの @miichan_ocha です! みなさん、iOSアプリのパフォーマンスを計測していますか? iOSアプリは Xcode Instruments を使ってアプリのさまざまな状態を計測できます。その中でも、パフォーマンス計測…

STORES は iOSDC Japan 2025 に協賛します!

こんにちは、iOS エンジニアの @miichan_ocha です。 今年も iOSDC Japan の季節が近づいてきました! 今年は 2025年9月19日(金)〜 9月21日(日)に有明セントラルタワーホール&カンファレンスでの開催ということで、今からとてもワクワクしています! ST…

STORES は DroidKaigi 2025 に協賛します!

こんにちは。Android エンジニアの naberyo です。 DroidKaigi 2025 は 9月10日(水)〜12日(金)に、ベルサール渋谷ガーデンで行われます。いよいよ開催まで残り1ヶ月を切り、わくわくが止まりません! STORES は、今年もゴールドスポンサーとして参加します。…

デザインエンジニアリングの領域を強化していきます

STORES のykpythemindです。今回はSTORES 内で強化しているデザインエンジニアリングの領域についてお伝えできたらと思います。 今までのSTORES はどうやってUIを作ってきたか まずは我々のプロダクトと、ここまで歩んできた道のりについて説明します。 STOR…

fastlane match の内部実装を活用して複数の iOS 開発者証明書の期限を一括チェックする方法

STORES ブランドアプリチームで iOS エンジニアをしている榎本 ( @enomot_ )です。 STORES ブランドアプリは、オーナーさんが自分のお店専用のアプリを作成できるサービスです。そのため私たちのチームでは、各オーナーさんのアプリを日々定期的にアップデー…

STORES は iOSDC Japan 2025 に参加したい学生さんを支援します

みなさまこんにちは、STORES モバイル開発本部の @huin です。 Google I/O や WWDC25 も終わり、みなさまこれから出てくる新OSのキャッチアップ・対応に追われている日々かと思います。ワクワクしますね! 今年の WWDC25 は Liquid Glass や Foundation Mode…

multi-xcodeproj + xcworkspace 構成移行の実践

multi-xcodeproj + xcworkspace 構成移行の実践 はじめに xcodeproj とは? xcworkspace とは? この記事で解決すること 背景と課題 STOERS レジ の当初の構成 Build Configuration Stagingで起こっていた問題 Swift Packageの制約 具体的に何が起きるのか?…

ブランドアプリの ID 基盤移行に向けた Cookie 管理の仕組みの実装

はじめに こんにちは。STORES ブランドアプリで Android エンジニアをしている Yuto Koguchi (@10llip0p) です。 STORES では現在 ID 基盤の統一に取り組んでおり、複数のプロダクトへ共通のアカウントでログインしてシームレスに利用できる体験を目指してい…

ViewModel での複雑な状態管理への処方箋

こんにちは!Android エンジニアの naberyo(@error96num)です。 私が現在開発に携わっている STORES モバイルオーダー では、モバイルオーダーから入った注文を飲食店のキッチンで管理するための「キッチンディスプレイアプリ」をネイティブアプリとして提…

約30行でできる!Jetpack Composeで作るサイン画面

はじめに こんにちは! STORES 決済 でAndroidアプリの開発をしているchukaです。 最近は美味しいパンを食べることにハマっています。 美味しいパン屋さんを知っている方は、ぜひ教えてください Jetpack Composeでサインをしよう みなさんは、クレジット…

Compose Multiplatform における iOS ネイティブ実装の取り組み

こんにちは。STORES でiOSエンジニアをしている榎本 (@enomot_ )です。 STORES では、 KMP/CMP を用いて Android, iOS のマルチプラットフォームアプリ開発を行なっています。 *1 本記事では、Kotlin Multiplatform(KMP)と Compose Multiplatform (CMP) を…

決済アプリの SwiftUI 導入に伴う取り組み 〜 アーキテクチャ変更について 〜

はじめに @kotetu こと栗山です。今年の 4 月に STORES に入社しました。今回が、入社して初めての担当記事となります。 今回は、筆者が開発を担当している STORES 決済 の iOS アプリ (以後、 "決済アプリ" と記載) の開発チームで現在進行形で実施している…

たまにはTLVのLについて語る

はじめに はじめまして、こんにちは。STORES 決済 でAndroidエンジニアをしている n-seki です。 というわけでAndroidの技術記事……を書こうと思ったのですが、決済に携わっているエンジニアとして、たまにはTLVについて書いてみようと思います。 TLVとはなに…