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
アプリアーキテクチャを明文化しチームの開発効率をアップ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
akkiee76
October 30, 2022
Technology
1
630
アプリアーキテクチャを明文化しチームの開発効率をアップ
「potatotips #79 iOS/Android 開発 Tips 共有会」で登壇した資料になります。
akkiee76
October 30, 2022
Tweet
Share
More Decks by akkiee76
See All by akkiee76
Graph Art with Charts API – Beyond Data Visualization
akkie76
0
200
Meet the Translation API
akkie76
0
450
コードレビューで開発を加速させるAIコードレビュー
akkie76
1
690
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
6.1k
コードレビューを支援するAI技術の応用
akkie76
5
1.2k
オブジェクト指向コードレビューの新しいアプローチ
akkie76
3
9.6k
Jetpack Compose で Adaptive Layout に対応しよう
akkie76
0
1.2k
Observationではじめる値監視
akkie76
4
4.8k
TextField 表示スタイル変更の 有効活用例 5 選
akkie76
0
750
Other Decks in Technology
See All in Technology
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
5
540
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
pool.ntp.orgに ⾃宅サーバーで 参加してみたら...
tanyorg
0
1.4k
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
20260204_Midosuji_Tech
takuyay0ne
1
160
配列に見る bash と zsh の違い
kazzpapa3
3
170
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
480
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
340
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.4k
Greatest Disaster Hits in Web Performance
guaca
0
300
AWS Network Firewall Proxyを触ってみた
nagisa53
1
250
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
430
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
Leo the Paperboy
mayatellez
4
1.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
Exploring anti-patterns in Rails
aemeredith
2
260
Accessibility Awareness
sabderemane
0
58
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
590
Utilizing Notion as your number one productivity tool
mfonobong
3
220
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Fireside Chat
paigeccino
41
3.8k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Transcript
potatotips #79 ©2022 RAKUS Co., Ltd. アプリアーキテクチャを明文化して チームの開発効率をアップ Android アーキテクチャを
明文化して臨んだ新規開発を振り返る @akkiee76 potatotips #79 iOS/Android 開発 Tips 共有会
potatotips #79 今日伝えたいこと アーキテクチャを明文化して 得られたことと今後に向けての課題
potatotips #79 Akihiko Sato / 株式会社ラクス Lead Engineer / @akkiee76
SaaS 開発 (Backend, Frontend) / Mobile 開発 (iOS, Android) 上流工程、コードレビュー、チームの課題改善など 読書 / コーヒー / HHKB / 腹筋ローラー・体幹トレーニング 自己紹介
potatotips #79 会社紹介 株式会社ラクス 「ITサービスで企業の成長を継続的に支援します」 をミッションに、お客様の課題解決やビジネスの成 長をを継続的に支援するクラウドサービスを提供し ています。
potatotips #79 背景 楽楽精算では、現在 Kotlin 版と Cordova 版の 2つの Android
アプリをリリースしています。 これまで Kotlin 版では、最新の Android バージョンに追従してきました が、Cordova 版では FW の対応の遅れにより、 タイムリーな対応が難しい状況でした。
potatotips #79 背景 他にも ・ Cordova 自体の EOL (セキュリティリスク) ・ Cordova 開発者減少といった採用面での課題
といった背景もあり、 Cordova から Kotlin へリプレースすることに
potatotips #79 Android チームの現状 現在のチームは、 ・ Android 開発のナレッジが少ない ・ 新規アプリの開発経験がない という課題があり、
リプレース開発の苦戦は目に見えていました。
potatotips #79 現状へのアクション 開発の推進を目的としたアクションとして アーキテクチャを選定し、明文化することにしました。
potatotips #79 アーキテクチャ選定にあたって① 以下の観点から、MVVM アーキテクチャを採用 ・ Android 公式アーキテクチャ ・ モダンアーキテクチャは、技術的に難しい * MVVM
アーキテクチャイメージ
potatotips #79 アーキテクチャ選定にあたって② また、アーキテクチャを検討する上で ・ 関心の分離を重要原則とする ・ クラスの責務をできるだけシンプル/コンパクトに保つ ・ 各クラスのテストの容易性を向上させること を大方針とすることに。
potatotips #79 ここからは 実際に明文化した内容を紹介します。
potatotips #79 1. アプリケーションレイヤー構成 基本的なレイヤー構成として、 3層レイヤー構成を採用。 ・ Presentation Layer ・
Domain Layer ・ Data Layer それぞれを役割を定義しました。
potatotips #79 2. Package 構成
potatotips #79 3. 基本クラスに各ルールを明文化 ・Activity ・Fragment ・ViewModel ・UseCase ・Repository ・責務
・命名規則 ・ルール(制約) ・実装例 ・テストで確認すること ・テスト実装例 明文化 明文化した各ルールを適用したサンプルプロジェクトも用意
potatotips #79 2ヶ月程度で開発完了 振り返ってみると・・・
potatotips #79 実践してよかったこと • チームの技術力が向上 ◦ オブジェクト指向の成長 • 設計の議論をすることが少なく、開発に注力できた ◦
チームの生産性が高まった (見積に対しての実績) • クラスの責務を小さくしたため、テストが描きやすかった ◦ テスト品質の担保
potatotips #79 実践してイマイチだったこと • メンバーによってアーキテクチャの理解度がバラけた ◦ 事前の学習コスト(準備コスト)がやや不十分だった • ライブラリ選定がややモダンだった ◦
AndroidX を中心としたライブラリの学習コストが不十分だった
potatotips #79 技術的課題 技術駆動パッケージング* による参照関係 ・ 横断的に利用されるクラス・コンポーネントの配置 ・ package private を維持できない *
設計パターンによるフォルダ分け
potatotips #79 技術的課題イメージ NetworkError は Presentation Layer に配置されているが、 ・ Data
Layer から throw ・ Presentation Layer で catch されるため各層から参照されることに。 このように層を跨いで参照されるクラスが存在している。
potatotips #79 技術的課題へのアプローチ Before After • マルチプロジェクトを採用し、抽象クラスはコアドメインに移行 • 技術駆動パッケージングからドメイン駆動パッケージングに移行
potatotips #79 まとめ アーキテクチャを明文化すると、 1. チームの技術力の向上 2. 開発の生産性向上 3. 品質向上
といった恩恵を受けることができます。
potatotips #79 まとめ また、開発中に発生する技術的負債を解決することで、 よりチームの技術力の向上に繋がります! ぜひチームでトライしてみてはいかがでしょうか。
potatotips #79 ご静聴ありがとうございました