iOS/Androidアプリ
この記事は STORES Advent Calendar 2025 の 8 日目の記事です。 こんにちは、 STORES でレジアプリのモバイルオーダー周りの開発をしている yu です。 レジアプリでは、 Firebase Analytics を用いて以下のような粒度で行動ログを取得しています。 画面Aを…
はじめに こんにちは。 STORES 決済 の Android アプリ/SDK の開発をしている n-seki です。 もう年の瀬ですね!今回の記事ではFused Library プラグインを取り上げようと思います。 STORES 決済 の SDK Fused Library プラグインの詳細に入る前に STORES …
はじめに この記事は STORES Advent Calendar 2025 の 4 日目の記事です。 STORES 決済の iOS アプリ開発を担当している栗山(@kotetu)です。 今回の記事は、決済アプリチームで現在進行中の Liquid Glass 対応 がテーマです。 本記事では、Liquid Glass 対応…
こんにちは、STORES でモバイルアプリを開発している @tomorrowkey です。 Kotlin Fest 2025、お疲れ様でした!「Kotlinを愛でる」をキーワードに1日中Kotlinについて考える濃厚な1日でした。 この記事では、STORES で取り組んだことや、印象に残ったセッシ…
XCTestを使ったUIテストを安定させるための実践ノウハウを紹介します。 Xcode Cloudを使ってテスト失敗の原因を調査する方法、XCTWaiterやNSPredicateを使った待機処理、キーボードやWebViewなどUI特有の不安定要因の解消までを具体的なコード例とともに解説…
こんにちは!ブランドアプリを開発しているAndroidエンジニアのkoguchiです。 今回はブランドアプリ(Android)のWebView/CustomTabsのUIテスト実装におけるAI活用について紹介します。 背景 ブランドアプリとはSTORESのプロダクトの一つで、店舗アプリをノ…
こんにちは! STORES レジ の開発をしている iOS / Android エンジニアの @satoryo056 です。 今回は STORES レジ のレシート印刷で起きた不具合と解消方法についてご紹介します。 そして今回対応した内容について、先日行われた iOSDC Japan 2025 で発表し…
STORES ブランドアプリの iOS 版を開発している Megabits です。 UISceneDelegate は iOS 13 で追加され、 6 年が経ちました。最初は iPad でのマルチタスクを管理するためのものでした。同じアプリでも、複数ウィンドウを持つ可能性があるため、シーンで分…
こんにちは、STORES でモバイルアプリを開発している nekowen です。 まずは iOSDC Japan 2025、お疲れ様でした!今年は STORES から 総勢20名のメンバーが参加し、登壇・ブース出展、スタッフ活動など様々な形で取り組みを行いました。 この記事では、取り…
こんにちは!DroidKaigi 2025 の興奮冷めやらず、いまもセッション動画を見返している @error96num です。 まずは、DroidKaigi おつかれさまでした! 今年は STORES から20名のメンバーが現地参加し、ブース出展・登壇・スタッフ活動など、盛りだくさんの3日…
こんにちは、 STORES レジ を開発しているiOSエンジニアの @miichan_ocha です! みなさん、iOSアプリのパフォーマンスを計測していますか? iOSアプリは Xcode Instruments を使ってアプリのさまざまな状態を計測できます。その中でも、パフォーマンス計測…
こんにちは、iOS エンジニアの @miichan_ocha です。 今年も iOSDC Japan の季節が近づいてきました! 今年は 2025年9月19日(金)〜 9月21日(日)に有明セントラルタワーホール&カンファレンスでの開催ということで、今からとてもワクワクしています! ST…
こんにちは。Android エンジニアの naberyo です。 DroidKaigi 2025 は 9月10日(水)〜12日(金)に、ベルサール渋谷ガーデンで行われます。いよいよ開催まで残り1ヶ月を切り、わくわくが止まりません! STORES は、今年もゴールドスポンサーとして参加します。…
STORES のykpythemindです。今回はSTORES 内で強化しているデザインエンジニアリングの領域についてお伝えできたらと思います。 今までのSTORES はどうやってUIを作ってきたか まずは我々のプロダクトと、ここまで歩んできた道のりについて説明します。 STOR…
STORES ブランドアプリチームで iOS エンジニアをしている榎本 ( @enomotok_ )です。 STORES ブランドアプリは、オーナーさんが自分のお店専用のアプリを作成できるサービスです。そのため私たちのチームでは、各オーナーさんのアプリを日々定期的にアップデ…
みなさまこんにちは、STORES モバイル開発本部の @huin です。 Google I/O や WWDC25 も終わり、みなさまこれから出てくる新OSのキャッチアップ・対応に追われている日々かと思います。ワクワクしますね! 今年の WWDC25 は Liquid Glass や Foundation Mode…
multi-xcodeproj + xcworkspace 構成移行の実践 はじめに xcodeproj とは? xcworkspace とは? この記事で解決すること 背景と課題 STOERS レジ の当初の構成 Build Configuration Stagingで起こっていた問題 Swift Packageの制約 具体的に何が起きるのか?…
はじめに こんにちは。STORES ブランドアプリで Android エンジニアをしている Yuto Koguchi (@10llip0p) です。 STORES では現在 ID 基盤の統一に取り組んでおり、複数のプロダクトへ共通のアカウントでログインしてシームレスに利用できる体験を目指してい…
こんにちは!Android エンジニアの naberyo(@error96num)です。 私が現在開発に携わっている STORES モバイルオーダー では、モバイルオーダーから入った注文を飲食店のキッチンで管理するための「キッチンディスプレイアプリ」をネイティブアプリとして提…
はじめに こんにちは! STORES 決済 でAndroidアプリの開発をしているchukaです。 最近は美味しいパンを食べることにハマっています。 美味しいパン屋さんを知っている方は、ぜひ教えてください Jetpack Composeでサインをしよう みなさんは、クレジット…
こんにちは。STORES でiOSエンジニアをしている榎本 (@enomotok_ )です。 STORES では、 KMP/CMP を用いて Android, iOS のマルチプラットフォームアプリ開発を行なっています。 *1 本記事では、Kotlin Multiplatform(KMP)と Compose Multiplatform (CMP) …
はじめに @kotetu こと栗山です。今年の 4 月に STORES に入社しました。今回が、入社して初めての担当記事となります。 今回は、筆者が開発を担当している STORES 決済 の iOS アプリ (以後、 "決済アプリ" と記載) の開発チームで現在進行形で実施している…
はじめに はじめまして、こんにちは。STORES 決済 でAndroidエンジニアをしている n-seki です。 というわけでAndroidの技術記事……を書こうと思ったのですが、決済に携わっているエンジニアとして、たまにはTLVについて書いてみようと思います。 TLVとはなに…
こんにちは! STORES レジ・STORES 予約 の開発をしている iOS / Android エンジニアの @satoryo056 です。 なんとこの度 WWDC に当選しまして、約1週間アメリカに出張してきました! 本記事では、WWDC25 に参加してきた様子を現地の写真を添えながら振り返…
STORES ブランドアプリの iOS アプリ側を開発している Megabits です。 STORES ブランドアプリはアプリとサーバーの連動で成り立っています。なので、アプリを開発するとき、サーバーへ接続してデバッグすることがほどんどです。逆に、バックエンドを開発す…
もう夏なんですかねー。 夏大好きです。 こんにちは! STORES 決済 モバイルチームの Engineering Manager、 iOS アプリ・SDKの開発を担当しております。 いわいです。 なぜアプリ譲渡したのか STORES 株式会社は、 複数の事業会社が集まった会社です。 STOR…
こんにちは、 yu です。前回はインターン生としてブログを書きましたが、今回は内定者アルバイトとしてブログを書いていきます。 STORES レジには、会員バーコードやアイテムのバーコードを読み込むスキャン機能があります。 しかし、そのスキャン機能では 1…
こんにちは、STORES 決済 でiOSアプリを開発している @nekowenです。 マルチスレッドプログラミングは難しいと言われますが、その理由の1つとして、データ競合(data race)があります。 データ競合は複数のスレッドが同じ共有データに同時にアクセスし、少な…
この記事は「STORES レジにおけるSwift6移行対応」の完結編です。今回は、対応箇所が特に多かったモジュールにフォーカスし、チームで分担して対応する過程をご紹介します。Swift6対応がこれからの方はもちろん、すでに対応済みの方にとっても、中規模から大…
こんにちは、tomorrowkeyです。 今回はAndroidアプリ開発においてボタンのダブルタップをどう防ぐかについて話していきます。 モバイルアプリのQAのよくある項目として、ボタンのダブルタップがあります。開発に集中していると、この不具合になかなか気づけ…