Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「良いコード」を探し求めて
Search
MonotaRO
PRO
December 12, 2024
0
380
「良いコード」を探し求めて
2024/12/11開催
~モノタロウ式~ドメインモデリングとリアーキテクチャ Vol.2
MonotaRO
PRO
December 12, 2024
Tweet
Share
More Decks by MonotaRO
See All by MonotaRO
ビジネスを駆動するアーキテクチャへ ~AI-Agentという新しいアクター
monotaro
PRO
1
11k
事業成長を支えるためのデータ アーキテクチャの取り組み - Data Engineering Summit
monotaro
PRO
0
64
AIと共に進化するモノタロウ - AI駆動開発 Conference Autumn 2025
monotaro
PRO
8
2.8k
映えないObservability
monotaro
PRO
1
530
Datadogを活用した マイクロサービスの可観測性向上 ~モノタロウの導入効果と実践ノウハウ~
monotaro
PRO
0
77
FastAPIの魔法をgRPC/Connect RPCへ
monotaro
PRO
1
1.5k
アーキテクチャの境界を超えて
monotaro
PRO
0
350
モノタロウでCursorを導入してみた理想と現実、それと未来
monotaro
PRO
14
37k
モノタロウのAI駆動開発 Cline編 ~ Clineを200⼈で試してみた件
monotaro
PRO
7
39k
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
The Cult of Friendly URLs
andyhume
79
6.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Speed Design
sergeychernyshev
33
1.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
How to Ace a Technical Interview
jacobian
280
24k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Navigating Team Friction
lara
191
16k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
960
Building Flexible Design Systems
yeseniaperezcruz
329
39k
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.