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
660
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アプリアーキテクチャを明文化しチームの開発効率をアップ
「potatotips #79 iOS/Android 開発 Tips 共有会」で登壇した資料になります。
akkiee76
October 30, 2022
More Decks by akkiee76
See All by akkiee76
Graph Art with Charts API – Beyond Data Visualization
akkie76
0
240
Meet the Translation API
akkie76
0
500
コードレビューで開発を加速させるAIコードレビュー
akkie76
1
740
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
6.2k
コードレビューを支援するAI技術の応用
akkie76
5
1.3k
オブジェクト指向コードレビューの新しいアプローチ
akkie76
3
10k
Jetpack Compose で Adaptive Layout に対応しよう
akkie76
0
1.2k
Observationではじめる値監視
akkie76
4
4.9k
TextField 表示スタイル変更の 有効活用例 5 選
akkie76
0
790
Other Decks in Technology
See All in Technology
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
170
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
800
複数プロダクト組織のAIネイティブ化における戦略 / AICon2026_kude
rakus_dev
0
300
JAWS_ICEBERG_BASECAMP
iqbocchi
2
110
AI時代のPlaywright活用(システムテストを自動化する ー 実行エンジンにPla ywrightを選んだ理由)
ynisqa1988
2
950
AI時代こそ、スケールしないことをしよう -「作る人」から「なぜ作るか」を考える人へ / Do Things That Don't Scale in the AI Era — From How to Why
kaminashi
1
110
StepFunctionsとGraphRAGを活用した暗黙知活用のためのRAG基盤
yakumo
0
140
PHPで作って学ぶリアルタイム音声対話AIとWebSocket入門 by ムナカタ
munakata
0
140
AI時代の開発生産性を捉え直す — 経営と現場をつなぐ「開発組織のオブザーバビリティ」— / AI Dev Ex Conference 2026
tkyowa
1
1.3k
Multicaで30個のミニプロジェクトをAIエージェント運用して見えてきたこと
eiei114
1
640
大 AI 時代におけるC# の事情 ~ぶっちゃけトークを交えながら~
nenonaninu
1
140
AIが当たり前の組織で エンジニアはどう育つか
nishihira
1
990
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
280
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
410
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Building an army of robots
kneath
306
46k
How to Talk to Developers About Accessibility
jct
2
430
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
How to make the Groovebox
asonas
2
2.3k
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 ご静聴ありがとうございました