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
ham
March 25, 2025
Technology
2
320
コード品質向上で得られる効果と実践的取り組み
2025/03/25 「コード品質向上のノウハウ」の登壇資料
https://form.findy-team.io/event_code-quality_250325
ham
March 25, 2025
Tweet
Share
More Decks by ham
See All by ham
生成AIによる生産性向上〜テック企業やファインディの活用事例〜
ham0215
1
14
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
310
データ駆動経営の道しるべ:プロダクト開発指標の戦略的活用法
ham0215
2
380
開発組織における意思決定の実例〜開発優先度・組織構成・ツール導入〜
ham0215
0
76
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
410
アウトカムを最速で最大化できる開発組織にするために
ham0215
1
120
開発者体験を定量的に把握する手法と活用事例
ham0215
2
290
チームトポロジーの4つのチームタイプ
ham0215
2
120
生成AI活用でエンジニア組織はどう変わったのか?
ham0215
3
240
Other Decks in Technology
See All in Technology
ニッポンの人に知ってもらいたいGISスポット
sakaik
0
180
初めてのDatabricks Apps開発
taka_aki
1
210
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
410
技育祭2025【秋】 企業ピッチ/登壇資料(高橋 悟生)
hacobu
PRO
0
120
SCONE - 動画配信の帯域を最適化する新プロトコル
kazuho
1
240
Codexとも仲良く。CodeRabbit CLIの紹介
moongift
PRO
1
260
FinOps について (ちょっと) 本気出して考えてみた
skmkzyk
0
180
Click A, Buy B: Rethinking Conversion Attribution in ECommerce Recommendations
lycorptech_jp
PRO
0
110
いまからでも遅くない!SSL/TLS証明書超入門(It's not too late to start! SSL/TLS Certificates: The Absolute Beginner's Guide)
norimuraz
0
290
[OCI Skill Mapping] AWSユーザーのためのOCI – IaaS編(Compute/Storage/Networking) (2025年10月8日開催)
oracle4engineer
PRO
1
100
Kubernetes self-healing of your workload
hwchiu
0
270
OAuthからOIDCへ ― 認可の仕組みが認証に拡張されるまで
yamatai1212
0
140
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Designing Experiences People Love
moore
142
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Six Lessons from altMBA
skipperchong
29
4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Transcript
© Findy Inc. 1 コード品質向上で得られる効果と 実践的取り組み 2025.03.25 コード品質向上のノウハウ 浜⽥ 直⼈
Naoto Hamada (ham)
© Findy Inc. 2 開発⽣産性が向上する⽅法を探求しているエンジニア! Ruby / Rails / React
/ TypeScript / AWS Agile / DevOps / Developer Productivity / DevEx Stock Investment 浜⽥ 直⼈ Naoto Hamada (ham) @hamchance0215
挑戦するエンジニアの プラットフォームをつくる。 テクノロジーによる社会変革の時代に最も必要なことは、エンジニアの可能性を拡げることです。 Findyは、アルゴリズムとヒューマニティの融合によって、 すべてのエンジニアが不安なく挑戦できる世界共通のプラットフォームをつくります。 個人のチャンスを生み出し、組織の生産性を向上させ、社会の人材資産を好循環させる。 エンジニアプラットフォームが、デジタル社会の発展を加速していきます。 ビジョン © Findy
Inc. 3
None
© Findy Inc. 5 Agenda - ソフトウェアの品質特性 - 保守性について -
保守性を向上させる取り組み - まとめ
© Findy Inc. ソフトウェアの品質特性 6
© Findy Inc. 7 ソフトウェアの品質特性とは? - ISO/IEC 25010では、システム及びソフトウェア製品の品質 特性を8つの特性とそれぞれの副特性で定義しています -
ISO/IEC 25010 ◦ 国際標準化機構(ISO)と国際電気標準会議(IEC)が共 同で発⾏した国際規格 - JIS X 25010 ◦ ISO/IEC 25010を基に、⽇本産業標準調査会(JISC)が ⽇本の国家規格(JIS規格)として発⾏したもの
© Findy Inc. 8 ソフトウェアの品質特性とは? - システム及びソフトウェアの品質測定量とその測定⽅法 https://www.ipa.go.jp/archive/files/000065866.pdf
© Findy Inc. 9 ソフトウェアの品質特性とは? - システム及びソフトウェアの品質測定量とその測定⽅法 https://www.ipa.go.jp/archive/files/000065866.pdf
© Findy Inc. 保守性について 10
© Findy Inc. 11 保守性とは? - ソフトウェアの変更が容易かつ効率的に⾏える度合いを⽰ す品質特性 - 保守性が⾼いとは、ソフトウェアの機能追加、バグ修正、
パフォーマンス改善などが容易に⾏えることを意味する
© Findy Inc. 12 保守性とは? - 保守性に含まれる5つの品質副特性 ◦ モジュール性 ◦
再利⽤性 ◦ 解析容易性 ◦ 修正容易性 ◦ 試験容易性
© Findy Inc. 13 モジュール性 - ソフトウェアが、独⽴したコンポーネントに分割されてい る度合い。これにより、特定のコンポーネントのみを変更 することが容易になり、他の部分への影響を最⼩限に抑え られます。
全然関係ないところが 壊れたー
© Findy Inc. 14 再利⽤性 - ソフトウェアのコンポーネントが、他のソフトウェアやシ ステムで再利⽤できる度合い。再利⽤性が⾼いほど、開発 効率が向上し、保守コストを削減できます。 同じことをしている
コードがたくさんある... 全部対応せねば...
© Findy Inc. 15 解析容易性 - ソフトウェアの障害や変更の影響を、容易に分析できる度 合い。解析容易性が⾼いほど、問題の特定や修正が迅速に ⾏えます。 ビッグバンリリースすぎて
変更の影響がわからん...
© Findy Inc. 16 修正容易性 - ソフトウェアの変更を、容易かつ効率的に⾏える度合い。 修正容易性が⾼いほど、変化する要求に柔軟に対応できま す。 コードが🍝
機能追加するには、どこを 触わればいいんだ...
© Findy Inc. 17 試験容易性 - ソフトウェアのテストを、容易かつ効率的に⾏える度合 い。試験容易性が⾼いほど、品質の⾼いソフトウェアを維 持できます。 テストがないので既存の
振る舞いを守れない...
© Findy Inc. 保守性を向上させる取り組み 18
© Findy Inc. 19 モジュール性 - 関⼼事の分離 - 結合度と凝集度 ◦
内部結合、共通結合、外部結合、制御結合、制御結合、スタンプ結合、データ結合 ◦ 偶発的凝集、論理的凝集、時間的凝集、⼿続き的凝集、通信的凝集、情報的凝集、機能的凝集 良いコードとは何か - エンジニア新卒研修 スライド公開 CyberZ Developer https://note.com/cyberz_cto/n/n26f535d6c575#E0aBe
© Findy Inc. 20 再利⽤性 - 汎⽤コンポーネントの作成 - 共通機能の集約 ◦
UIコンポーネント / Utils ... ◦ ※過度な共通化は結合度が⾼くなるので注意 ▪ 2,3箇所で使われるようになってから共通化を考える - 設計パターンとフレームワークの活⽤ ◦ Next.js / Rails / Clean Architecture / デザインパターン...
© Findy Inc. 21 解析容易性 - 明確なコーディング規約 - 適切なコメントとドキュメント -
ログ出⼒の活⽤ - ⼩さなパッチ単位でデプロイ
© Findy Inc. 22 解析容易性 - 「⼩さなパッチ単位でデプロイ」を中⼼にファインディの 事例をNoteで公開しています https://note.com/hamchance/n/n6a30971763e4 https://note.com/hamchance/n/n97c551bab985
https://note.com/hamchance/n/nc2333dd10083
© Findy Inc. 23 修正容易性 - シンプルなコード - テスト容易性を考慮した設計 -
バージョン管理システムの利⽤
© Findy Inc. 24 修正容易性 - 過度な共通化を排除し、低結合にすることで、可読性が⾼ く変更に強いコードへリファクタリング https://speakerdeck.com/ham0215/izikarasinpuruhe-purodakutonocheng-chang-nihe-wasetaakitekutiyanobian-geng
© Findy Inc. 25 試験容易性 - テストケースの⾃動⽣成 - テスト環境の整備 -
単体テストの実施
© Findy Inc. 26 試験容易性 - システムを守るテストコード - PRごとに実⾏できるように、 ⼿間なく実⾏できる環境を構
築するだけではなく、実⾏時 間にこだわる https://tech.findy.co.jp/entry/2024/06/13/111106 https://speakerdeck.com/ham0215/ciha5fen-yi-nei-su-zao-ikai-fa-saikuruwozhi-eruci
© Findy Inc. まとめ 27
© Findy Inc. 28 まとめ - 「コード品質」という⾔葉は曖昧なので、最初に認識を合 わせる ◦ ISO/IEC
25010は体系的にまとめられていて使いやすい ◦ 品質特性などに分解していくと、コード品質の伸びしろ や改善点が⾒つかりやすい - コード品質を向上させていくには⼩さな積み重ねと継続的 な活動が⼤事です!!
© Findy Inc. 29 まとめ - ⽣成AIの活⽤⽂脈でもコード品質は重要になってきそう! - [⽬次] -
既存コードの最適化 ◦ 不要なコードの削除 ◦ 統⼀されたコーディング規約 ◦ コードの設計の⼀意性 - ドキュメンテーションの充実 ◦ docコメントやAPIドキュメント ◦ カスタムインストラクション ◦ プロンプトを記録 - 継続的な改善を可能にする開発⽂化 ◦ テストコードとCI/CDの整備 ◦ Pull requestの粒度 https://tech.findy.co.jp/entry/2025/03/17/070000