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
MonotaRO
PRO
December 12, 2024
0
240
「良いコード」を探し求めて
2024/12/11開催
~モノタロウ式~ドメインモデリングとリアーキテクチャ Vol.2
MonotaRO
PRO
December 12, 2024
Tweet
Share
More Decks by MonotaRO
See All by MonotaRO
業務理解の深化と実践~ドメインモデリングで基幹システムを捉える
monotaro
PRO
4
2.7k
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
440
ビジネスとアプリケーションを繋げるモデリング
monotaro
PRO
0
630
20241004 モノタロウ式~ドメインモデリングとリアーキテクチャ
monotaro
PRO
2
1.1k
BigQueryとCloud Composerを使って大規模バッチ処理をデータパイプラインに再構築する
monotaro
PRO
5
470
ビジネスの構造をアーキテクチャに落とし込みソフトウェアに可変性を注入する
monotaro
PRO
20
7.4k
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
630
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Writing Fast Ruby
sferik
628
61k
Practical Orchestrator
shlominoach
186
10k
Making Projects Easy
brettharned
116
6k
KATA
mclloyd
29
14k
The Invisible Side of Design
smashingmag
299
50k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
410
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Transcript
「良いコード」を探し求めて ~開発現場からお伝えします~ 頼(らい) SWE@株式会社MonotaRO 1 2024.12.11 LT@MonotaRO Tech Talk © 2020
MonotaRO Co., Ltd. All Rights Reserved.
🥅ゴール 2 みなさんがチーム内で 良いコード 保守性 設計原則 について話し合うきっかけになれたら
今日の話 3 そうだ、 について認識を合わせよう 良いコード 保守性 設計原則 私たちのチームが とした話
🙋「良いコード」を書きたいですか? 4
🙋リファクタリングしていますか? 5
私たちもリファクタリングしています 6
🤔そういえば、私たちは何を目指して リファクタリングしているんだっけ 7
私たちは「良いコード」を目指して リファクタリングしています 8
🤔私たちが目指している「良いコード」とは? 9
🤔 10
🤔 11
🤔 12
🚩そうだ、「良いコード」について認識を合わせよう 13
私たちが目指している良いコードとは? 14 リファクタリング しやすい テストしやすい 疎結合
ソフトウェアの品質特性から考えてみる 15 • システム・ソフトウェア製品品質モデル(JIS X 25010) ◦ 機能適合性 ◦ 性能効率性
◦ 互換性 ◦ 使用性 ◦ 信頼性 ◦ セキュリティ ◦ 保守性 ◦ 移植性 📖参照: IPA『つながる世界のソフトウェア品質ガイド』
ソフトウェアの品質特性から考えてみる 16 • システム・ソフトウェア製品品質モデル ◦ 保守性 ▪ モジュール性 / 再利用性
/ 解析性 / 修正性 / 試験性 変更しやすい テストしやすい 疎結合
🤔保守性の良いコードとは? 17
🤔 18
🤔 19
🤔 20
💡そうだ、保守性について認識を合わせよう 21 🚩「良いコード」 ↑
保守性の良いコードとは? ちょっと寄り道 ➥パフォーマンスの良いコードとは? 22
線形探索と二分探索を例に 23 def 線形探索(arr: list[int], target: int) -> int: for
i in range(len(arr)): if arr[i] == target: return i return -1 def 二分探索(arr: list[int], target: int) -> int: left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == target: return mid if arr[mid] < target: left = mid + 1 else: right = mid - 1 return -1 🎨 Colors: Catppuccin Latte from https://github.com/catppuccin/catppuccin
パフォーマンスを解析してみる 24 20ms ⏱ 1ms👑 O(N) ✏ O(logN)👑 実行してみる vs
計算量を 分析してみる
パフォーマンス 動的解析 ◯(実行時間) 静的解析 ◯(計算量) パフォーマンスは解析できる 25
パフォーマンス 保守性 動的解析 ◯(実行時間) △ 静的解析 ◯(計算量) 🤔 保守性は解析できる? 26
フィードバック ループが長い これを探したい
保守性は解析できそう 27 パフォーマンス 保守性 動的解析 ◯(実行時間) △ 静的解析 ◯(計算量) 💡設計原則(との適合度)
設計原則 28 • 保守性につながる設計の経験則 ◦ 保守性を分析し、言語化するツール ◦ 保守性を高める指針 • いろいろある📚
• 抽象度が高い🌀
💡そうだ、設計原則について認識を合わせよう 29 🚩「良いコード」 ↑ 保守性 ↑
• 読み合わせ式 ◦ 社内研修資料の振り返り ▪ テストとリファクタリングのワークショップ[1] ◦ 解説記事など ▪ SOLID原則完全に理解した!になるための本
▪ 7つの設計原則とオブジェクト指向プログラミン グ 30 勉強会を開いた 👉 [1] ワークショップの様子はこちらの記事で紹介されています リファクタリングを文化にする 〜組織が技術的負債と向き合うワークショップ〜 - MonotaRO Tech Blog
• 抽象度の高い原則を読み解くため、できるだけ掘り下 げた • 自分たちのコードベースと業務に照らし合わせてみた 31 設計原則の読み合わせ方 なにがうれしい? つまり? 例えばこのコードのこと?
ここは単一責任原則を守ら れていない?
• 読んだだけでは「さじ加減」がわからない ◦ 単一責任の原則 → 責任の単位は? ◦ DRY → 重複の判定基準は?行数?[1]
• 感覚を身につけるには実践が必要 ◦ リファクタリング! 32 原則から実践へ ⛳ 🏌 💪? 📖[1] Read more: Google Testing Blog: Don't DRY Your Code Prematurely
• 違和感を感じたら「リファクタリングチケット」に追記 • 例えば ◦ テストが長い ▪ 💡テスト対象が責任を持ちすぎ?密結合になってい る? ◦
機能追加するのに変更しないといけないレイヤーが多い ▪ 💡レイヤーの分け方が不適切?抽象化しすぎ? 33 リファクタリングの対象を追跡する
• 定期リファクタリング ◦ リファクタリングチケットにストーリーポイントを 割り当てる • 予備のためのリファクタリング[1] ◦ 綺麗にしてから拡張/変更を加える 34
リファクタリングの時間を作る 📖[1] Read more: リファクタリング(第 2版) 既存のコードを安全に改善する
まとめ • 「良いコード」→保守性→設計原則 ◦ という道をたどって認識を合わせた • 設計原則🔁リファクタリング ◦ 設計原則がリファクタリングの指針となった ◦
リファクタリングで設計原則の理解を深めた 35
36 みなさんもチーム内で について話し合ってみませんか? 良いコード 保守性 設計原則
37 Thank you!
38 © 2020 MonotaRO Co., Ltd. All Rights Reserved.