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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
syam
May 12, 2024
Technology
71
0
Share
タイミーのモジュール分割あれこれ
syam
May 12, 2024
More Decks by syam
See All by syam
Firebase Dynamic Linksの廃止と今後
syam4869
1
850
Other Decks in Technology
See All in Technology
Code Interpreter で、AIに安全に コードを書かせる。
yokomachi
0
3.4k
AgentCore RuntimeからS3 Filesをマウントしてみる
har1101
4
410
明日からドヤれる!超マニアックなAWSセキュリティTips10連発 / 10 Ultra-Niche AWS Security Tips
yuj1osm
0
320
2026年度新卒技術研修 サイバーエージェントのデータベース 活用事例とパフォーマンス調査入門
cyberagentdevelopers
PRO
7
8.1k
Hooks, Filters & Now Context: Why MCPs Are the “Hooks” of the AI Era
miriamschwab
0
160
3つのボトルネックを解消し、リリースエンジニアリングを再定義した話
nealle
0
410
終盤で崩壊させないAI駆動開発
j5ik2o
1
1.1k
Digitization部 紹介資料
sansan33
PRO
1
7.2k
生成AI時代のエンジニア育成 変わる時代と変わらないコト
starfish719
0
660
AIがコードを書く時代の ジェネレーティブプログラミング
polidog
PRO
3
720
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
74k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.2k
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
150
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
200
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
54k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
A better future with KSS
kneath
240
18k
Mobile First: as difficult as doing things right
swwweet
225
10k
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 おわりに
おわりに • 優先順位をつけてシンプルに分割してみよう • あらかじめ方針決めと共有理解の構築をチームでとろう • モジュール分割の恩恵を受けて、少しでも早くビルド時間を短縮して みう • チーム全体がより幸せな開発ライフを送れるように...