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
akkiee76
October 30, 2022
Technology
1
620
アプリアーキテクチャを明文化しチームの開発効率をアップ
「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
140
Meet the Translation API
akkie76
0
380
コードレビューで開発を加速させるAIコードレビュー
akkie76
1
610
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
5.6k
コードレビューを支援するAI技術の応用
akkie76
5
1.2k
オブジェクト指向コードレビューの新しいアプローチ
akkie76
3
9k
Jetpack Compose で Adaptive Layout に対応しよう
akkie76
0
900
Observationではじめる値監視
akkie76
4
4.6k
TextField 表示スタイル変更の 有効活用例 5 選
akkie76
0
700
Other Decks in Technology
See All in Technology
いつの間にか入れ替わってる!?新しいAWS Security Hubとは?
cmusudakeisuke
0
120
KubeCon + CloudNativeCon Japan 2025 Recap
ren510dev
1
380
AI専用のリンターを作る #yumemi_patch
bengo4com
5
4.3k
Lazy application authentication with Tailscale
bluehatbrit
0
210
ネットワーク保護はどう変わるのか?re:Inforce 2025最新アップデート解説
tokushun
0
200
事業成長の裏側:エンジニア組織と開発生産性の進化 / 20250703 Rinto Ikenoue
shift_evolve
PRO
2
21k
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
「クラウドコスト絶対削減」を支える技術—FinOpsを超えた徹底的なクラウドコスト削減の実践論
delta_tech
4
170
Lufthansa ®️ USA Contact Numbers: Complete 2025 Support Guide
lufthanahelpsupport
0
190
United airlines®️ USA Contact Numbers: Complete 2025 Support Guide
unitedflyhelp
0
310
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
0
110
開発生産性を測る前にやるべきこと - 組織改善の実践 / Before Measuring Dev Productivity
kaonavi
9
4.2k
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.5k
Designing for humans not robots
tammielis
253
25k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
We Have a Design System, Now What?
morganepeng
53
7.7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Done Done
chrislema
184
16k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
What's in a price? How to price your products and services
michaelherold
246
12k
Being A Developer After 40
akosma
90
590k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Code Review Best Practice
trishagee
69
18k
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 ご静聴ありがとうございました