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
410
2
Share
コード品質向上で得られる効果と実践的取り組み
2025/03/25 「コード品質向上のノウハウ」の登壇資料
https://form.findy-team.io/event_code-quality_250325
ham
March 25, 2025
More Decks by ham
See All by ham
機能開発を止めないために!運用と開発のバランスを可視化するために使っている指標をご紹介
ham0215
0
52
未来のAI駆動開発をイメージしながらAI開発基盤を整備する
ham0215
1
52
AIと過ごす1日〜全業務フローにAIを組み込む実践ガイド〜
ham0215
0
130
生成AIによる生産性向上〜テック企業やファインディの活用事例〜
ham0215
1
120
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
550
データ駆動経営の道しるべ:プロダクト開発指標の戦略的活用法
ham0215
2
510
開発組織における意思決定の実例〜開発優先度・組織構成・ツール導入〜
ham0215
0
120
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
520
アウトカムを最速で最大化できる開発組織にするために
ham0215
1
240
Other Decks in Technology
See All in Technology
イベントストーミングとKiroの仕様駆動開発で実現する要件の認識合わせプロセス
syobochim
7
1.1k
Terraformモジュールは、なぜ「魔境」化するのか
hayama17
1
160
JEP 522 Deep Dive - G1 GC同期コスト削減によるスループット向上を徹底検証&解説
tabatad
1
640
AIを「創る」と「使う」の循環 — HRテックが実践するリアルなAI組織実装
taketo957
0
680
脅威をエンジニアリングの糧にして:恐怖を乗り越えた先にあったもの / Turn threats into fuel for engineering: what lay beyond overcoming fear
nrslib
1
370
ルールやカスタム機能、どう使う?理想の出力を引き出すために今知りたいIBM Bob 5つの機能
muehara
1
280
『家族アルバム みてね』における インシデント対応との向き合い方 / Approach incident response in Family Album
kohbis
2
290
Spring Boot における AOT Cache 活用テクニックと 起動時間改善事例
ntt_dsol_java
0
200
探して_入れて_作って_使う_Agent_Skills___LT.pdf
peintangos
2
150
BigQuery の Cross-cloud Lakehouse への歩み
phaya72
2
330
Gradle×GitHub_ActionsでCI時間を約50%短縮 ジョブ分割の設計と落とし穴 / Cutting CI Time by ~50% with Gradle and GitHub Actions: Job-Splitting Design and Pitfalls
takatty
0
600
プラットフォームエンジニア ワークショップ/ platform-workshop
databricksjapan
0
170
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Building an army of robots
kneath
306
46k
Believing is Seeing
oripsolob
1
140
Speed Design
sergeychernyshev
33
1.8k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
570
HDC tutorial
michielstock
2
680
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Ethics towards AI in product and experience design
skipperchong
2
300
RailsConf 2023
tenderlove
30
1.5k
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