Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2App, 1Repository
Search
n-seki
February 15, 2026
Programming
44
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2App, 1Repository
n-seki
February 15, 2026
More Decks by n-seki
See All by n-seki
10年もののバグを退治した話
n_seki
0
270
永続化、なに使おう?
n_seki
0
330
OS間でBluetooth処理を(一部)共通化している話
n_seki
0
110
やってみようMaven!
n_seki
0
390
Try Android Health Connect
n_seki
0
99
Other Decks in Programming
See All in Programming
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
510
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
230
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
250
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
170
30年振りにコンパイラの定数整数除算を改善した
herumi
7
3.5k
リアルな遅延を測る仕様
kota_yata
1
120
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
280
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
230
Building a Meta Ray-Ban display app
akkeylab
0
170
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
120
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
120
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
350
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
440
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
260
Crafting Experiences
bethany
1
260
How to Ace a Technical Interview
jacobian
281
24k
Chasing Engaging Ingredients in Design
codingconduct
0
280
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
30 Presentation Tips
portentint
PRO
1
370
Transcript
STORES 株式会社 ~ 設計と実装の振り返り ~ 2025.12.09 Ebisu mobile #12 Naoto
Uwaseki 2つのアプリ、1つのリポジトリ
自己紹介 2 • Naoto Uwaseki ◦ n-seki • 決済一筋8年目 ✌
• アイコンはモルモットです→
これまでの決済Androidアプリ 3 • 普通のAndroidアプリ ◦ Google Play で配信中! • 機能
◦ 決済、返金、決済履歴、入金 ◦ スタッフ管理、お知らせ...etc • 外部機器との接続 ◦ 決済端末(Bluetooth接続) ◦ プリンター(Bluetooth接続) • Phone/Tablet向けのUI実装
これまでの決済Androidアプリ 4 • Gradleマルチモジュール構成 • appモジュールをビルドすること で.apkが得られる • 決済SDKとの共通モジュールが あったり
• View/Compose + ViewModel + UseCase + Repository . ├── app // 決済アプリ ├── core ├── hoge └── huga
• 決済端末2もAndroid! • 技術検証によって、既存アプ リと同じところ/違うところ が見えてきた......! • 要件検討も本格化し、どのよ うな機能が必要そうか見えて きた......!
決済端末2 で動作する決済アプリを作る......! 5
既存アプリと専用アプリの共通点 6 1. どちらもAndroidアプリである! → ☺☺☺ 2. 決済端末との接続処理の流れや決済処理のフローにはほとんど 差分がない! →
決済のコアな処理には決済端末も深く関わっており、アプ リと決済端末でデータのやり取りが必要です。 コネクションの確立、決済処理などのプロトコルについて、 決済端末と決済端末2では(ほぼ)違いがない、ということ。
既存アプリと専用アプリの共通点 7 3. サポートする決済手段も同じ! 4. 決済以外の機能にも大きな差分はなし! a. 既存アプリにある機能のいくつかを落とした形になりそう
• 決済端末2のディスプレイは小さい!(480 x 800) ◦ 既存アプリのUI/UXそのままでは使いにくい画面も ◦ デバイスのカラーに合わせたデザインを取り入れたい → UIは新しく実装してあげる必要がありそう
😼 既存アプリと専用アプリの相違点 8
• 接続方式が異なる! ◦ 既存アプリはBluetoothで決済端末と接続している ◦ 決済端末2上で動作するアプリはローカルソケット通信で カードリーダーとやり取りする • GMSが利用できない......! ◦
(さきほどの発表の通り) 既存アプリと専用アプリの相違点 9
共通点と相違点 10 共通点 相違点 • Androidアプリ • コアなロジック • 決済手段
• 決済以外の機能 • ディスプレイサイズ • 決済端末との通信方式 • GMS
考えられる戦略 11 1. 新規で0からアプリを作成する a. 既存アプリとは完全分離 2. 既存アプリの資産を最大限活かす a. うまいこと処理を抽象化すればできそう......?
考えられる戦略 12 1. 新規で0からアプリを作成する a. 既存アプリとは完全分離 2. 既存アプリの資産を最大限活かす a. うまいこと処理を抽象化すればできそう......?
→ 技術検証を重ね、 「既存アプリの資産を活かして開発する」ことに 🔥
2つのアプリ、1つのリポジトリ 13 • 既存の資産を活用した方が、品質が高いアプリをより短期間で 実装できそう • どのレイヤーを既存アプリと共通化するかも併せて検討
2つのアプリ、1つのリポジトリ 14 • 本格実装前のリファクタリング ◦ Bluetooth/ローカルソケットの接続方式を抽象化 ◦ 既存アプリと共通して利用したいコードたちを、新しい Gradleモジュールにお引越し ▪
Daggerが壊れたりしたので修正...... 😌 ◦ 2024/12 前後くらい • GMSが使えないので実装を変更 ◦ (さきほどの発表の通り)
2つのアプリ、1つのリポジトリ 15 • 既存のViewModel/UiStateを利用する形で Full Composeでアプリ実装 ◦ 必要があればリファクタリング . ├──
app // 既存アプリ ├── appCommon // 既存アプリとの共通モジュール ├── core ├── hoge ├── huga └── stores-payments-2-app // 決済端末2向けアプリ sp2-app app appCommon core
良かったこと/改善できそうなこと 16 • 👍 既存コードの多くを共通化できた ◦ 開発スピード、品質に寄与 • 👍 0からUI実装できた(Full
Compose) • ✊ 共通コードの中に既存アプリ or 決済端末2 の分岐が生まれ てしまった • ✊ 既存設計に引っ張られてしまう場合があった ◦ ロジックが複雑になってしまったり ◦ 既存アプリと同じロジックだと問題があることが後々判明 したり
まとめ 17 • 改善の余地はありつつ、当初の設計どおりに実装できて、年内 リリースが完遂できたことは素直に喜ばしい • これから運用していく中でも課題がでてくると思うので、適宜 見直しをしながらコードベースを育てていきたい