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
syam
May 12, 2024
Technology
0
34
タイミーのモジュール分割あれこれ
syam
May 12, 2024
Tweet
Share
More Decks by syam
See All by syam
Firebase Dynamic Linksの廃止と今後
syam4869
1
330
Other Decks in Technology
See All in Technology
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
440
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
190
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
630
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
170
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
140
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
200
アプリエンジニアのためのGraphQL入門.pdf
spycwolf
0
100
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
310
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.2k
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
390
Featured
See All Featured
Designing for Performance
lara
604
68k
KATA
mclloyd
29
14k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
The World Runs on Bad Software
bkeepers
PRO
65
11k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Adopting Sorbet at Scale
ufuk
73
9.1k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
A Tale of Four Properties
chriscoyier
156
23k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
The Language of Interfaces
destraynor
154
24k
Transcript
2024/02/29 関西モバイル勉強会A #2 タイミーのモジュール分割あれこれ @arus4869 syam
目次 • 自己紹介 • タイミーについて • モジュール分割とは • タイミーのモジュール分割の取り組み について
• おわりに
1 自己紹介
自己紹介 syam TimeeのAndroidエンジニアです ピンクで丸いものやRPGが好きです(FF7楽しみです。) カレーはCoCo壱が好きです🍛 (4辛くらいがちょうどいい)
1 タイミーについて
タイミーの実績 スキマ バイト No.1 ※2024年2月時点 ※1 [調査方法]インターネット調査 [調査期間]2021年2月9日~11日 [調査概要]スキマバイトサービスの実態調査 [調査対象]直近1年以内にスキマバイトを経験したことのある18〜69歳の男女1034名[調査実施]株式会社マクロミル 6
利用率・リピート率 ※1 導入事業者数 98,000企業 ワーカー数 700万人
7
8
業界を超えて広がるタイミー タイミーは多くの業界で活用されるサービスに成長し、物流/小売/飲食の各業界TOP10社の半数以上がタイミーを導入中。 現在導入事業者数は98,000企業 230,000拠点以上になり、様々な業界に広がっています。 9
求人募集人数も一貫して高成長を継続 直近では、前年比 約2.2倍で伸長 事業の成長|タイミー全体の募集人数 前年比 約2.2倍
1 モジュール分割とは
シングルモジュールなプロジェクト Android Studioで新規プロジェクトを作成すると、最初にApplication Module(appディレクトリを持つモジュール)が作成される。この状態は「シングル モジュールなプロジェクト」と呼ばれる。 POINT
マルチモジュールなプロジェクト Application Moduleは、複数のモジュールに分割することが可能 モジュール分割されたプロジェクトを「マルチモジュール」なプロジェクトと呼ぶ POINT
モジュール分割を行うためのステップ例 1. コードの共通部品をモジュールに分割する 2. 関心を切り離したいレイヤーを決めて分割の優先順位をつける 3. 優先順位ごとにモジュールを分割する 4. 古いUIのコードを別のパッケージに移す 5.
UIのコードを「Feature Module」として機能単位に分割
大事なのは、 方針決めと 共有理解の構築
モジュール分割のメリットと注意点 - 効率化: 編集されたモジュールのみコンパイル → キャッシュ活用 - Gradle恩恵: ビルドシステムにより特に顕著 ビルド時間の短縮
コード品質の向上 - 関心の分離: 機能ごとにモジュール化 → 明確な責務分担 - 集中力向上: 機能実装に集中可能 - 新規参入の容易さ: 新規開発者が理解・参加しやすい - コードの抽象化: モジュール分割によるコードの整理・最適化 - 問題解決: 分割を通じて既存の課題に対処 抽象化と改善 - 計画性: 目的なき分割は逆効果 → 計画と目的を明確に 注意点
1 タイミーのモジュール 分割の取り組みについて
抱えている課題 現状抱えている課題は大きく2つあります。 • 開発組織の拡大に伴い、複数人での並列的な開発により生じる課題 ◦ 広範囲で強制化されていないコードが存在しているため、コードを触る 開発者の人数が増えることによって、アーキテクチャの強制が効かなく なる可能性がある ◦ コンフリクトの増加
◦ 別開発チームのレビューにかかる時間が増加 • サービスの拡大に伴いコード量が増加することで生じる課題 ◦ ビルド速度の低下 ◦ リファクタリングにおける影響範囲が読みづらくなる ◦ コードが読みづらくなる 他にも様々な課題が考えられそうですが、モジュール分割を適切に行うことによって、上 記課題の改善がされることを期待しています。
ライブラリモジュールについて 全体で60以上のモジュールがあります。 POINT
機能モジュールで考えていること
機能分割するとこのようになります。
画面遷移で考えていること
そのまま参照すると循環参照になってしまう
循環参照 and 相互依存させないためには... 「画面遷移の抽象化」が必要
機能モジュールで考えていること
1 おわりに
おわりに • 優先順位をつけてシンプルに分割してみよう • あらかじめ方針決めと共有理解の構築をチームでとろう • モジュール分割の恩恵を受けて、少しでも早くビルド時間を短縮して みう • チーム全体がより幸せな開発ライフを送れるように...